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

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

#include <parallelistlbackend.hh>

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

Public Member Functions

 ParallelIstlSolverBackend (const Simulator &simulator)
 

Static Public Member Functions

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_ ()
 
std::pair< bool, intrunSolver_ (std::shared_ptr< RawLinearSolver > solver)
 

Protected Attributes

friend ParentType
 
LinearSolverWrapper solverWrapper_
 

Detailed Description

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

Provides all unmodified linear solvers from dune-istl.

To set the linear solver, use

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

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:

template<class TypeTag>
struct PreconditionerWrapper<TypeTag, TTag::YourTypeTag>
{ using type = Opm::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: