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);
753 Comm oocc(gfs.gridView().comm(),Dune::SolverCategory::nonoverlapping);
754 phelper.createIndexSetAndProjectForAMG(mat, oocc);
755 typedef Preconditioner<MatrixType,VectorType,VectorType,1> Smoother;
756 Smoother smoother(mat, steps, 1.0);
757 typedef Dune::NonoverlappingSchwarzScalarProduct<VectorType,Comm> PSP;
759 typedef Dune::NonoverlappingSchwarzOperator<MatrixType,VectorType,VectorType,Comm> Operator;
760 Operator oop(mat,oocc);
761 typedef Dune::NonoverlappingBlockPreconditioner<Comm, Smoother> ParSmoother;
762 ParSmoother parsmoother(smoother, oocc);
764 typedef Preconditioner<MatrixType,VectorType,VectorType,1> ParSmoother;
765 ParSmoother parsmoother(mat, steps, 1.0);
766 typedef Dune::SeqScalarProduct<VectorType> PSP;
768 typedef Dune::MatrixAdapter<MatrixType,VectorType,VectorType> Operator;
772 if (gfs.gridView().comm().rank()==0) verb=verbose;
773 Solver<VectorType> solver(oop,psp,parsmoother,reduction,maxiter,verb);
774 Dune::InverseOperatorResult stat;
776 if (gfs.gridView().comm().size()>1){
778 gfs.gridView().communicate(adddh,
779 Dune::InteriorBorder_InteriorBorder_Interface,
780 Dune::ForwardCommunication);
783 solver.apply(z,r,stat);
784 res.converged = stat.converged;
785 res.iterations = stat.iterations;
786 res.elapsed = stat.elapsed;
787 res.reduction = stat.reduction;
788 res.conv_rate = stat.conv_rate;
798 const GO& _grid_operator;
835 int steps_=5,
int verbose_=1)
857 int steps_=5,
int verbose_=1)
864 template<
class GO,
int s,
template<
class,
class,
class,
int>
class Preconditioner,
865 template<
class>
class Solver>
868 typedef typename GO::Traits::TrialGridFunctionSpace GFS;
870 typedef typename GO::Traits::Jacobian M;
872 typedef typename GO::Traits::Domain V;
876 typedef Preconditioner<MatrixType,VectorType,VectorType,1> Smoother;
877 typedef Dune::NonoverlappingBlockPreconditioner<Comm,Smoother> ParSmoother;
878 typedef Dune::NonoverlappingSchwarzOperator<MatrixType,VectorType,VectorType,Comm> Operator;
880 typedef Preconditioner<MatrixType,VectorType,VectorType,1> ParSmoother;
881 typedef Dune::MatrixAdapter<MatrixType,VectorType,VectorType> Operator;
883 typedef typename Dune::Amg::SmootherTraits<ParSmoother>::Arguments SmootherArgs;
884 typedef Dune::Amg::AMG<Operator,VectorType,ParSmoother,Comm> AMG;
885 typedef Dune::Amg::Parameters Parameters;
889 int verbose_=1,
bool reuse_=
false,
890 bool usesuperlu_=
true)
891 : _grid_operator(grid_operator)
892 , gfs(grid_operator.trialGridFunctionSpace())
893 , phelper(gfs,verbose_)
895 , params(15,2000,1.2,1.6,
Dune::Amg::atOnceAccu)
899 , usesuperlu(usesuperlu_)
901 params.setDefaultValuesIsotropic(GFS::Traits::GridViewType::Traits::Grid::dimension);
902 params.setDebugLevel(verbose_);
904 if (phelper.rank() == 0 && usesuperlu ==
true)
906 std::cout <<
"WARNING: You are using AMG without SuperLU!" 907 <<
" Please consider installing SuperLU," 908 <<
" or set the usesuperlu flag to false" 909 <<
" to suppress this warning." << std::endl;
923 void setparams(Parameters params_) DUNE_DEPRECATED_MSG(
"setparams() is deprecated, use setParameters() instead")
944 typename V::ElementType
norm (
const V& v)
const 948 PSP psp(gfs,phelper);
949 psp.make_consistent(x);
953 void apply(M& A, V& z, V& r,
typename Dune::template FieldTraits<typename V::ElementType >::real_type reduction)
957 typedef Dune::Amg::CoarsenCriterion<Dune::Amg::SymmetricCriterion<MatrixType,
958 Dune::Amg::FirstDiagonal> > Criterion;
960 Comm oocc(gfs.gridView().comm(),Dune::SolverCategory::nonoverlapping);
961 _grid_operator.make_consistent(A);
962 phelper.createIndexSetAndProjectForAMG(A, oocc);
963 Dune::NonoverlappingSchwarzScalarProduct<VectorType,Comm> sp(oocc);
964 Operator oop(mat, oocc);
966 Comm oocc(gfs.gridView().comm());
968 Dune::SeqScalarProduct<VectorType> sp;
970 SmootherArgs smootherArgs;
971 smootherArgs.iterations = 1;
972 smootherArgs.relaxationFactor = 1;
974 Criterion criterion(params);
975 stats.tprepare=watch.elapsed();
979 if (gfs.gridView().comm().rank()==0) verb=verbose;
981 if (reuse==
false || firstapply==
true){
982 amg.reset(
new AMG(oop, criterion, smootherArgs, oocc));
984 stats.tsetup = watch.elapsed();
985 stats.levels = amg->maxlevels();
986 stats.directCoarseLevelSolver=amg->usesDirectCoarseLevelSolver();
989 Dune::InverseOperatorResult stat;
991 if (gfs.gridView().comm().size()>1) {
993 gfs.gridView().communicate(adddh,
994 Dune::InteriorBorder_InteriorBorder_Interface,
995 Dune::ForwardCommunication);
998 Solver<VectorType> solver(oop,sp,*amg,reduction,maxiter,verb);
1000 stats.tsolve= watch.elapsed();
1001 res.converged = stat.converged;
1002 res.iterations = stat.iterations;
1003 res.elapsed = stat.elapsed;
1004 res.reduction = stat.reduction;
1005 res.conv_rate = stat.conv_rate;
1018 const GO& _grid_operator;
1027 std::shared_ptr<AMG> amg;
1046 template<
class GO,
int s=96>
1053 int verbose_=1,
bool reuse_=
false,
1054 bool usesuperlu_=
true)
1071 template<
class GO,
int s=96>
1078 int verbose_=1,
bool reuse_=
false,
1079 bool usesuperlu_=
true)
1096 template<
class GO,
int s=96>
1103 int verbose_=1,
bool reuse_=
false,
1104 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:856
V::ElementType norm(const V &v) const
compute global norm of a vector
Definition: istl/novlpistlsolverbackend.hh:944
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:822
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:51
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:1052
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:1097
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:834
ISTLBackend_AMG_NOVLP(const GO &grid_operator, unsigned maxiter_=5000, int verbose_=1, bool reuse_=false, bool usesuperlu_=true)
Definition: istl/novlpistlsolverbackend.hh:888
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:415
NonoverlappingRichardson(const GFS &gfs_, const istl::ParallelHelper< GFS > &helper_)
Constructor.
Definition: istl/novlpistlsolverbackend.hh:203
void setparams(Parameters params_)
Definition: istl/novlpistlsolverbackend.hh:923
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:792
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:918
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:1012
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:1047
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:935
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:844
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:953
ISTLBackend_NOVLP_BCGS_Jacobi(const GFS &gfs_, unsigned maxiter_=5000, int verbose_=1)
make a linear solver object
Definition: istl/novlpistlsolverbackend.hh:566
void assertParallelUG(T comm)
Definition: parallelhelper.hh:431
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:1072
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:1077
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:1102
Definition: istl/novlpistlsolverbackend.hh:866
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