Teko  Version of the Day
 All Classes Files Functions Variables Pages
Public Member Functions | List of all members
Teko::NS::ModALPreconditionerFactory Class Reference

Modified augmented Lagrangian-based preconditioner for incompressible Navier-Stokes equations. More...

#include <Teko_ModALPreconditionerFactory.hpp>

Inheritance diagram for Teko::NS::ModALPreconditionerFactory:
Inheritance graph
[legend]

Public Member Functions

void setPressureMassMatrix (const LinearOp &pressureMassMatrix)
 
void setGamma (double gamma)
 
virtual LinearOp buildPreconditionerOperator (BlockedLinearOp &alOp, BlockPreconditionerState &state) const
 
virtual Teuchos::RCP
< PreconditionerState
buildPreconditionerState () const
 
- Public Member Functions inherited from Teko::BlockPreconditionerFactory
RCP< BlockPreconditionerStatebuildBlockPreconditionerState () const
 Function that constructs a BlockPreconditionerState object. More...
 
virtual LinearOp buildPreconditionerOperator (LinearOp &blo, PreconditionerState &state) const
 Function that is called to build the preconditioner for the linear operator that is passed in. More...
 
bool isCompatible (const Thyra::LinearOpSourceBase< double > &fwdOpSrc) const
 is this operator compatiable with the preconditioner factory? More...
 
- Public Member Functions inherited from Teko::PreconditionerFactory
void setInverseLibrary (const Teuchos::RCP< const InverseLibrary > &il)
 Set the inverse library used by this preconditioner factory. More...
 
Teuchos::RCP< const
InverseLibrary > 
getInverseLibrary () const
 Get the inverse library used by this preconditioner factory. More...
 
void setRequestHandler (const Teuchos::RCP< RequestHandler > &rh)
 Set the request handler with pointers to the appropriate callbacks. More...
 
Teuchos::RCP< RequestHandlergetRequestHandler () const
 Get the request handler with pointers to the appropriate callbacks. More...
 
virtual void initializeFromParameterList (const Teuchos::ParameterList &)
 This function builds the internals of the preconditioner factory from a parameter list. More...
 
virtual Teuchos::RCP
< Teuchos::ParameterList > 
getRequestedParameters () const
 Request the additional parameters this preconditioner factory needs. More...
 
virtual bool updateRequestedParameters (const Teuchos::ParameterList &)
 Update this object with the fields from a parameter list. More...
 
bool isCompatible (const Thyra::LinearOpSourceBase< double > &fwdOpSrc) const
 is this operator compatiable with the preconditioner factory? More...
 
Teuchos::RCP
< Thyra::PreconditionerBase
< double > > 
createPrec () const
 create an instance of the preconditioner More...
 
void initializePrec (const Teuchos::RCP< const Thyra::LinearOpSourceBase< double > > &fwdOpSrc, const Teuchos::RCP< const Thyra::MultiVectorBase< double > > &solnVec, Thyra::PreconditionerBase< double > *precOp, const Thyra::ESupportSolveUse supportSolveUse) const
 initialize a newly created preconditioner object More...
 
void initializePrec (const Teuchos::RCP< const Thyra::LinearOpSourceBase< double > > &fwdOpSrc, Thyra::PreconditionerBase< double > *precOp, const Thyra::ESupportSolveUse supportSolveUse) const
 initialize a newly created preconditioner object More...
 
void uninitializePrec (Thyra::PreconditionerBase< double > *prec, Teuchos::RCP< const Thyra::LinearOpSourceBase< double > > *fwdOpSrc, Thyra::ESupportSolveUse *supportSolveUse) const
 wipe clean a already initialized preconditioner object More...
 
void setParameterList (const Teuchos::RCP< Teuchos::ParameterList > &paramList)
 Set parameters from a parameter list and return with default values. More...
 
Teuchos::RCP
< Teuchos::ParameterList > 
getNonconstParameterList ()
 Get the parameter list that was set using setParameterList(). More...
 
Teuchos::RCP
< Teuchos::ParameterList > 
unsetParameterList ()
 Unset the parameter list that was set using setParameterList(). More...
 

Additional Inherited Members

- Static Public Member Functions inherited from Teko::PreconditionerFactory
static Teuchos::RCP
< PreconditionerFactory
buildPreconditionerFactory (const std::string &name, const Teuchos::ParameterList &settings, const Teuchos::RCP< const InverseLibrary > &invLib=Teuchos::null)
 Builder function for creating preconditioner factories (yes this is a factory factory). More...
 
static void addPreconditionerFactory (const std::string &name, const Teuchos::RCP< Cloneable > &clone)
 Add a preconditioner factory to the builder. This is done using the clone pattern. More...
 
static void getPreconditionerFactoryNames (std::vector< std::string > &names)
 Get the names of the block preconditioner factories. More...
 
- Protected Attributes inherited from Teko::PreconditionerFactory
Teuchos::RCP
< Teuchos::ParameterList > 
paramList_
 for ParameterListAcceptor More...
 
Teuchos::RCP< RequestHandlercallbackHandler_
 For handling requests and send requests back to the user. More...
 

Detailed Description

Modified augmented Lagrangian-based preconditioner for incompressible Navier-Stokes equations.

This class implements sparse matrix vector multiplication for augmented Lagrangian-based preconditioners. Details can be found in the following papers:

[1] Benzi, M. A. Olshanskii and Z. Wang, Modified Augmented Lagrangian Preconditioners for the Incompressible Navier-Stokes Equations, International Journal for Numerical Methods in Fluids, 66 (2011), pp. 486-508.

[2] M. Benzi and Z. Wang, Analysis of Augmented Lagrangian-Based Preconditioners for the Steady Incompressible Navier-Stokes Equations, SIAM J. Scientific Computing, 33 (2011), pp. 2761-2784.

Suppose we are solving the following linear system:

$ \left[ \begin{array}{cc} A & B^T \\ B & -C \end{array} \right] \left[ \begin{array}{c} u \\ p \end{array} \right] = \left[ \begin{array}{c} f \\ g \end{array} \right]. $

The equivalent augmented Lagrangian (AL) formulation is:

$ \left[ \begin{array}{cc} A + \gamma B^T W^{-1} B & B^T - \gamma B^T W^{-1} C \\ B & -C \end{array} \right] \left[ \begin{array}{c} u \\ p \end{array} \right] = \left[ \begin{array}{c} f + \gamma B^T W^{-1} g \\ g \end{array} \right]. $

Here $ W $ can be take as the diagonal of the pressure mass matrix and $ \gamma $ is a positive number.

If $ A = (A_{11}, A_{12}; A_{21}, A_{22}) \quad \mathrm{and} \quad B = (B_1, B_2) $,

then the modified AL preconditioner is defined as

$ \left[ \begin{array}{ccc} A_{11} + \gamma B_1^T W^{-1} B_1^T & A_{12} + \gamma B_1^T W^{-1} B_2^T & B_1^T - \gamma B_1^T W^{-1} C \\ 0 & A_{22} + \gamma B_2^T W^{-1} B_2^T & B_1^T - \gamma B_2^T W^{-1} C \\ 0 & 0 & S \end{array} \right]. $

More details (analysis, numerical results) can be found in [2].

Definition at line 110 of file Teko_ModALPreconditionerFactory.hpp.

Member Function Documentation

void Teko::NS::ModALPreconditionerFactory::setPressureMassMatrix ( const LinearOp &  pressureMassMatrix)
inline

Set pressure mass matrix.

Parameters
[in]pressureMassMatrixPressure mass matrix.

Definition at line 133 of file Teko_ModALPreconditionerFactory.hpp.

void Teko::NS::ModALPreconditionerFactory::setGamma ( double  gamma)
inline

Set the augmentation parameter gamma.

Parameters
[in]gammaAugmentation paramter.

Definition at line 142 of file Teko_ModALPreconditionerFactory.hpp.

LinearOp Teko::NS::ModALPreconditionerFactory::buildPreconditionerOperator ( BlockedLinearOp &  alOp,
BlockPreconditionerState state 
) const
virtual

Build modified AL preconditioner.

Parameters
[in]alOpThe AL operator.
[in]stateState object for storying reusable information about the AL operator.

Implements Teko::BlockPreconditionerFactory.

Definition at line 57 of file Teko_ModALPreconditionerFactory.cpp.

virtual Teuchos::RCP<PreconditionerState> Teko::NS::ModALPreconditionerFactory::buildPreconditionerState ( ) const
inlinevirtual

Build the ModALPrecondState object.

Reimplemented from Teko::BlockPreconditionerFactory.

Definition at line 158 of file Teko_ModALPreconditionerFactory.hpp.


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