My Project
|
Provides all unmodified linear solvers from dune-istl. More...
#include <parallelistlbackend.hh>
Public Member Functions | |
ParallelIstlSolverBackend (const Simulator &simulator) | |
![]() | |
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 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) |
![]() | |
Implementation & | asImp_ () |
const Implementation & | asImp_ () const |
void | cleanup_ () |
std::shared_ptr< ParallelPreconditioner > | preparePreconditioner_ () |
void | cleanupPreconditioner_ () |
void | writeOverlapToVTK_ () |
Protected Attributes | |
friend | ParentType |
LinearSolverWrapper | solverWrapper_ |
![]() | |
const Simulator & | simulator_ |
int | gridSequenceNumber_ |
size_t | lastIterations_ |
OverlappingMatrix * | overlappingMatrix_ |
OverlappingVector * | overlappingb_ |
OverlappingVector * | overlappingx_ |
PreconditionerWrapper | precWrapper_ |
Additional Inherited Members | |
![]() | |
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 |
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 iterationSteepestDescent:
The steepest descent solverConjugatedGradients:
A conjugated gradients solverBiCGStab:
A stabilized bi-conjugated gradients solverMinRes:
A solver based on the minimized residual algorithmRestartedGMRes:
A restarted GMRES solverChosing the preconditioner works in an analogous way:
Where the choices possible for '$PRECONDITIONER'
are: