3 #ifndef DUNE_OVLPISTLSOLVERBACKEND_HH 4 #define DUNE_OVLPISTLSOLVERBACKEND_HH 6 #include <dune/common/deprecated.hh> 7 #include <dune/common/parallel/mpihelper.hh> 9 #include <dune/istl/owneroverlapcopy.hh> 10 #include <dune/istl/solvercategory.hh> 11 #include <dune/istl/operators.hh> 12 #include <dune/istl/solvers.hh> 13 #include <dune/istl/preconditioners.hh> 14 #include <dune/istl/scalarproducts.hh> 15 #include <dune/istl/paamg/amg.hh> 16 #include <dune/istl/paamg/pinfo.hh> 17 #include <dune/istl/io.hh> 18 #include <dune/istl/superlu.hh> 40 template<
class CC,
class M,
class X,
class Y>
42 :
public Dune::AssembledLinearOperator<M,X,Y>
52 enum {
category=Dune::SolverCategory::overlapping};
59 virtual void apply (
const domain_type& x, range_type& y)
const 67 virtual void applyscaleadd (field_type alpha,
const domain_type& x, range_type& y)
const 87 template<
class GFS,
class X>
89 :
public Dune::ScalarProduct<X>
97 enum {
category=Dune::SolverCategory::overlapping};
102 : gfs(gfs_), helper(helper_)
110 virtual field_type
dot (
const X& x,
const X& y)
113 field_type sum = helper.disjointDot(x,y);
116 return gfs.gridView().comm().sum(sum);
122 virtual double norm (
const X& x)
124 return sqrt(static_cast<double>(this->dot(x,x)));
133 template<
class CC,
class GFS,
class P>
135 :
public Dune::Preconditioner<Dune::PDELab::Backend::Vector<GFS,typename P::domain_type::field_type>,
136 Dune::PDELab::Backend::Vector<GFS,typename P::range_type::field_type>>
153 : gfs(gfs_), prec(prec_), cc(cc_), helper(helper_)
173 if (gfs.gridView().comm().size()>1)
174 gfs.gridView().communicate(adddh,Dune::All_All_Interface,Dune::ForwardCommunication);
195 template<
class GFS,
class M,
class X,
class Y>
196 class SuperLUSubdomainSolver :
public Dune::Preconditioner<X,Y>
212 category=Dune::SolverCategory::overlapping
221 SuperLUSubdomainSolver (
const GFS& gfs_,
const M& A_)
228 virtual void pre (X& x, Y& b) {}
233 virtual void apply (X& v,
const Y& d)
235 Dune::InverseOperatorResult stat;
238 if (gfs.gridView().comm().size()>1)
241 gfs.gridView().communicate(adddh,Dune::All_All_Interface,Dune::ForwardCommunication);
248 virtual void post (X& x) {}
252 Dune::SuperLU<ISTLM> solver;
256 template<
class GFS,
class M,
class X,
class Y>
257 class RestrictedSuperLUSubdomainSolver :
public Dune::Preconditioner<X,Y>
259 typedef typename M::BaseT ISTLM;
273 category=Dune::SolverCategory::overlapping
283 RestrictedSuperLUSubdomainSolver (
const GFS& gfs_,
const M& A_,
291 virtual void pre (X& x, Y& b) {}
296 virtual void apply (X& v,
const Y& d)
299 Dune::InverseOperatorResult stat;
302 if (gfs.gridView().comm().size()>1)
304 helper.maskForeignDOFs(
native(v));
306 gfs.gridView().communicate(adddh,Dune::InteriorBorder_All_Interface,Dune::ForwardCommunication);
313 virtual void post (X& x) {}
317 Dune::SuperLU<ISTLM> solver;
322 template<
typename GFS>
327 : gfs(gfs_), helper(gfs_)
335 typename X::ElementType
dot (
const X& x,
const X& y)
const 338 typename X::ElementType sum = helper.disjointDot(x,y);
341 return gfs.gridView().comm().sum(sum);
348 typename Dune::template FieldTraits<typename X::ElementType >::real_type
norm (
const X& x)
const 351 return sqrt(static_cast<double>(this->dot(x,x)));
371 template<
typename GFS,
typename X>
373 :
public ScalarProduct<X>
378 : implementation(implementation_)
381 virtual typename X::BaseT::field_type
dot(
const X& x,
const X& y)
383 return implementation.dot(x,y);
386 virtual typename X::BaseT::field_type
norm (
const X& x)
389 return sqrt(static_cast<double>(this->dot(x,x)));
396 template<
class GFS,
class C,
397 template<
class,
class,
class,
int>
class Preconditioner,
398 template<
class>
class Solver>
412 int steps_=5,
int verbose_=1)
423 template<
class M,
class V,
class W>
424 void apply(M& A, V& z, W& r,
typename Dune::template FieldTraits<typename V::ElementType >::real_type reduction)
432 typedef Preconditioner<
438 SeqPrec seqprec(
native(A),steps,1.0);
440 WPREC wprec(gfs,seqprec,c,this->parallelHelper());
442 if (gfs.gridView().comm().rank()==0) verb=verbose;
443 Solver<V> solver(pop,psp,wprec,reduction,maxiter,verb);
444 Dune::InverseOperatorResult stat;
445 solver.apply(z,r,stat);
446 res.converged = stat.converged;
447 res.iterations = stat.iterations;
448 res.elapsed = stat.elapsed;
449 res.reduction = stat.reduction;
450 res.conv_rate = stat.conv_rate;
461 template<
class GFS,
class C,
462 template<
class>
class Solver>
485 template<
class M,
class V,
class W>
486 void apply(M& A, V& z, W& r,
typename Dune::template FieldTraits<typename V::ElementType >::real_type reduction)
500 SeqPrec seqprec(
native(A),1.0);
502 WPREC wprec(gfs,seqprec,c,this->parallelHelper());
504 if (gfs.gridView().comm().rank()==0) verb=verbose;
505 Solver<V> solver(pop,psp,wprec,reduction,maxiter,verb);
506 Dune::InverseOperatorResult stat;
507 solver.apply(z,r,stat);
508 res.converged = stat.converged;
509 res.iterations = stat.iterations;
510 res.elapsed = stat.elapsed;
511 res.reduction = stat.reduction;
512 res.conv_rate = stat.conv_rate;
523 template<
class GFS,
class C,
524 template<
class>
class Solver>
548 template<
class M,
class V,
class W>
549 void apply(M& A, V& z, W& r,
typename Dune::template FieldTraits<typename V::ElementType >::real_type reduction)
563 SeqPrec seqprec(
native(A),n,1.0);
565 WPREC wprec(gfs,seqprec,c,this->parallelHelper());
567 if (gfs.gridView().comm().rank()==0) verb=verbose;
568 Solver<V> solver(pop,psp,wprec,reduction,maxiter,verb);
569 Dune::InverseOperatorResult stat;
570 solver.apply(z,r,stat);
571 res.converged = stat.converged;
572 res.iterations = stat.iterations;
573 res.elapsed = stat.elapsed;
574 res.reduction = stat.reduction;
575 res.conv_rate = stat.conv_rate;
594 template<
class GFS,
class CC>
608 int steps=5,
int verbose=1)
617 template<
class GFS,
class CC>
638 template<
class GFS,
class CC>
660 template<
class GFS,
class CC>
674 int steps=5,
int verbose=1)
684 template<
class GFS,
class CC>
708 template<
class M,
class V,
class W>
709 void apply(M& A, V& z, W& r,
typename Dune::template FieldTraits<typename V::ElementType >::real_type reduction)
723 SeqPrec seqprec(
native(A),1.0);
725 WPREC wprec(gfs,seqprec,cc,this->parallelHelper());
727 if (gfs.gridView().comm().rank()==0) verb=verbose;
728 RestartedGMResSolver<V> solver(pop,psp,wprec,reduction,restart,maxiter,verb);
729 Dune::InverseOperatorResult stat;
730 solver.apply(z,r,stat);
731 res.converged = stat.converged;
732 res.iterations = stat.iterations;
733 res.elapsed = stat.elapsed;
734 res.reduction = stat.reduction;
735 res.conv_rate = stat.conv_rate;
749 template<
class GFS,
class C,
template<
typename>
class Solver>
773 template<
class M,
class V,
class W>
774 void apply(M& A, V& z, W& r,
typename Dune::template FieldTraits<typename V::ElementType >::real_type reduction)
781 typedef SuperLUSubdomainSolver<GFS,M,V,W> PREC;
784 if (gfs.gridView().comm().rank()==0) verb=verbose;
785 Solver<V> solver(pop,psp,prec,reduction,maxiter,verb);
786 Dune::InverseOperatorResult stat;
787 solver.apply(z,r,stat);
788 res.converged = stat.converged;
789 res.iterations = stat.iterations;
790 res.elapsed = stat.elapsed;
791 res.reduction = stat.reduction;
792 res.conv_rate = stat.conv_rate;
794 std::cout <<
"No superLU support, please install and configure it." << std::endl;
812 template<
class GFS,
class CC>
836 template<
class GFS,
class CC>
850 unsigned maxiter_=5000,
882 typename V::ElementType
norm(
const V& v)
const 886 "ISTLBackend_OVLP_ExplicitDiagonal::norm() should not be " 887 "neccessary, so we skipped the implementation. If you have a " 888 "scenario where you need it, please implement it or report back to " 899 template<
class M,
class V,
class W>
900 void apply(M& A, V& z, W& r,
typename Dune::template FieldTraits<typename W::ElementType >::real_type reduction)
912 if (gfs.gridView().comm().size()>1)
915 gfs.gridView().communicate(copydh,Dune::InteriorBorder_All_Interface,Dune::ForwardCommunication);
917 res.converged =
true;
920 res.reduction =
static_cast<double>(reduction);
921 res.conv_rate =
static_cast<double>(reduction);
929 template<
class GO,
int s,
template<
class,
class,
class,
int>
class Preconditioner,
930 template<
class>
class Solver>
933 typedef typename GO::Traits::TrialGridFunctionSpace GFS;
935 typedef typename GO::Traits::Jacobian M;
937 typedef typename GO::Traits::Domain V;
941 typedef Preconditioner<MatrixType,VectorType,VectorType,1> Smoother;
942 typedef Dune::BlockPreconditioner<VectorType,VectorType,Comm,Smoother> ParSmoother;
943 typedef Dune::OverlappingSchwarzOperator<MatrixType,VectorType,VectorType,Comm> Operator;
945 typedef Preconditioner<MatrixType,VectorType,VectorType,1> ParSmoother;
946 typedef Dune::MatrixAdapter<MatrixType,VectorType,VectorType> Operator;
948 typedef typename Dune::Amg::SmootherTraits<ParSmoother>::Arguments SmootherArgs;
949 typedef Dune::Amg::AMG<Operator,VectorType,ParSmoother,Comm> AMG;
951 typedef typename V::ElementType RF;
962 int verbose_=1,
bool reuse_=
false,
963 bool usesuperlu_=
true)
964 : gfs(gfs_), phelper(gfs,verbose_), maxiter(maxiter_), params(15,2000),
965 verbose(verbose_), reuse(reuse_), firstapply(true),
966 usesuperlu(usesuperlu_)
968 params.setDefaultValuesIsotropic(GFS::Traits::GridViewType::Traits::Grid::dimension);
969 params.setDebugLevel(verbose_);
971 if (gfs.gridView().comm().rank() == 0 && usesuperlu ==
true)
973 std::cout <<
"WARNING: You are using AMG without SuperLU!" 974 <<
" Please consider installing SuperLU," 975 <<
" or set the usesuperlu flag to false" 976 <<
" to suppress this warning." << std::endl;
990 void setparams(Parameters params_) DUNE_DEPRECATED_MSG(
"setparams() is deprecated, use setParameters() instead")
1023 typename V::ElementType
norm (
const V& v)
const 1026 PSP psp(gfs,phelper);
1037 void apply(M& A, V& z, V& r,
typename Dune::template FieldTraits<typename V::ElementType >::real_type reduction)
1040 Comm oocc(gfs.gridView().comm());
1042 typedef Dune::Amg::CoarsenCriterion<Dune::Amg::SymmetricCriterion<MatrixType,
1043 Dune::Amg::FirstDiagonal> > Criterion;
1045 phelper.createIndexSetAndProjectForAMG(A, oocc);
1046 Operator oop(mat, oocc);
1047 Dune::OverlappingSchwarzScalarProduct<VectorType,Comm> sp(oocc);
1050 Dune::SeqScalarProduct<VectorType> sp;
1052 SmootherArgs smootherArgs;
1053 smootherArgs.iterations = 1;
1054 smootherArgs.relaxationFactor = 1;
1055 Criterion criterion(params);
1056 stats.tprepare=watch.elapsed();
1060 if (gfs.gridView().comm().rank()==0) verb=verbose;
1062 if (reuse==
false || firstapply==
true){
1063 amg.reset(
new AMG(oop, criterion, smootherArgs, oocc));
1065 stats.tsetup = watch.elapsed();
1066 stats.levels = amg->maxlevels();
1067 stats.directCoarseLevelSolver=amg->usesDirectCoarseLevelSolver();
1070 Solver<VectorType> solver(oop,sp,*amg,RF(reduction),maxiter,verb);
1071 Dune::InverseOperatorResult stat;
1074 stats.tsolve= watch.elapsed();
1075 res.converged = stat.converged;
1076 res.iterations = stat.iterations;
1077 res.elapsed = stat.elapsed;
1078 res.reduction = stat.reduction;
1079 res.conv_rate = stat.conv_rate;
1100 shared_ptr<AMG> amg;
1113 template<
class GO,
int s=96>
1117 typedef typename GO::Traits::TrialGridFunctionSpace GFS;
1129 int verbose_=1,
bool reuse_=
false,
1130 bool usesuperlu_=
true)
1132 (gfs_, maxiter_, verbose_, reuse_, usesuperlu_)
1142 template<
class GO,
int s=96>
1146 typedef typename GO::Traits::TrialGridFunctionSpace GFS;
1158 int verbose_=1,
bool reuse_=
false,
1159 bool usesuperlu_=
true)
1161 (gfs_, maxiter_, verbose_, reuse_, usesuperlu_)
1171 template<
class GO,
int s=96>
1175 typedef typename GO::Traits::TrialGridFunctionSpace GFS;
1187 int verbose_=1,
bool reuse_=
false,
1188 bool usesuperlu_=
true)
1190 (gfs_, maxiter_, verbose_, reuse_, usesuperlu_)
std::enable_if< std::is_base_of< impl::WrapperBase, T >::value, Native< T > & >::type native(T &t)
Definition: backend/interface.hh:199
Definition: istl/ovlpistlsolverbackend.hh:323
Overlapping parallel BiCGStab solver with SuperLU preconditioner.
Definition: istl/ovlpistlsolverbackend.hh:813
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/ovlpistlsolverbackend.hh:122
ISTLBackend_OVLP_BCGS_SSORk(const GFS &gfs, const CC &cc, unsigned maxiter=5000, int steps=5, int verbose=1)
make a linear solver object
Definition: istl/ovlpistlsolverbackend.hh:607
OverlappingScalarProduct(const GFS &gfs_, const istl::ParallelHelper< GFS > &helper_)
Constructor needs to know the grid function space.
Definition: istl/ovlpistlsolverbackend.hh:101
ISTLBackend_BCGS_AMG_ILU0(const GFS &gfs_, unsigned maxiter_=5000, int verbose_=1, bool reuse_=false, bool usesuperlu_=true)
Constructor.
Definition: istl/ovlpistlsolverbackend.hh:1186
X::ElementType field_type
Definition: istl/ovlpistlsolverbackend.hh:49
Definition: parallelhelper.hh:51
ISTLBackend_CG_AMG_SSOR(const GFS &gfs_, unsigned maxiter_=5000, int verbose_=1, bool reuse_=false, bool usesuperlu_=true)
Constructor.
Definition: istl/ovlpistlsolverbackend.hh:1128
ISTLBackend_OVLP_Base(const GFS &gfs_, const C &c_, unsigned maxiter_=5000, int steps_=5, int verbose_=1)
make a linear solver object
Definition: istl/ovlpistlsolverbackend.hh:411
ISTLBackend_BCGS_AMG_SSOR(const GFS &gfs_, unsigned maxiter_=5000, int verbose_=1, bool reuse_=false, bool usesuperlu_=true)
Constructor.
Definition: istl/ovlpistlsolverbackend.hh:1157
void apply(M &A, V &z, V &r, typename Dune::template FieldTraits< typename V::ElementType >::real_type reduction)
solve the given linear system
Definition: istl/ovlpistlsolverbackend.hh:1037
ISTLBackend_OVLP_ExplicitDiagonal(const GFS &gfs_)
make a linear solver object
Definition: istl/ovlpistlsolverbackend.hh:869
static const unsigned int value
Definition: gridfunctionspace/tags.hh:177
virtual void applyscaleadd(field_type alpha, const domain_type &x, range_type &y) const
apply operator to x, scale and add:
Definition: istl/ovlpistlsolverbackend.hh:67
Definition: istl/ovlpistlsolverbackend.hh:52
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
Definition: istl/ovlpistlsolverbackend.hh:931
Dune::PDELab::Backend::Vector< GFS, typename P::domain_type::field_type > domain_type
The domain type of the preconditioner.
Definition: istl/ovlpistlsolverbackend.hh:140
X::ElementType dot(const X &x, const X &y) const
Dot product of two vectors. It is assumed that the vectors are consistent on the interior+border part...
Definition: istl/ovlpistlsolverbackend.hh:335
Definition: genericdatahandle.hh:685
Definition: istl/ovlpistlsolverbackend.hh:399
OverlappingOperator(const CC &cc_, const M &A)
Definition: istl/ovlpistlsolverbackend.hh:54
OVLPScalarProductImplementation(const GFS &gfs_)
Definition: istl/ovlpistlsolverbackend.hh:326
Definition: genericdatahandle.hh:622
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/ovlpistlsolverbackend.hh:774
Overlapping parallel BiCGStab solver preconditioned with AMG smoothed by SSOR.
Definition: istl/ovlpistlsolverbackend.hh:1143
virtual X::BaseT::field_type dot(const X &x, const X &y)
Definition: istl/ovlpistlsolverbackend.hh:381
ISTLBackend_OVLP_ExplicitDiagonal(const ISTLBackend_OVLP_ExplicitDiagonal &other_)
Definition: istl/ovlpistlsolverbackend.hh:873
Definition: istl/ovlpistlsolverbackend.hh:372
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/ovlpistlsolverbackend.hh:709
ISTLBackend_OVLP_BCGS_SuperLU(const GFS &gfs_, const CC &cc_, unsigned maxiter_=5000, int verbose_=1)
make a linear solver object
Definition: istl/ovlpistlsolverbackend.hh:825
const Parameters & parameters() const
Get the parameters describing the behaviuour of AMG.
Definition: istl/ovlpistlsolverbackend.hh:1002
Overlapping parallel BiCGStab solver with SSOR preconditioner.
Definition: istl/ovlpistlsolverbackend.hh:595
ISTLBackend_AMG(const GFS &gfs_, unsigned maxiter_=5000, int verbose_=1, bool reuse_=false, bool usesuperlu_=true)
Definition: istl/ovlpistlsolverbackend.hh:961
ISTLBackend_OVLP_SuperLU_Base(const GFS &gfs_, const C &c_, unsigned maxiter_=5000, int verbose_=1)
make a linear solver object
Definition: istl/ovlpistlsolverbackend.hh:761
OverlappingWrappedPreconditioner(const GFS &gfs_, P &prec_, const CC &cc_, const istl::ParallelHelper< GFS > &helper_)
Constructor.
Definition: istl/ovlpistlsolverbackend.hh:151
Definition: adaptivity.hh:27
Dune::PDELab::Backend::Vector< GFS, typename P::range_type::field_type > range_type
The range type of the preconditioner.
Definition: istl/ovlpistlsolverbackend.hh:142
Definition: istl/ovlpistlsolverbackend.hh:88
Overlapping parallel CG solver with SuperLU preconditioner.
Definition: istl/ovlpistlsolverbackend.hh:837
M matrix_type
export types
Definition: istl/ovlpistlsolverbackend.hh:46
Dune::Amg::SequentialInformation type
Definition: parallelhelper.hh:415
void set_constrained_dofs(const CG &cg, typename XG::ElementType x, XG &xg)
construct constraints from given boundary condition function
Definition: constraints.hh:798
void setReuse(bool reuse_)
Set whether the AMG should be reused again during call to apply().
Definition: istl/ovlpistlsolverbackend.hh:1008
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/ovlpistlsolverbackend.hh:424
Definition: istl/ovlpistlsolverbackend.hh:750
void setparams(Parameters params_)
Definition: istl/ovlpistlsolverbackend.hh:990
ISTLBackend_OVLP_BCGS_ILUn(const GFS &gfs, const CC &cc, int n=1, unsigned maxiter=5000, int verbose=1)
make a linear solver object
Definition: istl/ovlpistlsolverbackend.hh:651
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/ovlpistlsolverbackend.hh:549
bool getReuse() const
Return whether the AMG is reused during call to apply()
Definition: istl/ovlpistlsolverbackend.hh:1014
ISTLBackend_OVLP_GMRES_ILU0(const GFS &gfs_, const CC &cc_, unsigned maxiter_=5000, int verbose_=1, int restart_=20)
make a linear solver object
Definition: istl/ovlpistlsolverbackend.hh:696
ISTLBackend_OVLP_ILUn_Base(const GFS &gfs_, const C &c_, int n_=1, unsigned maxiter_=5000, int verbose_=1)
make a linear solver object
Definition: istl/ovlpistlsolverbackend.hh:537
X domain_type
export types
Definition: istl/ovlpistlsolverbackend.hh:93
virtual void apply(const domain_type &x, range_type &y) const
apply operator to x:
Definition: istl/ovlpistlsolverbackend.hh:59
Dune::Amg::Parameters Parameters
Parameters object to customize matrix hierachy building.
Definition: istl/ovlpistlsolverbackend.hh:958
const istl::ParallelHelper< GFS > & parallelHelper() const
Definition: istl/ovlpistlsolverbackend.hh:354
V::ElementType norm(const V &v) const
compute global norm of a vector
Definition: istl/ovlpistlsolverbackend.hh:1023
X domain_type
Definition: istl/ovlpistlsolverbackend.hh:47
Class providing some statistics of the AMG solver.
Definition: istl/seqistlsolverbackend.hh:541
Definition: istl/ovlpistlsolverbackend.hh:41
virtual X::BaseT::field_type norm(const X &x)
Definition: istl/ovlpistlsolverbackend.hh:386
Overlapping parallel BiCGStab solver preconditioned with AMG smoothed by ILU0.
Definition: istl/ovlpistlsolverbackend.hh:1172
Overlapping parallel BiCGStab solver with ILU0 preconditioner.
Definition: istl/ovlpistlsolverbackend.hh:639
const ISTLAMGStatistics & statistics() const
Get statistics of the AMG solver (no of levels, timings).
Definition: istl/ovlpistlsolverbackend.hh:1086
V::ElementType norm(const V &v) const
compute global norm of a vector
Definition: istl/ovlpistlsolverbackend.hh:882
Dune::template FieldTraits< typename X::ElementType >::real_type norm(const X &x) const
Norm of a right-hand side vector. The vector must be consistent on the interior+border partition...
Definition: istl/ovlpistlsolverbackend.hh:348
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/ovlpistlsolverbackend.hh:110
Overlapping parallel CGS solver with SSOR preconditioner.
Definition: istl/ovlpistlsolverbackend.hh:661
virtual const M & getmat() const
get matrix via *
Definition: istl/ovlpistlsolverbackend.hh:75
virtual void apply(domain_type &v, const range_type &d)
Apply the preconditioner.
Definition: istl/ovlpistlsolverbackend.hh:167
typename impl::BackendVectorSelector< GridFunctionSpace, FieldType >::Type Vector
alias of the return type of BackendVectorSelector
Definition: backend/interface.hh:113
Definition: istl/ovlpistlsolverbackend.hh:525
ISTLBackend_OVLP_CG_SuperLU(const GFS &gfs_, const CC &cc_, unsigned maxiter_=5000, int verbose_=1)
make a linear solver object
Definition: istl/ovlpistlsolverbackend.hh:849
OVLPScalarProduct(const OVLPScalarProductImplementation< GFS > &implementation_)
Definition: istl/ovlpistlsolverbackend.hh:377
Overlapping parallel restarted GMRes solver with ILU0 preconditioner.
Definition: istl/ovlpistlsolverbackend.hh:685
const std::string s
Definition: function.hh:1102
istl::ParallelHelper< GFS > & parallelHelper()
Definition: istl/ovlpistlsolverbackend.hh:360
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/ovlpistlsolverbackend.hh:900
void setParameters(const Parameters ¶ms_)
set AMG parameters
Definition: istl/ovlpistlsolverbackend.hh:985
ISTLBackend_OVLP_CG_SSORk(const GFS &gfs, const CC &cc, unsigned maxiter=5000, int steps=5, int verbose=1)
make a linear solver object
Definition: istl/ovlpistlsolverbackend.hh:673
Overlapping parallel BiCGStab solver with ILU0 preconditioner.
Definition: istl/ovlpistlsolverbackend.hh:618
ISTLBackend_OVLP_BCGS_ILU0(const GFS &gfs, const CC &cc, unsigned maxiter=5000, int verbose=1)
make a linear solver object
Definition: istl/ovlpistlsolverbackend.hh:629
Overlapping parallel conjugate gradient solver preconditioned with AMG smoothed by SSOR...
Definition: istl/ovlpistlsolverbackend.hh:1114
ISTLBackend_OVLP_ILU0_Base(const GFS &gfs_, const C &c_, unsigned maxiter_=5000, int verbose_=1)
make a linear solver object
Definition: istl/ovlpistlsolverbackend.hh:474
virtual void post(domain_type &x)
Clean up.
Definition: istl/ovlpistlsolverbackend.hh:180
Y range_type
Definition: istl/ovlpistlsolverbackend.hh:48
X::ElementType field_type
Definition: istl/ovlpistlsolverbackend.hh:94
virtual void pre(domain_type &x, range_type &b)
Prepare the preconditioner.
Definition: istl/ovlpistlsolverbackend.hh:159
Definition: istl/ovlpistlsolverbackend.hh:463
Definition: istl/ovlpistlsolverbackend.hh:134
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/ovlpistlsolverbackend.hh:486
Solver to be used for explicit time-steppers with (block-)diagonal mass matrix.
Definition: istl/ovlpistlsolverbackend.hh:861