My Project
Loading...
Searching...
No Matches
Opm::Linear::ParallelBiCGStabSolverBackend< TypeTag > Class Template Reference

Implements a generic linear solver abstraction. More...

#include <parallelbicgstabbackend.hh>

Inherits Opm::Linear::ParallelBaseBackend< TypeTag >.

Public Member Functions

 ParallelBiCGStabSolverBackend (const Simulator &simulator)
 

Static Public Member Functions

static void registerParameters ()
 

Protected Member Functions

std::shared_ptr< RawLinearSolverprepareSolver_ (ParallelOperator &parOperator, ParallelScalarProduct &parScalarProduct, ParallelPreconditioner &parPreCond)
 
std::pair< bool, intrunSolver_ (std::shared_ptr< RawLinearSolver > solver)
 
void cleanupSolver_ ()
 

Protected Attributes

friend ParentType
 
std::unique_ptr< ConvergenceCriterion< OverlappingVector > > convCrit_
 

Detailed Description

template<class TypeTag>
class Opm::Linear::ParallelBiCGStabSolverBackend< TypeTag >

Implements a generic linear solver abstraction.

Chosing the preconditioner works by setting the "PreconditionerWrapper" property:

template<class TypeTag>
struct PreconditionerWrapper<TypeTag, TTag::YourTypeTag>
{ using type = Opm::Linear::PreconditionerWrapper$PRECONDITIONER<TypeTag>; };
constexpr auto getPropValue()
get the value data member of a property
Definition propertysystem.hh:242

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: