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

Implements a generic linear solver abstraction. More...

#include <parallelbicgstabbackend.hh>

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

Public Member Functions

 ParallelBiCGStabSolverBackend (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 ()
 
- 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< RawLinearSolverprepareSolver_ (ParallelOperator &parOperator, ParallelScalarProduct &parScalarProduct, ParallelPreconditioner &parPreCond)
 
bool runSolver_ (std::shared_ptr< RawLinearSolver > solver)
 
void cleanupSolver_ ()
 
- 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
< ParallelPreconditioner
preparePreconditioner_ ()
 
void cleanupPreconditioner_ ()
 
void writeOverlapToVTK_ ()
 

Protected Attributes

friend ParentType
 
std::unique_ptr
< ConvergenceCriterion
< OverlappingVector > > 
convCrit_
 
- 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::ParallelBiCGStabSolverBackend< TypeTag >

Implements a generic linear solver abstraction.

Chosing the preconditioner works by setting 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

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