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>
53 template<
typename GFS,
typename M,
typename X,
typename Y>
55 :
public Dune::AssembledLinearOperator<M,X,Y>
68 enum {
category=Dune::SolverCategory::nonoverlapping};
91 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);
115 if (gfs.gridView().comm().size()>1)
116 gfs.gridView().communicate(adddh,Dune::InteriorBorder_InteriorBorder_Interface,Dune::ForwardCommunication);
131 template<
class GFS,
class X>
140 enum {
category=Dune::SolverCategory::nonoverlapping};
145 : gfs(gfs_), helper(helper_)
158 return gfs.gridView().comm().sum(sum);
164 virtual double norm (
const X& x)
166 return sqrt(static_cast<double>(this->
dot(x,x)));
174 if (gfs.gridView().comm().size()>1)
175 gfs.gridView().communicate(adddh,Dune::InteriorBorder_InteriorBorder_Interface,Dune::ForwardCommunication);
184 template<
class GFS,
class X,
class Y>
203 : gfs(gfs_), helper(helper_)
210 virtual void pre (X& x, Y& b) {}
215 virtual void apply (X& v,
const Y& d)
243 template<
typename A,
typename X,
typename Y>
245 :
public Dune::Preconditioner<X,Y>
285 template<
typename GFS>
287 : _inverse_diagonal(m)
291 gfs.gridView().communicate(addDH,
292 InteriorBorder_InteriorBorder_Interface,
293 ForwardCommunication);
296 _inverse_diagonal.
invert();
301 virtual void pre (X& x, Y& b) {}
309 virtual void apply (X& v,
const Y& d)
311 _inverse_diagonal.
mv(d,v);
335 unsigned maxiter_=5000,
337 : gfs(gfs_), phelper(gfs,verbose_), maxiter(maxiter_), verbose(verbose_)
345 typename V::ElementType
norm (
const V& v)
const
349 PSP psp(gfs,phelper);
350 psp.make_consistent(x);
361 template<
class M,
class V,
class W>
362 void apply(M& A, V& z, W& r,
typename V::ElementType reduction)
367 PSP psp(gfs,phelper);
369 PRICH prich(gfs,phelper);
371 if (gfs.gridView().comm().rank()==0) verb=verbose;
372 Dune::CGSolver<V> solver(pop,psp,prich,reduction,maxiter,verb);
373 Dune::InverseOperatorResult stat;
374 solver.apply(z,r,stat);
416 unsigned maxiter_ = 5000,
418 gfs(gfs_), phelper(gfs,verbose_), maxiter(maxiter_), verbose(verbose_)
428 typename V::ElementType
norm (
const V& v)
const
432 PSP psp(gfs,phelper);
433 psp.make_consistent(x);
450 template<
class M,
class V,
class W>
451 void apply(M& A, V& z, W& r,
typename V::ElementType reduction)
456 PSP psp(gfs,phelper);
462 if (gfs.gridView().comm().rank()==0) verb=verbose;
463 CGSolver<V> solver(pop,psp,ppre,reduction,maxiter,verb);
464 InverseOperatorResult stat;
465 solver.apply(z,r,stat);
492 : gfs(gfs_), phelper(gfs,verbose_), maxiter(maxiter_), verbose(verbose_)
500 typename V::ElementType
norm (
const V& v)
const
504 PSP psp(gfs,phelper);
505 psp.make_consistent(x);
516 template<
class M,
class V,
class W>
517 void apply(M& A, V& z, W& r,
typename V::ElementType reduction)
522 PSP psp(gfs,phelper);
524 PRICH prich(gfs,phelper);
526 if (gfs.gridView().comm().rank()==0) verb=verbose;
527 Dune::BiCGSTABSolver<V> solver(pop,psp,prich,reduction,maxiter,verb);
528 Dune::InverseOperatorResult stat;
529 solver.apply(z,r,stat);
566 : gfs(gfs_), phelper(gfs,verbose_), maxiter(maxiter_), verbose(verbose_)
574 typename V::ElementType
norm (
const V& v)
const
578 PSP psp(gfs,phelper);
579 psp.make_consistent(x);
590 template<
class M,
class V,
class W>
591 void apply(M& A, V& z, W& r,
typename V::ElementType reduction)
596 PSP psp(gfs,phelper);
602 if (gfs.gridView().comm().rank()==0) verb=verbose;
603 Dune::BiCGSTABSolver<V> solver(pop,psp,ppre,reduction,maxiter,verb);
604 Dune::InverseOperatorResult stat;
605 solver.apply(z,r,stat);
628 template<
typename GFS>
644 : gfs(gfs_), phelper(gfs)
652 typename V::ElementType
norm (
const V& v)
const
656 PSP psp(gfs,phelper);
657 psp.make_consistent(x);
668 template<
class M,
class V,
class W>
669 void apply(M& A, V& z, W& r,
typename W::ElementType reduction)
671 Dune::SeqJac<M,V,W> jac(A,1,1.0);
675 if (gfs.gridView().comm().size()>1)
678 gfs.gridView().communicate(adddh,Dune::InteriorBorder_InteriorBorder_Interface,Dune::ForwardCommunication);
697 template<
class,
class,
class,
int>
class Preconditioner,
698 template<
class>
class Solver>
701 typedef typename GO::Traits::TrialGridFunctionSpace GFS;
713 : _grid_operator(grid_operator)
714 , gfs(grid_operator.trialGridFunctionSpace())
715 , phelper(gfs,verbose_)
725 template<
class Vector>
726 typename Vector::ElementType
norm (
const Vector& v)
const
730 PSP psp(gfs,phelper);
731 psp.make_consistent(x);
742 template<
class M,
class V,
class W>
743 void apply(M& A, V& z, W& r,
typename V::ElementType reduction)
745 typedef typename M::BaseT MatrixType;
747 typedef typename V::BaseT VectorType;
750 _grid_operator.make_consistent(A);
751 Comm oocc(gfs.gridView().comm(),Dune::SolverCategory::nonoverlapping);
753 typedef Preconditioner<MatrixType,VectorType,VectorType,1> Smoother;
754 Smoother smoother(mat, steps, 1.0);
755 typedef Dune::NonoverlappingSchwarzScalarProduct<VectorType,Comm> PSP;
757 typedef Dune::NonoverlappingSchwarzOperator<MatrixType,VectorType,VectorType,Comm> Operator;
758 Operator oop(mat,oocc);
759 typedef Dune::NonoverlappingBlockPreconditioner<Comm, Smoother> ParSmoother;
760 ParSmoother parsmoother(smoother, oocc);
762 typedef Preconditioner<MatrixType,VectorType,VectorType,1> ParSmoother;
763 ParSmoother parsmoother(mat, steps, 1.0);
764 typedef Dune::SeqScalarProduct<VectorType> PSP;
766 typedef Dune::MatrixAdapter<MatrixType,VectorType,VectorType> Operator;
770 if (gfs.gridView().comm().rank()==0) verb=verbose;
771 Solver<VectorType> solver(oop,psp,parsmoother,reduction,maxiter,verb);
772 Dune::InverseOperatorResult stat;
774 if (gfs.gridView().comm().size()>1){
776 gfs.gridView().communicate(adddh,
777 Dune::InteriorBorder_InteriorBorder_Interface,
778 Dune::ForwardCommunication);
781 solver.apply(z,r,stat);
796 const GO& _grid_operator;
833 int steps_=5,
int verbose_=1)
855 int steps_=5,
int verbose_=1)
862 template<
class GO,
int s,
template<
class,
class,
class,
int>
class Preconditioner,
863 template<
class>
class Solver>
866 typedef typename GO::Traits::TrialGridFunctionSpace GFS;
868 typedef typename GO::Traits::Jacobian M;
869 typedef typename M::BaseT MatrixType;
870 typedef typename GO::Traits::Domain V;
871 typedef typename V::BaseT VectorType;
874 typedef Preconditioner<MatrixType,VectorType,VectorType,1> Smoother;
875 typedef Dune::NonoverlappingBlockPreconditioner<Comm,Smoother> ParSmoother;
876 typedef Dune::NonoverlappingSchwarzOperator<MatrixType,VectorType,VectorType,Comm> Operator;
878 typedef Preconditioner<MatrixType,VectorType,VectorType,1> ParSmoother;
879 typedef Dune::MatrixAdapter<MatrixType,VectorType,VectorType> Operator;
881 typedef typename Dune::Amg::SmootherTraits<ParSmoother>::Arguments SmootherArgs;
882 typedef Dune::Amg::AMG<Operator,VectorType,ParSmoother,Comm> AMG;
883 typedef Dune::Amg::Parameters Parameters;
887 int verbose_=1,
bool reuse_=
false,
888 bool usesuperlu_=
true)
889 : _grid_operator(grid_operator)
890 , gfs(grid_operator.trialGridFunctionSpace())
891 , phelper(gfs,verbose_)
893 , params(15,2000,1.2,1.6,Dune::Amg::atOnceAccu)
897 , usesuperlu(usesuperlu_)
899 params.setDefaultValuesIsotropic(GFS::Traits::GridViewType::Traits::Grid::dimension);
900 params.setDebugLevel(verbose_);
902 if (phelper.
rank() == 0 && usesuperlu ==
true)
904 std::cout <<
"WARNING: You are using AMG without SuperLU!"
905 <<
" Please consider installing SuperLU,"
906 <<
" or set the usesuperlu flag to false"
907 <<
" to suppress this warning." << std::endl;
921 void setparams(Parameters params_) DUNE_DEPRECATED_MSG(
"setparams() is deprecated, use setParameters() instead")
942 typename V::ElementType
norm (
const V& v)
const
946 PSP psp(gfs,phelper);
947 psp.make_consistent(x);
951 void apply(M& A, V& z, V& r,
typename V::ElementType reduction)
955 typedef Dune::Amg::CoarsenCriterion<Dune::Amg::SymmetricCriterion<MatrixType,
956 Dune::Amg::FirstDiagonal> > Criterion;
958 Comm oocc(gfs.gridView().comm(),Dune::SolverCategory::nonoverlapping);
959 _grid_operator.make_consistent(A);
961 Dune::NonoverlappingSchwarzScalarProduct<VectorType,Comm> sp(oocc);
962 Operator oop(mat, oocc);
964 Comm oocc(gfs.gridView().comm());
966 Dune::SeqScalarProduct<VectorType> sp;
968 SmootherArgs smootherArgs;
969 smootherArgs.iterations = 1;
970 smootherArgs.relaxationFactor = 1;
972 Criterion criterion(params);
977 if (gfs.gridView().comm().rank()==0) verb=verbose;
979 if (reuse==
false || firstapply==
true){
980 amg.reset(
new AMG(oop, criterion, smootherArgs, oocc));
982 stats.
tsetup = watch.elapsed();
983 stats.
levels = amg->maxlevels();
987 Dune::InverseOperatorResult stat;
989 if (gfs.gridView().comm().size()>1) {
991 gfs.gridView().communicate(adddh,
992 Dune::InteriorBorder_InteriorBorder_Interface,
993 Dune::ForwardCommunication);
996 Solver<VectorType> solver(oop,sp,*amg,reduction,maxiter,verb);
998 stats.
tsolve= watch.elapsed();
1016 const GO& _grid_operator;
1025 Dune::shared_ptr<AMG> amg;
1044 template<
class GO,
int s=96>
1051 int verbose_=1,
bool reuse_=
false,
1052 bool usesuperlu_=
true)
1053 :
ISTLBackend_AMG_NOVLP<GO,
s, Dune::SeqSSOR, Dune::CGSolver>(grid_operator, maxiter_,verbose_,reuse_,usesuperlu_)
1069 template<
class GO,
int s=96>
1076 int verbose_=1,
bool reuse_=
false,
1077 bool usesuperlu_=
true)
1078 :
ISTLBackend_AMG_NOVLP<GO,
s, Dune::SeqSSOR, Dune::BiCGSTABSolver>(grid_operator, maxiter_,verbose_,reuse_,usesuperlu_)
1094 template<
class GO,
int s=96>
1101 int verbose_=1,
bool reuse_=
false,
1102 bool usesuperlu_=
true)
1103 :
ISTLBackend_AMG_NOVLP<GO,
s, Dune::SeqSSOR, Dune::LoopSolver>(grid_operator, maxiter_,verbose_,reuse_,usesuperlu_)
NonoverlappingRichardson(const GFS &gfs_, const istl::ParallelHelper< GFS > &helper_)
Constructor.
Definition: novlpistlsolverbackend.hh:202
void apply(M &A, V &z, W &r, typename V::ElementType reduction)
Solve the given linear system.
Definition: novlpistlsolverbackend.hh:743
const Dune::PDELab::LinearSolverResult< double > & result() const
Return access to result data.
Definition: novlpistlsolverbackend.hh:614
Nonoverlapping parallel CG solver with Jacobi preconditioner.
Definition: novlpistlsolverbackend.hh:398
void apply(M &A, V &z, W &r, typename V::ElementType reduction)
solve the given linear system
Definition: novlpistlsolverbackend.hh:451
X domain_type
The domain type of the operator.
Definition: novlpistlsolverbackend.hh:258
virtual void applyscaleadd(field_type alpha, const X &x, Y &y) const
apply operator to x, scale and add:
Definition: novlpistlsolverbackend.hh:108
Class providing some statistics of the AMG solver.
Definition: seqistlsolverbackend.hh:472
void mv(const X &x, Y &y) const
Definition: blockmatrixdiagonal.hh:202
M::BaseT matrix_type
export type of matrix
Definition: novlpistlsolverbackend.hh:59
double tsetup
The time needed for building the AMG hierarchy (coarsening).
Definition: seqistlsolverbackend.hh:484
Solver to be used for explicit time-steppers with (block-)diagonal mass matrix.
Definition: novlpistlsolverbackend.hh:629
void make_consistent(X &x) const
make additive vector consistent
Definition: novlpistlsolverbackend.hh:171
bool converged
Definition: solver.hh:32
virtual void apply(const X &x, Y &y) const
apply operator
Definition: novlpistlsolverbackend.hh:91
const LinearSolverResult< double > & result() const
Return access to result data.
Definition: novlpistlsolverbackend.hh:474
double tsolve
The time spent in solving the system (without building the hierarchy.
Definition: seqistlsolverbackend.hh:482
ISTLBackend_NOVLP_LS_AMG_SSOR(const GO &grid_operator, unsigned maxiter_=5000, int verbose_=1, bool reuse_=false, bool usesuperlu_=true)
Definition: novlpistlsolverbackend.hh:1100
virtual void post(X &x)
Clean up.
Definition: novlpistlsolverbackend.hh:223
NonoverlappingScalarProduct(const GFS &gfs_, const istl::ParallelHelper< GFS > &helper_)
Constructor needs to know the grid function space.
Definition: novlpistlsolverbackend.hh:144
X domain_type
export types
Definition: novlpistlsolverbackend.hh:136
ISTLBackend_NOVLP_BASE_PREC(const GO &grid_operator, unsigned maxiter_=5000, unsigned steps_=5, int verbose_=1)
Constructor.
Definition: novlpistlsolverbackend.hh:712
Nonoverlapping parallel BiCGStab solver with Jacobi preconditioner.
Definition: novlpistlsolverbackend.hh:554
double elapsed
Definition: solver.hh:34
const Dune::PDELab::LinearSolverResult< double > & result() const
Return access to result data.
Definition: novlpistlsolverbackend.hh:538
virtual void apply(X &v, const Y &d)
Apply the precondioner.
Definition: novlpistlsolverbackend.hh:215
int levels
the number of levels in the AMG hierarchy.
Definition: seqistlsolverbackend.hh:480
Definition: novlpistlsolverbackend.hh:132
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: novlpistlsolverbackend.hh:152
virtual double norm(const X &x)
Norm of a right-hand side vector. The vector must be consistent on the interior+border partition...
Definition: novlpistlsolverbackend.hh:164
ISTLBackend_NOVLP_BCGS_SSORk(const GO &grid_operator, unsigned maxiter_=5000, int steps_=5, int verbose_=1)
make a linear solver object
Definition: novlpistlsolverbackend.hh:832
X::field_type field_type
export type of the entries for x
Definition: novlpistlsolverbackend.hh:65
virtual const M & getmat() const
extract the matrix
Definition: novlpistlsolverbackend.hh:120
void apply(M &A, V &z, W &r, typename W::ElementType reduction)
solve the given linear system
Definition: novlpistlsolverbackend.hh:669
NonoverlappingJacobi(const GFS &gfs, const A &m)
Constructor.
Definition: novlpistlsolverbackend.hh:286
Nonoverlapping parallel LoopSolver preconditioned with AMG smoothed by SSOR.
Definition: novlpistlsolverbackend.hh:1095
ISTLBackend_NOVLP_BCGS_AMG_SSOR(const GO &grid_operator, unsigned maxiter_=5000, int verbose_=1, bool reuse_=false, bool usesuperlu_=true)
Definition: novlpistlsolverbackend.hh:1075
virtual void pre(X &x, Y &b)
Prepare the preconditioner.
Definition: novlpistlsolverbackend.hh:210
const ISTLAMGStatistics & statistics() const
Get statistics of the AMG solver (no of levels, timings).
Definition: novlpistlsolverbackend.hh:1010
NonoverlappingOperator(const GFS &gfs_, const M &A)
Construct a non-overlapping operator.
Definition: novlpistlsolverbackend.hh:81
Nonoverlapping parallel CG solver preconditioned by block SSOR.
Definition: novlpistlsolverbackend.hh:842
ISTLBackend_NOVLP_BCGS_NOPREC(const GFS &gfs_, unsigned maxiter_=5000, int verbose_=1)
make a linear solver object
Definition: novlpistlsolverbackend.hh:491
void setparams(Parameters params_)
Definition: novlpistlsolverbackend.hh:921
Definition: novlpistlsolverbackend.hh:68
V::ElementType norm(const V &v) const
compute global norm of a vector
Definition: novlpistlsolverbackend.hh:942
The category the preconditioner is part of.
Definition: novlpistlsolverbackend.hh:198
Nonoverlapping parallel CG solver preconditioned with AMG smoothed by SSOR.
Definition: novlpistlsolverbackend.hh:1045
V & raw(V &v)
Returns the raw ISTL object associated with v, or v itself it is already an ISTL object.
Definition: backend/istl/utility.hh:26
ISTLBackend_NOVLP_ExplicitDiagonal(const GFS &gfs_)
make a linear solver object
Definition: novlpistlsolverbackend.hh:643
Dune::PDELab::LinearSolverResult< double > res
Definition: solver.hh:52
void setParameters(const Parameters ¶ms_)
set AMG parameters
Definition: novlpistlsolverbackend.hh:916
X domain_type
The domain type of the preconditioner.
Definition: novlpistlsolverbackend.hh:189
X::ElementType field_type
The field type of the preconditioner.
Definition: novlpistlsolverbackend.hh:266
Y range_type
The range type of the operator.
Definition: novlpistlsolverbackend.hh:264
ISTLBackend_NOVLP_CG_NOPREC(const GFS &gfs_, unsigned maxiter_=5000, int verbose_=1)
make a linear solver object
Definition: novlpistlsolverbackend.hh:334
ISTLBackend_NOVLP_CG_SSORk(const GO &grid_operator, unsigned maxiter_=5000, int steps_=5, int verbose_=1)
make a linear solver object
Definition: novlpistlsolverbackend.hh:854
const Dune::PDELab::LinearSolverResult< double > & result() const
Return access to result data.
Definition: novlpistlsolverbackend.hh:383
Definition: novlpistlsolverbackend.hh:864
void apply(M &A, V &z, W &r, typename V::ElementType reduction)
solve the given linear system
Definition: novlpistlsolverbackend.hh:591
void invert()
Definition: blockmatrixdiagonal.hh:196
parallel non-overlapping Jacobi preconditioner
Definition: novlpistlsolverbackend.hh:244
Nonoverlapping parallel BiCGStab solver preconditioned with AMG smoothed by SSOR. ...
Definition: novlpistlsolverbackend.hh:1070
Definition: parallelhelper.hh:45
V::ElementType norm(const V &v) const
compute global norm of a vector
Definition: novlpistlsolverbackend.hh:428
Definition: genericdatahandle.hh:623
virtual void post(X &x)
Clean up.
Definition: novlpistlsolverbackend.hh:315
Definition: blockmatrixdiagonal.hh:182
void createIndexSetAndProjectForAMG(MatrixType &m, Comm &c)
Makes the matrix consistent and creates the parallel information for AMG.
Y::BaseT range_type
export type of result vectors
Definition: novlpistlsolverbackend.hh:63
RFType reduction
Definition: solver.hh:35
Definition: novlpistlsolverbackend.hh:185
Nonoverlapping parallel BiCGSTAB solver preconditioned by block SSOR.
Definition: novlpistlsolverbackend.hh:820
X::ElementType field_type
Definition: novlpistlsolverbackend.hh:137
V::ElementType norm(const V &v) const
compute global norm of a vector
Definition: novlpistlsolverbackend.hh:652
ISTLBackend_NOVLP_CG_Jacobi(const GFS &gfs_, unsigned maxiter_=5000, int verbose_=1)
make a linear solver object
Definition: novlpistlsolverbackend.hh:415
ISTLBackend_NOVLP_BCGS_Jacobi(const GFS &gfs_, unsigned maxiter_=5000, int verbose_=1)
make a linear solver object
Definition: novlpistlsolverbackend.hh:565
Nonoverlapping parallel CG solver without preconditioner.
Definition: novlpistlsolverbackend.hh:323
The category the preconditioner is part of.
Definition: novlpistlsolverbackend.hh:270
V::ElementType norm(const V &v) const
compute global norm of a vector
Definition: novlpistlsolverbackend.hh:500
const Dune::PDELab::LinearSolverResult< double > & result() const
Return access to result data.
Definition: novlpistlsolverbackend.hh:790
virtual void apply(X &v, const Y &d)
Apply the precondioner.
Definition: novlpistlsolverbackend.hh:309
V::ElementType norm(const V &v) const
compute global norm of a vector
Definition: novlpistlsolverbackend.hh:345
bool directCoarseLevelSolver
True if a direct solver was used on the coarset level.
Definition: seqistlsolverbackend.hh:488
X::ElementType field_type
The field type of the preconditioner.
Definition: novlpistlsolverbackend.hh:193
Definition: novlpistlsolverbackend.hh:699
Vector::ElementType norm(const Vector &v) const
Compute global norm of a vector.
Definition: novlpistlsolverbackend.hh:726
void apply(M &A, V &z, W &r, typename V::ElementType reduction)
solve the given linear system
Definition: novlpistlsolverbackend.hh:517
virtual void pre(X &x, Y &b)
Prepare the preconditioner.
Definition: novlpistlsolverbackend.hh:301
const Dune::PDELab::LinearSolverResult< double > & result() const
Return access to result data.
Definition: novlpistlsolverbackend.hh:688
Definition: novlpistlsolverbackend.hh:140
Dune::Amg::SequentialInformation type
Definition: parallelhelper.hh:417
Definition: blockmatrixdiagonal.hh:177
RankIndex rank() const
Returns the MPI rank of this process.
Definition: parallelhelper.hh:226
double tprepare
The needed for computing the parallel information and for adapting the linear system.
Definition: seqistlsolverbackend.hh:478
ISTLBackend_NOVLP_CG_AMG_SSOR(const GO &grid_operator, unsigned maxiter_=5000, int verbose_=1, bool reuse_=false, bool usesuperlu_=true)
Definition: novlpistlsolverbackend.hh:1050
Y range_type
The range type of the preconditioner.
Definition: novlpistlsolverbackend.hh:191
X::BaseT domain_type
export type of vectors the matrix is applied to
Definition: novlpistlsolverbackend.hh:61
const Parameters & parameters() const
Get the parameters describing the behaviuour of AMG.
Definition: novlpistlsolverbackend.hh:933
RFType conv_rate
Definition: solver.hh:36
ISTLBackend_AMG_NOVLP(const GO &grid_operator, unsigned maxiter_=5000, int verbose_=1, bool reuse_=false, bool usesuperlu_=true)
Definition: novlpistlsolverbackend.hh:886
void apply(M &A, V &z, V &r, typename V::ElementType reduction)
Definition: novlpistlsolverbackend.hh:951
V::ElementType norm(const V &v) const
compute global norm of a vector
Definition: novlpistlsolverbackend.hh:574
void apply(M &A, V &z, W &r, typename V::ElementType reduction)
solve the given linear system
Definition: novlpistlsolverbackend.hh:362
Operator for the non-overlapping parallel case.
Definition: novlpistlsolverbackend.hh:54
const std::string s
Definition: function.hh:1103
unsigned int iterations
Definition: solver.hh:33
Nonoverlapping parallel BiCGStab solver without preconditioner.
Definition: novlpistlsolverbackend.hh:480