Ewoms::Linear::ParallelIstlSolverBackend< TypeTag > Class Template Reference

Provides all unmodified linear solvers from dune-istl. More...

#include <parallelistlbackend.hh>

Inheritance diagram for Ewoms::Linear::ParallelIstlSolverBackend< TypeTag >:
Ewoms::Linear::ParallelBaseBackend< TypeTag >

Public Member Functions

 ParallelIstlSolverBackend (const Simulator &simulator)
 
- Public Member Functions inherited from Ewoms::Linear::ParallelBaseBackend< TypeTag >
 ParallelBaseBackend (const Simulator &simulator)
 
void eraseMatrix ()
 Causes the solve() method to discared the structure of the linear system of equations the next time it is called.
 
void prepareMatrix (const Matrix &M)
 
void prepareRhs (const Matrix &M, Vector &b)
 
bool solve (Vector &x)
 Actually solve the linear system of equations. More...
 

Static Public Member Functions

static void registerParameters ()
 Register all run-time parameters for the linear solver.
 
- Static Public Member Functions inherited from Ewoms::Linear::ParallelBaseBackend< TypeTag >
static void registerParameters ()
 Register all run-time parameters for the linear solver.
 

Protected Member Functions

std::shared_ptr< RawLinearSolver > prepareSolver_ (ParallelOperator &parOperator, ParallelScalarProduct &parScalarProduct, ParallelPreconditioner &parPreCond)
 
void cleanupSolver_ ()
 
bool runSolver_ (std::shared_ptr< RawLinearSolver > solver)
 
- Protected Member Functions inherited from Ewoms::Linear::ParallelBaseBackend< TypeTag >
typedef GET_PROP_TYPE (TypeTag, LinearSolverBackend) Implementation
 
typedef GET_PROP_TYPE (TypeTag, Simulator) Simulator
 
typedef GET_PROP_TYPE (TypeTag, Scalar) Scalar
 
typedef GET_PROP_TYPE (TypeTag, JacobianMatrix) Matrix
 
typedef GET_PROP_TYPE (TypeTag, GlobalEqVector) Vector
 
typedef GET_PROP_TYPE (TypeTag, BorderListCreator) BorderListCreator
 
typedef GET_PROP_TYPE (TypeTag, GridView) GridView
 
typedef GET_PROP_TYPE (TypeTag, Overlap) Overlap
 
typedef GET_PROP_TYPE (TypeTag, OverlappingVector) OverlappingVector
 
typedef GET_PROP_TYPE (TypeTag, OverlappingMatrix) OverlappingMatrix
 
typedef GET_PROP_TYPE (TypeTag, PreconditionerWrapper) PreconditionerWrapper
 
Implementation & asImp_ ()
 
const Implementation & asImp_ () const
 
void prepare_ (const Matrix &M)
 
void rescale_ ()
 
void cleanup_ ()
 
std::shared_ptr< ParallelPreconditionerpreparePreconditioner_ ()
 
void cleanupPreconditioner_ ()
 
void writeOverlapToVTK_ ()
 

Protected Attributes

friend ParentType
 
LinearSolverWrapper solverWrapper_
 
- Protected Attributes inherited from Ewoms::Linear::ParallelBaseBackend< TypeTag >
const Simulatorsimulator_
 
int gridSequenceNumber_
 
OverlappingMatrix * overlappingMatrix_
 
OverlappingVector * overlappingb_
 
OverlappingVector * overlappingx_
 
PreconditionerWrapper precWrapper_
 

Additional Inherited Members

- Protected Types inherited from Ewoms::Linear::ParallelBaseBackend< TypeTag >
enum  { dimWorld = GridView::dimensionworld }
 
typedef PreconditionerWrapper::SequentialPreconditioner SequentialPreconditioner
 
typedef Ewoms::Linear::OverlappingPreconditioner< SequentialPreconditioner, Overlap > ParallelPreconditioner
 
typedef Ewoms::Linear::OverlappingScalarProduct< OverlappingVector, Overlap > ParallelScalarProduct
 
typedef Ewoms::Linear::OverlappingOperator< OverlappingMatrix, OverlappingVector, OverlappingVector > ParallelOperator
 

Detailed Description

template<class TypeTag>
class Ewoms::Linear::ParallelIstlSolverBackend< TypeTag >

Provides all unmodified linear solvers from dune-istl.

To set the linear solver, use

SET_TYPE_PROP(YourTypeTag, LinearSolverWrapper,
Ewoms::Linear::SolverWrapper$SOLVER<TypeTag>);

The possible choices for '$SOLVER' are:

  • Richardson: A fixpoint solver using the Richardson iteration
  • SteepestDescent: The steepest descent solver
  • ConjugatedGradients: A conjugated gradients solver
  • BiCGStab: A stabilized bi-conjugated gradients solver
  • MinRes: A solver based on the minimized residual algorithm
  • RestartedGMRes: A restarted GMRES solver

Chosing the preconditioner works in an analogous way:

SET_TYPE_PROP(YourTypeTag, PreconditionerWrapper,
Ewoms::Linear::PreconditionerWrapper$PRECONDITIONER<TypeTag>);

Where the choices possible for '$PRECONDITIONER' are:

  • Jacobi: A Jacobi preconditioner
  • GaussSeidel: A Gauss-Seidel preconditioner
  • SSOR: A symmetric successive overrelaxation (SSOR) preconditioner
  • SOR: A successive overrelaxation (SOR) preconditioner
  • ILUn: An ILU(n) preconditioner
  • ILU0: A specialized (and optimized) ILU(0) preconditioner

The documentation for this class was generated from the following file: