opm-simulators
Loading...
Searching...
No Matches
Opm::Linear::ParallelIstlSolverBackend< TypeTag > Class Template Reference

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

#include <parallelistlbackend.hh>

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

Public Member Functions

 ParallelIstlSolverBackend (const Simulator &simulator)
Public Member Functions inherited from Opm::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 prepare (const SparseMatrixAdapter &M, const Vector &)
 Set up the internal data structures required for the linear solver.
void setResidual (const Vector &b)
 Assign values to the internal data structure for the residual vector.
void getResidual (Vector &b) const
 Retrieve the synchronized internal residual vector.
void setMatrix (const SparseMatrixAdapter &M)
 Sets the values of the residual's Jacobian matrix.
bool solve (Vector &x)
 Actually solve the linear system of equations.
size_t iterations () const
 Return number of iterations used during last solve.

Static Public Member Functions

static void registerParameters ()
 Register all run-time parameters for the linear solver.
Static Public Member Functions inherited from Opm::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_ ()
std::pair< bool, int > runSolver_ (std::shared_ptr< RawLinearSolver > solver)
Protected Member Functions inherited from Opm::Linear::ParallelBaseBackend< TypeTag >
Implementation & asImp_ ()
const Implementation & asImp_ () const
void cleanup_ ()
std::shared_ptr< ParallelPreconditioner > preparePreconditioner_ ()
void cleanupPreconditioner_ ()
void writeOverlapToVTK_ ()

Protected Attributes

friend ParentType
LinearSolverWrapper solverWrapper_
Protected Attributes inherited from Opm::Linear::ParallelBaseBackend< TypeTag >
const Simulator & simulator_
int gridSequenceNumber_
size_t lastIterations_
OverlappingMatrix * overlappingMatrix_
OverlappingVector * overlappingb_
OverlappingVector * overlappingx_
PreconditionerWrapper precWrapper_

Additional Inherited Members

Protected Types inherited from Opm::Linear::ParallelBaseBackend< TypeTag >
enum  { dimWorld = GridView::dimensionworld }
using Implementation = GetPropType<TypeTag, Properties::LinearSolverBackend>
using Simulator = GetPropType<TypeTag, Properties::Simulator>
using Scalar = GetPropType<TypeTag, Properties::Scalar>
using LinearSolverScalar = GetPropType<TypeTag, Properties::LinearSolverScalar>
using SparseMatrixAdapter = GetPropType<TypeTag, Properties::SparseMatrixAdapter>
using Vector = GetPropType<TypeTag, Properties::GlobalEqVector>
using BorderListCreator = GetPropType<TypeTag, Properties::BorderListCreator>
using GridView = GetPropType<TypeTag, Properties::GridView>
using Overlap = GetPropType<TypeTag, Properties::Overlap>
using OverlappingVector = GetPropType<TypeTag, Properties::OverlappingVector>
using OverlappingMatrix = GetPropType<TypeTag, Properties::OverlappingMatrix>
using PreconditionerWrapper = GetPropType<TypeTag, Properties::PreconditionerWrapper>
using SequentialPreconditioner = typename PreconditionerWrapper::SequentialPreconditioner
using ParallelPreconditioner = Opm::Linear::OverlappingPreconditioner<SequentialPreconditioner, Overlap>
using ParallelScalarProduct = Opm::Linear::OverlappingScalarProduct<OverlappingVector, Overlap>
using ParallelOperator

Detailed Description

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

Provides all unmodified linear solvers from dune-istl.

To set the linear solver, use

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:

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: