G+Smo  25.01.0
Geometry + Simulation Modules
 
Loading...
Searching...
No Matches
gsINSBlockPrecondBase< T, MatOrder > Class Template Reference

Detailed Description

template<class T, int MatOrder>
class gismo::gsINSBlockPrecondBase< T, MatOrder >

Base class for block preconditioners for linear systems arising from linearized Navier-Stokes of form.

\[ \left[ \begin{array}{cc} F & B^T \\ B & 0 \end{array} \right] \left[ \begin{array}{c} u \\ p \end{array} \right] = \left[ \begin{array}{c} f \\ g \end{array} \right], \]

.

+ Inheritance diagram for gsINSBlockPrecondBase< T, MatOrder >:
+ Collaboration diagram for gsINSBlockPrecondBase< T, MatOrder >:

Public Member Functions

virtual void apply (const gsMatrix< T > &input, gsMatrix< T > &x) const
 Apply the preconditioner. Computes the vector \fx = P^{-1} y\f.
 
virtual int cols () const
 Returns the number of columns of the preconditioner.
 
virtual std::string getName ()
 Returns the preconditioner name as a string.
 
 gsINSBlockPrecondBase (gsINSPrecondBlock< T > *Finv, gsLinearOperator< T > *B, gsINSPrecondBlock< T > *Sinv, const gsOptionList &opt)
 Constructor.
 
virtual int rows () const
 Returns the number of rows of the preconditioner.
 
virtual void setOptions (const gsOptionList &)
 Set options based on a gsOptionList object.
 
virtual void update (const std::map< std::string, gsSparseMatrix< T, MatOrder > > &mat)
 Update the preconditioner (new linearization or time step).
 

Static Public Member Functions

static gsOptionList defaultOptions ()
 Returns default preconditioner options as a gsOptionList object.
 
static gsIdentityOp< T > Identity (const index_t dim)
 Identity operator.
 
static uPtr make ()
 Returns a unique pointer to a newly created instance.
 
static uPtr make (gsINSPrecondBlock< T > *Finv, gsLinearOperator< T > *B, gsINSPrecondBlock< T > *Sinv, const gsOptionList &opt)
 Returns a unique pointer to a newly created instance.
 
static uPtr make (std::string precType, const std::map< std::string, gsSparseMatrix< T, MatOrder > > &mat, const gsOptionList &opt)
 Returns a unique pointer to a newly created instance of the given preconditioner type.
 

Protected Member Functions

void update (gsINSPrecondBlock< T > *Finv)
 Update the preconditioner (new linearization or time step). To be used when only the \fF\f block changes.
 
void update (gsINSPrecondBlock< T > *Finv, gsINSPrecondBlock< T > *Sinv)
 Update the preconditioner (new linearization or time step). To be used when both \fF\f and \fS\f block change.
 

Constructor & Destructor Documentation

◆ gsINSBlockPrecondBase()

template<class T , int MatOrder>
gsINSBlockPrecondBase ( gsINSPrecondBlock< T > *  Finv,
gsLinearOperator< T > *  B,
gsINSPrecondBlock< T > *  Sinv,
const gsOptionList opt 
)
inline

Constructor.

Parameters
[in]Finva pointer to the block implementing multiplication by the matrix \fF^{-1}\f
[in]Ba pointer to the block implementing multiplication by the matrix \fB^T\f
[in]Sinva pointer to the block implementing multiplication by the matrix \fS^{-1}\f
[in]opta list of options for the preconditioner

Member Function Documentation

◆ apply()

template<class T , int MatOrder>
void apply ( const gsMatrix< T > &  input,
gsMatrix< T > &  x 
) const
virtual

Apply the preconditioner. Computes the vector \fx = P^{-1} y\f.

Parameters
[in]inputa const reference the vector \f y \f
[out]xa reference to the resulting vector \f x \f

Implements gsLinearOperator< T >.

Reimplemented in gsINSBlockPrecondSIMPLE< T, MatOrder, BlockFType >, gsINSBlockPrecondSIMPLE< T, MatOrder, gsINSPrecondBlockF< T, MatOrder > >, gsINSBlockPrecondSIMPLER< T, MatOrder, BlockFType >, and gsINSBlockPrecondMSIMPLER< T, MatOrder, BlockFType >.

◆ make()

template<class T , int MatOrder>
gsINSPreconditioner< T, MatOrder >::uPtr make ( std::string  precType,
const std::map< std::string, gsSparseMatrix< T, MatOrder > > &  mat,
const gsOptionList opt 
)
staticinherited

Returns a unique pointer to a newly created instance of the given preconditioner type.

Parameters
[in]precTypethe reqiured preconditioner type as a string
[in]mata const reference to std::map of labeled matrices needed for construction of the preconditioner (assuming the following order: NS system matrix, mass matrix (velocity, pressure or both), other matrices)
[in]opta list of options for the preconditioner

◆ update() [1/3]

template<class T , int MatOrder>
virtual void update ( const std::map< std::string, gsSparseMatrix< T, MatOrder > > &  mat)
inlinevirtualinherited

Update the preconditioner (new linearization or time step).

Parameters
[in]mata const reference to std::map of updated matrices

◆ update() [2/3]

template<class T , int MatOrder>
void update ( gsINSPrecondBlock< T > *  Finv)
inlineprotected

Update the preconditioner (new linearization or time step). To be used when only the \fF\f block changes.

Parameters
[in]Finva pointer to the new \fF\f block

◆ update() [3/3]

template<class T , int MatOrder>
void update ( gsINSPrecondBlock< T > *  Finv,
gsINSPrecondBlock< T > *  Sinv 
)
inlineprotected

Update the preconditioner (new linearization or time step). To be used when both \fF\f and \fS\f block change.

Parameters
[in]Finva pointer to the new \fF\f block
[in]Sinva pointer to the new \fS\f block