3 #ifndef DUNE_NOVLPISTLSOLVERBACKEND_HH 4 #define DUNE_NOVLPISTLSOLVERBACKEND_HH 8 #include <dune/common/deprecated.hh> 9 #include <dune/common/parallel/mpihelper.hh> 11 #include <dune/grid/common/gridenums.hh> 13 #include <dune/istl/io.hh> 14 #include <dune/istl/operators.hh> 15 #include <dune/istl/owneroverlapcopy.hh> 16 #include <dune/istl/paamg/amg.hh> 17 #include <dune/istl/paamg/pinfo.hh> 18 #include <dune/istl/preconditioners.hh> 19 #include <dune/istl/scalarproducts.hh> 20 #include <dune/istl/solvercategory.hh> 21 #include <dune/istl/solvers.hh> 22 #include <dune/istl/superlu.hh> 52 template<
typename GFS,
typename M,
typename X,
typename Y>
54 :
public Dune::AssembledLinearOperator<M,X,Y>
67 enum {
category=Dune::SolverCategory::nonoverlapping};
90 virtual void apply (
const X& x, Y& y)
const 98 if (gfs.gridView().comm().size()>1)
99 gfs.gridView().communicate(adddh,Dune::InteriorBorder_InteriorBorder_Interface,Dune::ForwardCommunication);
116 if (gfs.gridView().comm().size()>1)
117 gfs.gridView().communicate(adddh,Dune::InteriorBorder_InteriorBorder_Interface,Dune::ForwardCommunication);
132 template<
class GFS,
class X>
141 enum {
category=Dune::SolverCategory::nonoverlapping};
146 : gfs(gfs_), helper(helper_)
153 virtual field_type
dot (
const X& x,
const X& y)
156 field_type sum = helper.disjointDot(x,y);
159 return gfs.gridView().comm().sum(sum);
165 virtual double norm (
const X& x)
167 return sqrt(static_cast<double>(this->dot(x,x)));
175 if (gfs.gridView().comm().size()>1)
176 gfs.gridView().communicate(adddh,Dune::InteriorBorder_InteriorBorder_Interface,Dune::ForwardCommunication);
185 template<
class GFS,
class X,
class Y>
204 : gfs(gfs_), helper(helper_)
211 virtual void pre (X& x, Y& b) {}
216 virtual void apply (X& v,
const Y& d)
244 template<
typename A,
typename X,
typename Y>
246 :
public Dune::Preconditioner<X,Y>
251 Diagonal _inverse_diagonal;
286 template<
typename GFS>
288 : _inverse_diagonal(m)
292 gfs.gridView().communicate(addDH,
293 InteriorBorder_InteriorBorder_Interface,
294 ForwardCommunication);
297 _inverse_diagonal.
invert();
302 virtual void pre (X& x, Y& b) {}
310 virtual void apply (X& v,
const Y& d)
312 _inverse_diagonal.
mv(d,v);
336 unsigned maxiter_=5000,
338 : gfs(gfs_), phelper(gfs,verbose_), maxiter(maxiter_), verbose(verbose_)
346 typename V::ElementType
norm (
const V& v)
const 350 PSP psp(gfs,phelper);
351 psp.make_consistent(x);
362 template<
class M,
class V,
class W>
363 void apply(M& A, V& z, W& r,
typename Dune::template FieldTraits<typename V::ElementType >::real_type reduction)
368 PSP psp(gfs,phelper);
370 PRICH prich(gfs,phelper);
372 if (gfs.gridView().comm().rank()==0) verb=verbose;
373 Dune::CGSolver<V> solver(pop,psp,prich,reduction,maxiter,verb);
374 Dune::InverseOperatorResult stat;
375 solver.apply(z,r,stat);
376 res.converged = stat.converged;
377 res.iterations = stat.iterations;
378 res.elapsed = stat.elapsed;
379 res.reduction = stat.reduction;
380 res.conv_rate = stat.conv_rate;
417 unsigned maxiter_ = 5000,
419 gfs(gfs_), phelper(gfs,verbose_), maxiter(maxiter_), verbose(verbose_)
429 typename V::ElementType
norm (
const V& v)
const 433 PSP psp(gfs,phelper);
434 psp.make_consistent(x);
451 template<
class M,
class V,
class W>
452 void apply(M& A, V& z, W& r,
typename Dune::template FieldTraits<typename V::ElementType >::real_type reduction)
457 PSP psp(gfs,phelper);
463 if (gfs.gridView().comm().rank()==0) verb=verbose;
464 CGSolver<V> solver(pop,psp,ppre,reduction,maxiter,verb);
465 InverseOperatorResult stat;
466 solver.apply(z,r,stat);
493 : gfs(gfs_), phelper(gfs,verbose_), maxiter(maxiter_), verbose(verbose_)
501 typename V::ElementType
norm (
const V& v)
const 505 PSP psp(gfs,phelper);
506 psp.make_consistent(x);
517 template<
class M,
class V,
class W>
518 void apply(M& A, V& z, W& r,
typename Dune::template FieldTraits<typename V::ElementType >::real_type reduction)
523 PSP psp(gfs,phelper);
525 PRICH prich(gfs,phelper);
527 if (gfs.gridView().comm().rank()==0) verb=verbose;
528 Dune::BiCGSTABSolver<V> solver(pop,psp,prich,reduction,maxiter,verb);
529 Dune::InverseOperatorResult stat;
530 solver.apply(z,r,stat);
531 res.converged = stat.converged;
532 res.iterations = stat.iterations;
533 res.elapsed = stat.elapsed;
534 res.reduction = stat.reduction;
535 res.conv_rate = stat.conv_rate;
567 : gfs(gfs_), phelper(gfs,verbose_), maxiter(maxiter_), verbose(verbose_)
575 typename V::ElementType
norm (
const V& v)
const 579 PSP psp(gfs,phelper);
580 psp.make_consistent(x);
591 template<
class M,
class V,
class W>
592 void apply(M& A, V& z, W& r,
typename Dune::template FieldTraits<typename V::ElementType >::real_type reduction)
597 PSP psp(gfs,phelper);
603 if (gfs.gridView().comm().rank()==0) verb=verbose;
604 Dune::BiCGSTABSolver<V> solver(pop,psp,ppre,reduction,maxiter,verb);
605 Dune::InverseOperatorResult stat;
606 solver.apply(z,r,stat);
607 res.converged = stat.converged;
608 res.iterations = stat.iterations;
609 res.elapsed = stat.elapsed;
610 res.reduction = stat.reduction;
611 res.conv_rate = stat.conv_rate;
629 template<
typename GFS>
645 : gfs(gfs_), phelper(gfs)
653 typename V::ElementType
norm (
const V& v)
const 657 PSP psp(gfs,phelper);
658 psp.make_consistent(x);
669 template<
class M,
class V,
class W>
670 void apply(M& A, V& z, W& r,
typename Dune::template FieldTraits<typename W::ElementType >::real_type reduction)
672 Dune::SeqJac<M,V,W> jac(A,1,1.0);
676 if (gfs.gridView().comm().size()>1)
679 gfs.gridView().communicate(adddh,Dune::InteriorBorder_InteriorBorder_Interface,Dune::ForwardCommunication);
698 template<
class,
class,
class,
int>
class Preconditioner,
699 template<
class>
class Solver>
702 typedef typename GO::Traits::TrialGridFunctionSpace GFS;
714 : _grid_operator(grid_operator)
715 , gfs(grid_operator.trialGridFunctionSpace())
716 , phelper(gfs,verbose_)
726 template<
class Vector>
731 PSP psp(gfs,phelper);
732 psp.make_consistent(x);
743 template<
class M,
class V,
class W>
744 void apply(M& A, V& z, W& r,
typename V::ElementType reduction)
751 _grid_operator.make_consistent(A);
752 Comm oocc(gfs.gridView().comm(),Dune::SolverCategory::nonoverlapping);
753 phelper.createIndexSetAndProjectForAMG(mat, oocc);
754 typedef Preconditioner<MatrixType,VectorType,VectorType,1> Smoother;
755 Smoother smoother(mat, steps, 1.0);
756 typedef Dune::NonoverlappingSchwarzScalarProduct<VectorType,Comm> PSP;
758 typedef Dune::NonoverlappingSchwarzOperator<MatrixType,VectorType,VectorType,Comm> Operator;
759 Operator oop(mat,oocc);
760 typedef Dune::NonoverlappingBlockPreconditioner<Comm, Smoother> ParSmoother;
761 ParSmoother parsmoother(smoother, oocc);
763 typedef Preconditioner<MatrixType,VectorType,VectorType,1> ParSmoother;
764 ParSmoother parsmoother(mat, steps, 1.0);
765 typedef Dune::SeqScalarProduct<VectorType> PSP;
767 typedef Dune::MatrixAdapter<MatrixType,VectorType,VectorType> Operator;
771 if (gfs.gridView().comm().rank()==0) verb=verbose;
772 Solver<VectorType> solver(oop,psp,parsmoother,reduction,maxiter,verb);
773 Dune::InverseOperatorResult stat;
775 if (gfs.gridView().comm().size()>1){
777 gfs.gridView().communicate(adddh,
778 Dune::InteriorBorder_InteriorBorder_Interface,
779 Dune::ForwardCommunication);
782 solver.apply(z,r,stat);
783 res.converged = stat.converged;
784 res.iterations = stat.iterations;
785 res.elapsed = stat.elapsed;
786 res.reduction = stat.reduction;
787 res.conv_rate = stat.conv_rate;
797 const GO& _grid_operator;
834 int steps_=5,
int verbose_=1)
856 int steps_=5,
int verbose_=1)
863 template<
class GO,
int s,
template<
class,
class,
class,
int>
class Preconditioner,
864 template<
class>
class Solver>
867 typedef typename GO::Traits::TrialGridFunctionSpace GFS;
869 typedef typename GO::Traits::Jacobian M;
871 typedef typename GO::Traits::Domain V;
875 typedef Preconditioner<MatrixType,VectorType,VectorType,1> Smoother;
876 typedef Dune::NonoverlappingBlockPreconditioner<Comm,Smoother> ParSmoother;
877 typedef Dune::NonoverlappingSchwarzOperator<MatrixType,VectorType,VectorType,Comm> Operator;
879 typedef Preconditioner<MatrixType,VectorType,VectorType,1> ParSmoother;
880 typedef Dune::MatrixAdapter<MatrixType,VectorType,VectorType> Operator;
882 typedef typename Dune::Amg::SmootherTraits<ParSmoother>::Arguments SmootherArgs;
883 typedef Dune::Amg::AMG<Operator,VectorType,ParSmoother,Comm> AMG;
884 typedef Dune::Amg::Parameters Parameters;
888 int verbose_=1,
bool reuse_=
false,
889 bool usesuperlu_=
true)
890 : _grid_operator(grid_operator)
891 , gfs(grid_operator.trialGridFunctionSpace())
892 , phelper(gfs,verbose_)
894 , params(15,2000,1.2,1.6,
Dune::Amg::atOnceAccu)
898 , usesuperlu(usesuperlu_)
900 params.setDefaultValuesIsotropic(GFS::Traits::GridViewType::Traits::Grid::dimension);
901 params.setDebugLevel(verbose_);
903 if (phelper.rank() == 0 && usesuperlu ==
true)
905 std::cout <<
"WARNING: You are using AMG without SuperLU!" 906 <<
" Please consider installing SuperLU," 907 <<
" or set the usesuperlu flag to false" 908 <<
" to suppress this warning." << std::endl;
922 void setparams(Parameters params_) DUNE_DEPRECATED_MSG(
"setparams() is deprecated, use setParameters() instead")
943 typename V::ElementType
norm (
const V& v)
const 947 PSP psp(gfs,phelper);
948 psp.make_consistent(x);
952 void apply(M& A, V& z, V& r,
typename Dune::template FieldTraits<typename V::ElementType >::real_type reduction)
956 typedef Dune::Amg::CoarsenCriterion<Dune::Amg::SymmetricCriterion<MatrixType,
957 Dune::Amg::FirstDiagonal> > Criterion;
959 Comm oocc(gfs.gridView().comm(),Dune::SolverCategory::nonoverlapping);
960 _grid_operator.make_consistent(A);
961 phelper.createIndexSetAndProjectForAMG(A, oocc);
962 Dune::NonoverlappingSchwarzScalarProduct<VectorType,Comm> sp(oocc);
963 Operator oop(mat, oocc);
965 Comm oocc(gfs.gridView().comm());
967 Dune::SeqScalarProduct<VectorType> sp;
969 SmootherArgs smootherArgs;
970 smootherArgs.iterations = 1;
971 smootherArgs.relaxationFactor = 1;
973 Criterion criterion(params);
974 stats.tprepare=watch.elapsed();
978 if (gfs.gridView().comm().rank()==0) verb=verbose;
980 if (reuse==
false || firstapply==
true){
981 amg.reset(
new AMG(oop, criterion, smootherArgs, oocc));
983 stats.tsetup = watch.elapsed();
984 stats.levels = amg->maxlevels();
985 stats.directCoarseLevelSolver=amg->usesDirectCoarseLevelSolver();
988 Dune::InverseOperatorResult stat;
990 if (gfs.gridView().comm().size()>1) {
992 gfs.gridView().communicate(adddh,
993 Dune::InteriorBorder_InteriorBorder_Interface,
994 Dune::ForwardCommunication);
997 Solver<VectorType> solver(oop,sp,*amg,reduction,maxiter,verb);
999 stats.tsolve= watch.elapsed();
1000 res.converged = stat.converged;
1001 res.iterations = stat.iterations;
1002 res.elapsed = stat.elapsed;
1003 res.reduction = stat.reduction;
1004 res.conv_rate = stat.conv_rate;
1017 const GO& _grid_operator;
1026 std::shared_ptr<AMG> amg;
1045 template<
class GO,
int s=96>
1052 int verbose_=1,
bool reuse_=
false,
1053 bool usesuperlu_=
true)
1070 template<
class GO,
int s=96>
1077 int verbose_=1,
bool reuse_=
false,
1078 bool usesuperlu_=
true)
1095 template<
class GO,
int s=96>
1102 int verbose_=1,
bool reuse_=
false,
1103 bool usesuperlu_=
true)
std::enable_if< std::is_base_of< impl::WrapperBase, T >::value, Native< T > & >::type native(T &t)
Definition: backend/interface.hh:199
void make_consistent(X &x) const
make additive vector consistent
Definition: istl/novlpistlsolverbackend.hh:172
virtual void applyscaleadd(field_type alpha, const X &x, Y &y) const
apply operator to x, scale and add:
Definition: istl/novlpistlsolverbackend.hh:108
NonoverlappingScalarProduct(const GFS &gfs_, const istl::ParallelHelper< GFS > &helper_)
Constructor needs to know the grid function space.
Definition: istl/novlpistlsolverbackend.hh:145
Backend::Native< X > domain_type
export type of vectors the matrix is applied to
Definition: istl/novlpistlsolverbackend.hh:60
NonoverlappingJacobi(const GFS &gfs, const A &m)
Constructor.
Definition: istl/novlpistlsolverbackend.hh:287
ISTLBackend_NOVLP_CG_SSORk(const GO &grid_operator, unsigned maxiter_=5000, int steps_=5, int verbose_=1)
make a linear solver object
Definition: istl/novlpistlsolverbackend.hh:855
V::ElementType norm(const V &v) const
compute global norm of a vector
Definition: istl/novlpistlsolverbackend.hh:943
virtual const M & getmat() const
extract the matrix
Definition: istl/novlpistlsolverbackend.hh:121
ISTLBackend_NOVLP_CG_NOPREC(const GFS &gfs_, unsigned maxiter_=5000, int verbose_=1)
make a linear solver object
Definition: istl/novlpistlsolverbackend.hh:335
parallel non-overlapping Jacobi preconditioner
Definition: istl/novlpistlsolverbackend.hh:245
Nonoverlapping parallel BiCGSTAB solver preconditioned by block SSOR.
Definition: istl/novlpistlsolverbackend.hh:821
virtual void apply(const X &x, Y &y) const
apply operator
Definition: istl/novlpistlsolverbackend.hh:90
const LinearSolverResult< double > & result() const
Return access to result data.
Definition: istl/novlpistlsolverbackend.hh:475
Definition: parallelhelper.hh:45
virtual field_type dot(const X &x, const X &y)
Dot product of two vectors. It is assumed that the vectors are consistent on the interior+border part...
Definition: istl/novlpistlsolverbackend.hh:153
ISTLBackend_NOVLP_CG_AMG_SSOR(const GO &grid_operator, unsigned maxiter_=5000, int verbose_=1, bool reuse_=false, bool usesuperlu_=true)
Definition: istl/novlpistlsolverbackend.hh:1051
virtual double norm(const X &x)
Norm of a right-hand side vector. The vector must be consistent on the interior+border partition...
Definition: istl/novlpistlsolverbackend.hh:165
typename native_type< T >::type Native
Alias of the native container type associated with T or T itself if it is not a backend wrapper...
Definition: backend/interface.hh:183
Nonoverlapping parallel CG solver without preconditioner.
Definition: istl/novlpistlsolverbackend.hh:324
X domain_type
The domain type of the preconditioner.
Definition: istl/novlpistlsolverbackend.hh:190
void apply(M &A, V &z, W &r, typename Dune::template FieldTraits< typename V::ElementType >::real_type reduction)
solve the given linear system
Definition: istl/novlpistlsolverbackend.hh:518
void mv(const X &x, Y &y) const
Definition: blockmatrixdiagonal.hh:239
unsigned int iterations
Definition: solver.hh:33
virtual void pre(X &x, Y &b)
Prepare the preconditioner.
Definition: istl/novlpistlsolverbackend.hh:211
Nonoverlapping parallel LoopSolver preconditioned with AMG smoothed by SSOR.
Definition: istl/novlpistlsolverbackend.hh:1096
Definition: genericdatahandle.hh:622
Backend::Native< M > matrix_type
export type of matrix
Definition: istl/novlpistlsolverbackend.hh:58
double elapsed
Definition: solver.hh:34
V::ElementType norm(const V &v) const
compute global norm of a vector
Definition: istl/novlpistlsolverbackend.hh:429
ISTLBackend_NOVLP_BCGS_SSORk(const GO &grid_operator, unsigned maxiter_=5000, int steps_=5, int verbose_=1)
make a linear solver object
Definition: istl/novlpistlsolverbackend.hh:833
ISTLBackend_AMG_NOVLP(const GO &grid_operator, unsigned maxiter_=5000, int verbose_=1, bool reuse_=false, bool usesuperlu_=true)
Definition: istl/novlpistlsolverbackend.hh:887
const Dune::PDELab::LinearSolverResult< double > & result() const
Return access to result data.
Definition: istl/novlpistlsolverbackend.hh:384
Definition: adaptivity.hh:27
Nonoverlapping parallel BiCGStab solver without preconditioner.
Definition: istl/novlpistlsolverbackend.hh:481
virtual void post(X &x)
Clean up.
Definition: istl/novlpistlsolverbackend.hh:316
X::ElementType field_type
The field type of the preconditioner.
Definition: istl/novlpistlsolverbackend.hh:267
Definition: istl/novlpistlsolverbackend.hh:186
void apply(M &A, V &z, W &r, typename Dune::template FieldTraits< typename V::ElementType >::real_type reduction)
solve the given linear system
Definition: istl/novlpistlsolverbackend.hh:363
Definition: blockmatrixdiagonal.hh:219
Vector::ElementType norm(const Vector &v) const
Compute global norm of a vector.
Definition: istl/novlpistlsolverbackend.hh:727
bool converged
Definition: solver.hh:32
Dune::Amg::SequentialInformation type
Definition: parallelhelper.hh:409
NonoverlappingRichardson(const GFS &gfs_, const istl::ParallelHelper< GFS > &helper_)
Constructor.
Definition: istl/novlpistlsolverbackend.hh:203
void setparams(Parameters params_)
Definition: istl/novlpistlsolverbackend.hh:922
Definition: istl/novlpistlsolverbackend.hh:67
Solver to be used for explicit time-steppers with (block-)diagonal mass matrix.
Definition: istl/novlpistlsolverbackend.hh:630
virtual void apply(X &v, const Y &d)
Apply the precondioner.
Definition: istl/novlpistlsolverbackend.hh:310
const Dune::PDELab::LinearSolverResult< double > & result() const
Return access to result data.
Definition: istl/novlpistlsolverbackend.hh:615
const Dune::PDELab::LinearSolverResult< double > & result() const
Return access to result data.
Definition: istl/novlpistlsolverbackend.hh:791
V::ElementType norm(const V &v) const
compute global norm of a vector
Definition: istl/novlpistlsolverbackend.hh:346
const Dune::PDELab::LinearSolverResult< double > & result() const
Return access to result data.
Definition: istl/novlpistlsolverbackend.hh:689
Backend::Native< Y > range_type
export type of result vectors
Definition: istl/novlpistlsolverbackend.hh:62
ISTLBackend_NOVLP_ExplicitDiagonal(const GFS &gfs_)
make a linear solver object
Definition: istl/novlpistlsolverbackend.hh:644
Nonoverlapping parallel CG solver with Jacobi preconditioner.
Definition: istl/novlpistlsolverbackend.hh:399
Class providing some statistics of the AMG solver.
Definition: istl/seqistlsolverbackend.hh:541
ISTLBackend_NOVLP_CG_Jacobi(const GFS &gfs_, unsigned maxiter_=5000, int verbose_=1)
make a linear solver object
Definition: istl/novlpistlsolverbackend.hh:416
X domain_type
The domain type of the operator.
Definition: istl/novlpistlsolverbackend.hh:259
virtual void post(X &x)
Clean up.
Definition: istl/novlpistlsolverbackend.hh:224
void invert()
Definition: blockmatrixdiagonal.hh:233
X::ElementType field_type
Definition: istl/novlpistlsolverbackend.hh:138
RFType reduction
Definition: solver.hh:35
void setParameters(const Parameters ¶ms_)
set AMG parameters
Definition: istl/novlpistlsolverbackend.hh:917
Definition: blockmatrixdiagonal.hh:214
Y range_type
The range type of the operator.
Definition: istl/novlpistlsolverbackend.hh:265
V::ElementType norm(const V &v) const
compute global norm of a vector
Definition: istl/novlpistlsolverbackend.hh:575
Nonoverlapping parallel BiCGStab solver with Jacobi preconditioner.
Definition: istl/novlpistlsolverbackend.hh:555
void apply(M &A, V &z, W &r, typename Dune::template FieldTraits< typename W::ElementType >::real_type reduction)
solve the given linear system
Definition: istl/novlpistlsolverbackend.hh:670
const ISTLAMGStatistics & statistics() const
Get statistics of the AMG solver (no of levels, timings).
Definition: istl/novlpistlsolverbackend.hh:1011
Definition: istl/novlpistlsolverbackend.hh:700
X::ElementType field_type
The field type of the preconditioner.
Definition: istl/novlpistlsolverbackend.hh:194
X domain_type
export types
Definition: istl/novlpistlsolverbackend.hh:137
virtual void pre(X &x, Y &b)
Prepare the preconditioner.
Definition: istl/novlpistlsolverbackend.hh:302
Y range_type
The range type of the preconditioner.
Definition: istl/novlpistlsolverbackend.hh:192
Operator for the non-overlapping parallel case.
Definition: istl/novlpistlsolverbackend.hh:53
Nonoverlapping parallel CG solver preconditioned with AMG smoothed by SSOR.
Definition: istl/novlpistlsolverbackend.hh:1046
typename impl::BackendVectorSelector< GridFunctionSpace, FieldType >::Type Vector
alias of the return type of BackendVectorSelector
Definition: backend/interface.hh:113
X::field_type field_type
export type of the entries for x
Definition: istl/novlpistlsolverbackend.hh:64
const Parameters & parameters() const
Get the parameters describing the behaviuour of AMG.
Definition: istl/novlpistlsolverbackend.hh:934
const std::string s
Definition: function.hh:1102
ISTLBackend_NOVLP_BASE_PREC(const GO &grid_operator, unsigned maxiter_=5000, unsigned steps_=5, int verbose_=1)
Constructor.
Definition: istl/novlpistlsolverbackend.hh:713
Nonoverlapping parallel CG solver preconditioned by block SSOR.
Definition: istl/novlpistlsolverbackend.hh:843
void apply(M &A, V &z, W &r, typename V::ElementType reduction)
Solve the given linear system.
Definition: istl/novlpistlsolverbackend.hh:744
void apply(M &A, V &z, V &r, typename Dune::template FieldTraits< typename V::ElementType >::real_type reduction)
Definition: istl/novlpistlsolverbackend.hh:952
ISTLBackend_NOVLP_BCGS_Jacobi(const GFS &gfs_, unsigned maxiter_=5000, int verbose_=1)
make a linear solver object
Definition: istl/novlpistlsolverbackend.hh:566
V::ElementType norm(const V &v) const
compute global norm of a vector
Definition: istl/novlpistlsolverbackend.hh:501
ISTLBackend_NOVLP_BCGS_NOPREC(const GFS &gfs_, unsigned maxiter_=5000, int verbose_=1)
make a linear solver object
Definition: istl/novlpistlsolverbackend.hh:492
Nonoverlapping parallel BiCGStab solver preconditioned with AMG smoothed by SSOR. ...
Definition: istl/novlpistlsolverbackend.hh:1071
NonoverlappingOperator(const GFS &gfs_, const M &A)
Construct a non-overlapping operator.
Definition: istl/novlpistlsolverbackend.hh:80
virtual void apply(X &v, const Y &d)
Apply the precondioner.
Definition: istl/novlpistlsolverbackend.hh:216
RFType conv_rate
Definition: solver.hh:36
const Dune::PDELab::LinearSolverResult< double > & result() const
Return access to result data.
Definition: istl/novlpistlsolverbackend.hh:539
ISTLBackend_NOVLP_BCGS_AMG_SSOR(const GO &grid_operator, unsigned maxiter_=5000, int verbose_=1, bool reuse_=false, bool usesuperlu_=true)
Definition: istl/novlpistlsolverbackend.hh:1076
void apply(M &A, V &z, W &r, typename Dune::template FieldTraits< typename V::ElementType >::real_type reduction)
solve the given linear system
Definition: istl/novlpistlsolverbackend.hh:592
V::ElementType norm(const V &v) const
compute global norm of a vector
Definition: istl/novlpistlsolverbackend.hh:653
ISTLBackend_NOVLP_LS_AMG_SSOR(const GO &grid_operator, unsigned maxiter_=5000, int verbose_=1, bool reuse_=false, bool usesuperlu_=true)
Definition: istl/novlpistlsolverbackend.hh:1101
Definition: istl/novlpistlsolverbackend.hh:865
void apply(M &A, V &z, W &r, typename Dune::template FieldTraits< typename V::ElementType >::real_type reduction)
solve the given linear system
Definition: istl/novlpistlsolverbackend.hh:452
Definition: istl/novlpistlsolverbackend.hh:133