My Project
Loading...
Searching...
No Matches
Opm::Elasticity::MortarSchurPre< PrecondElasticityBlock > Class Template Reference

This implements a Schur-decomposition based preconditioner for the mortar-elasticity system [A B] [B' ]. More...

#include <mortar_schur_precond.hpp>

Inheritance diagram for Opm::Elasticity::MortarSchurPre< PrecondElasticityBlock >:

Public Member Functions

 MortarSchurPre (const Matrix &P_, const Matrix &B_, PrecondElasticityBlock &Apre_, bool symmetric_=false)
 Constructor.
 
virtual ~MortarSchurPre ()
 Destructor.
 
void pre (Vector &x, Vector &b) override
 Preprocess preconditioner.
 
void apply (Vector &v, const Vector &d) override
 Applies the preconditioner.
 
void post (Vector &x) override
 Dummy post-process function.
 
Dune::SolverCategory::Category category () const override
 

Protected Attributes

PrecondElasticityBlock & Apre
 The preconditioner for the elasticity operator.
 
const MatrixB
 The mortar coupling matrix.
 
int N
 Number of displacement DOFs.
 
int M
 Number of multiplier DOFs.
 
LUSolver Lpre
 Linear solver for the multiplier block.
 
bool symmetric
 Whether or not to use a symmetric preconditioner.
 

Detailed Description

template<class PrecondElasticityBlock>
class Opm::Elasticity::MortarSchurPre< PrecondElasticityBlock >

This implements a Schur-decomposition based preconditioner for the mortar-elasticity system [A B] [B' ].

The preconditioner is [Apre B] [ P] Here Apre is some preconditioner for A and P some preconditioner for S = B^TA^-1B !

Constructor & Destructor Documentation

◆ MortarSchurPre()

template<class PrecondElasticityBlock >
Opm::Elasticity::MortarSchurPre< PrecondElasticityBlock >::MortarSchurPre ( const Matrix P_,
const Matrix B_,
PrecondElasticityBlock &  Apre_,
bool  symmetric_ = false 
)
inline

Constructor.

Parameters
[in]PThe multiplier block with diagonal A approximation
[in]BThe mortar coupling matrix
[in]Apre_A preconfigured preconditioner for A
[in]symmetricIf true, use symmetric preconditioning

Member Function Documentation

◆ apply()

template<class PrecondElasticityBlock >
void Opm::Elasticity::MortarSchurPre< PrecondElasticityBlock >::apply ( Vector v,
const Vector d 
)
inlineoverride

Applies the preconditioner.

Parameters
[out]vThe resulting vector
[in]dThe vector to apply the preconditioner to

The documentation for this class was generated from the following file: