opm-upscaling
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]P_The multiplier block with diagonal A approximation
[in]B_The mortar coupling matrix
[in]Apre_A preconfigured preconditioner for A
[in]symmetric_If 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: