All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
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 Types

enum  { category =Dune::SolverCategory::sequential }
 

Public Member Functions

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

Protected Attributes

PrecondElasticityBlock & Apre
 The preconditioner for the elasticity operator.
 
const Matrix & B
 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

!

Member Enumeration Documentation

template<class PrecondElasticityBlock >
anonymous enum
Enumerator
category 

The category the preconditioner is part of.

Constructor & Destructor Documentation

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

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

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: