12 #ifndef SCHUR_PRECOND_HPP_ 13 #define SCHUR_PRECOND_HPP_ 15 #include <dune/istl/preconditioners.hh> 16 #include <dune/istl/matrixmatrix.hh> 22 namespace Elasticity {
36 template<
class PrecondElasticityBlock>
51 PrecondElasticityBlock& Apre_,
bool symmetric_=
false) :
69 Apre.pre(tempx, tempb);
82 Dune::InverseOperatorResult r;
84 temp2.resize(temp.size(),
false);
85 Lpre.apply(temp2, temp, r);
93 temp2.resize(
N,
false);
95 Apre.apply(temp2, temp);
Helper class with some matrix operations.
Preconditioners for elasticity upscaling.
Dune::BlockVector< Dune::FieldVector< double, 1 > > Vector
A vector holding our RHS.
Definition: matrixops.hpp:33
bool symmetric
Whether or not to use a symmetric preconditioner.
Definition: mortar_schur_precond.hpp:121
int N
Number of displacement DOFs.
Definition: mortar_schur_precond.hpp:112
virtual ~MortarSchurPre()
Destructor.
Definition: mortar_schur_precond.hpp:58
The category the preconditioner is part of.
Definition: mortar_schur_precond.hpp:42
virtual void pre(Vector &x, Vector &b)
Preprocess preconditioner.
Definition: mortar_schur_precond.hpp:63
Class for immiscible dead oil and dry gas.
Definition: applier.hpp:18
virtual void post(Vector &x)
Dummy post-process function.
Definition: mortar_schur_precond.hpp:100
Dune::BCRSMatrix< Dune::FieldMatrix< double, 1, 1 > > Matrix
A sparse matrix holding our operator.
Definition: matrixops.hpp:27
static void injectBlock(Vector &x, const Vector &y, int len, int start=0)
Inject a range of indices into a vector.
Definition: mortar_utils.hpp:36
This implements a Schur-decomposition based preconditioner for the mortar-elasticity system [A B] [B'...
Definition: mortar_schur_precond.hpp:37
static void extractBlock(Vector &x, const Vector &y, int len, int start=0)
Extract a range of indices from a vector.
Definition: mortar_utils.hpp:25
MortarSchurPre(const Matrix &P_, const Matrix &B_, PrecondElasticityBlock &Apre_, bool symmetric_=false)
Constructor.
Definition: mortar_schur_precond.hpp:50
PrecondElasticityBlock & Apre
The preconditioner for the elasticity operator.
Definition: mortar_schur_precond.hpp:106
const Matrix & B
The mortar coupling matrix.
Definition: mortar_schur_precond.hpp:109
LUSolver Lpre
Linear solver for the multiplier block.
Definition: mortar_schur_precond.hpp:118
int M
Number of multiplier DOFs.
Definition: mortar_schur_precond.hpp:115
virtual void apply(Vector &v, const Vector &d)
Applies the preconditioner.
Definition: mortar_schur_precond.hpp:77