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

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

`#include <parallelistlbackend.hh>`

Inheritance diagram for Opm::Linear::ParallelIstlSolverBackend< 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

template<class TypeTag>
struct LinearSolverWrapper<TypeTag, TTag::YourTypeTag>
{ using type = Opm::Linear::SolverWrapper$SOLVER<TypeTag>; };

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:

- opm/simulators/linalg/parallelistlbackend.hh