A Stokes preconditioner (saddle-point problem) for the problem \( \begin{pmatrix} A & B \\ C & 0 \end{pmatrix} \begin{pmatrix} u \\ p \end{pmatrix} = \begin{pmatrix} f \\ g \end{pmatrix}, \). More...
#include <dumux/linear/stokes_solver.hh>
where A is the discrete velocity operator and B and C are discrete gradient and divergence operators. This preconditioner is especially suited for solving the incompressible Stokes equations.
M | Type of the matrix. |
X | Type of the update. |
Y | Type of the defect. |
l | Preconditioner block level |
Public Types | |
using | matrix_type = M |
The matrix type the preconditioner is for. More... | |
using | domain_type = X |
The domain type of the preconditioner. More... | |
using | range_type = Y |
The range type of the preconditioner. More... | |
using | field_type = typename X::field_type |
The field type of the preconditioner. More... | |
using | scalar_field_type = Dune::Simd::Scalar< field_type > |
Scalar type underlying the field_type. More... | |
using | PressureLinearOperator = Dune::MatrixAdapter< P, V, V > |
the type of the pressure operator More... | |
Public Member Functions | |
StokesPreconditioner (const std::shared_ptr< const Dune::AssembledLinearOperator< M, X, Y > > &fullLinearOperator, const std::shared_ptr< const PressureLinearOperator > &pressureLinearOperator, const Dune::ParameterTree ¶ms) | |
Constructor. More... | |
void | pre (X &update, Y ¤tDefect) override |
Prepare the preconditioner. More... | |
void | apply (X &update, const Y ¤tDefect) override |
Apply the preconditioner. More... | |
void | post (X &update) override |
Clean up. More... | |
Dune::SolverCategory::Category | category () const override |
Category of the preconditioner (see SolverCategory::Category) More... | |
using Dumux::Detail::StokesPreconditioner< M, X, Y, l >::domain_type = X |
using Dumux::Detail::StokesPreconditioner< M, X, Y, l >::field_type = typename X::field_type |
using Dumux::Detail::StokesPreconditioner< M, X, Y, l >::matrix_type = M |
using Dumux::Detail::StokesPreconditioner< M, X, Y, l >::PressureLinearOperator = Dune::MatrixAdapter<P,V,V> |
using Dumux::Detail::StokesPreconditioner< M, X, Y, l >::range_type = Y |
using Dumux::Detail::StokesPreconditioner< M, X, Y, l >::scalar_field_type = Dune::Simd::Scalar<field_type> |
|
inline |
fullLinearOperator | the Stokes linear operator |
pressureLinearOperator | the linear operator to be used for the pressure space preconditioner |
params | a parameter tree for the preconditioner configuration |
|
inlineoverride |
update | The update to be computed. |
currentDefect | The current defect. |
The currentDefect has be be in a consistent representation, Definition 2.3 Blatt and Bastian (2009) https://doi.org/10.1504/IJCSE.2008.021112 The update is initially zero. At exit the update has to be in a consistent representation. This usually requires communication.
|
inlineoverride |
|
inlineoverride |
|
inlineoverride |