template<class TypeTag>
class Ewoms::Linear::ParallelIterativeSolverBackend< TypeTag >
Implements a generic linear solver abstraction.
This class' intention is to be used in conjunction with the vertex-centered finite volume discretization, so it assumes that the vertices are the only degrees of freedom. It is also capable of parallel executions on arbitrary grids and is generic in the sense that it allows to combine any linear solver implemented by Dune-ISTL with any preconditioner (except the algebraic multigrid preconditioner). To set the linear solver, use
Ewoms::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:
Ewoms::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:
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
Solver:
A BiCGSTAB solver wrapped into the preconditioner interface (may be useful for parallel computations)