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

#include <mortar_schur_precond.hpp>

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

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. More...
 
virtual void pre (Vector &x, Vector &b)
 Preprocess preconditioner. More...
 
virtual void apply (Vector &v, const Vector &d)
 Applies the preconditioner. More...
 
virtual void post (Vector &x)
 Dummy post-process function. More...
 

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 !

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
template<class PrecondElasticityBlock >
virtual Opm::Elasticity::MortarSchurPre< PrecondElasticityBlock >::~MortarSchurPre ( )
inlinevirtual

Destructor.

Member Function Documentation

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

Dummy post-process function.

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

template<class PrecondElasticityBlock >
virtual void Opm::Elasticity::MortarSchurPre< PrecondElasticityBlock >::pre ( Vector x,
Vector b 
)
inlinevirtual

Member Data Documentation

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

The mortar coupling matrix.

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

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

Linear solver for the multiplier block.

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

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

Number of multiplier DOFs.

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

template<class PrecondElasticityBlock >
int Opm::Elasticity::MortarSchurPre< PrecondElasticityBlock >::N
protected
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: