All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Ewoms::Linear::ParallelBaseBackend< TypeTag > Class Template Reference

Provides the common code which is required by most linear solvers. More...

#include <parallelbasebackend.hh>

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

Public Member Functions

 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.
 

Protected Types

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
 

Protected Member Functions

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
< ParallelPreconditioner
preparePreconditioner_ ()
 
void cleanupPreconditioner_ ()
 
void writeOverlapToVTK_ ()
 

Protected Attributes

const Simulatorsimulator_
 
int gridSequenceNumber_
 
OverlappingMatrix * overlappingMatrix_
 
OverlappingVector * overlappingb_
 
OverlappingVector * overlappingx_
 
PreconditionerWrapper precWrapper_
 

Detailed Description

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

Provides the common code which is required by most linear solvers.

This class provides access to all preconditioners offered by dune-istl using the PreconditionerWrapper property:

* 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: An ILU(0) preconditioner. The results of this preconditioner are the same as setting the PreconditionerOrder property to 0 and using the ILU(n) preconditioner. The reason for the existence of ILU0 is that it is computationally cheaper because it does not need to consider things which are only required for higher orders

Member Function Documentation

template<class TypeTag >
bool Ewoms::Linear::ParallelBaseBackend< TypeTag >::solve ( Vector &  x)
inline

Actually solve the linear system of equations.

Returns
true if the residual reduction could be achieved, else false.

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