Opm::Elasticity::MortarSchurPre< PrecondElasticityBlock > Class Template Reference

#include <mortar_schur_precond.hpp>

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

Public Member Functions

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

Protected Attributes

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

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

◆ ~MortarSchurPre()

template<class PrecondElasticityBlock >
virtual Opm::Elasticity::MortarSchurPre< PrecondElasticityBlock >::~MortarSchurPre ( )
inlinevirtual

Destructor.

Member Function Documentation

◆ apply()

◆ category()

template<class PrecondElasticityBlock >
Dune::SolverCategory::Category Opm::Elasticity::MortarSchurPre< PrecondElasticityBlock >::category ( ) const
inlineoverride

◆ post()

template<class PrecondElasticityBlock >
void Opm::Elasticity::MortarSchurPre< PrecondElasticityBlock >::post ( Vector x)
inlineoverride

Dummy post-process function.

References Opm::Elasticity::MortarSchurPre< PrecondElasticityBlock >::Apre.

◆ pre()

Member Data Documentation

◆ Apre

template<class PrecondElasticityBlock >
PrecondElasticityBlock& Opm::Elasticity::MortarSchurPre< PrecondElasticityBlock >::Apre
protected

◆ B

template<class PrecondElasticityBlock >
const Matrix& Opm::Elasticity::MortarSchurPre< PrecondElasticityBlock >::B
protected

The mortar coupling matrix.

Referenced by Opm::Elasticity::MortarSchurPre< PrecondElasticityBlock >::apply().

◆ Lpre

template<class PrecondElasticityBlock >
LUSolver Opm::Elasticity::MortarSchurPre< PrecondElasticityBlock >::Lpre
protected

Linear solver for the multiplier block.

Referenced by Opm::Elasticity::MortarSchurPre< PrecondElasticityBlock >::apply().

◆ M

template<class PrecondElasticityBlock >
int Opm::Elasticity::MortarSchurPre< PrecondElasticityBlock >::M
protected

Number of multiplier DOFs.

Referenced by Opm::Elasticity::MortarSchurPre< PrecondElasticityBlock >::apply().

◆ N

template<class PrecondElasticityBlock >
int Opm::Elasticity::MortarSchurPre< PrecondElasticityBlock >::N
protected

◆ symmetric

template<class PrecondElasticityBlock >
bool Opm::Elasticity::MortarSchurPre< PrecondElasticityBlock >::symmetric
protected

Whether or not to use a symmetric preconditioner.

Referenced by Opm::Elasticity::MortarSchurPre< PrecondElasticityBlock >::apply().


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