Teko Version of the Day

Strategy for driving LSCPreconditionerFactory. More...
#include <Teko_LSCStrategy.hpp>
Public Member Functions  
virtual void  buildState (BlockedLinearOp &A, BlockPreconditionerState &state) const =0 
virtual LinearOp  getInvBQBt (const BlockedLinearOp &A, BlockPreconditionerState &state) const =0 
virtual LinearOp  getInvBHBt (const BlockedLinearOp &A, BlockPreconditionerState &state) const =0 
virtual LinearOp  getInvF (const BlockedLinearOp &A, BlockPreconditionerState &state) const =0 
virtual LinearOp  getOuterStabilization (const BlockedLinearOp &A, BlockPreconditionerState &state) const =0 
virtual LinearOp  getInnerStabilization (const BlockedLinearOp &A, BlockPreconditionerState &state) const =0 
virtual LinearOp  getInvMass (const BlockedLinearOp &A, BlockPreconditionerState &state) const =0 
virtual LinearOp  getHScaling (const BlockedLinearOp &A, BlockPreconditionerState &state) const =0 
virtual bool  useFullLDU () const =0 
virtual void  setSymmetric (bool isSymmetric)=0 
virtual void  initializeFromParameterList (const Teuchos::ParameterList &pl, const InverseLibrary &invLib) 
Initialize from a parameter list.  
virtual Teuchos::RCP < Teuchos::ParameterList >  getRequestedParameters () const 
For assiting in construction of the preconditioner.  
virtual bool  updateRequestedParameters (const Teuchos::ParameterList &pl) 
For assiting in construction of the preconditioner.  
void  setRequestHandler (const Teuchos::RCP< RequestHandler > &rh) 
This method sets the request handler for this object.  
Teuchos::RCP< RequestHandler >  getRequestHandler () const 
This method gets the request handler uses by this object. 
Strategy for driving LSCPreconditionerFactory.
Strategy for driving the LSCPreconditionerFactory. This class provides all the pieces required by the LSC preconditioner. The intent is that the user can overide them and build there own implementation. Though a fairly substantial implementation is provided in InvLSCStrategy
.
The basics of this method can be found in
[1] Elman, Howle, Shadid, Silvester, and Tuminaro, "Least Squares Preconditioners for Stabilized Discretizations of the NavierStokes Euqations," SISC2007.
[2] Elman, and Tuminaro, "Boundary Conditions in Approximate Commutator Preconditioners for the NavierStokes Equations," In press (8/2009)?
The Least Squares Commuator preconditioner provides a (nearly) Algebraic approximation of the Schur complement of the (Navier)Stokes system
The approximation to the Schur complement is
.
Where is typically a diagonal approximation of the mass matrix, and is an appropriate diagonal scaling matrix (see [2] for details). The scalars and are chosen to stabilize an unstable discretization (for the case of ). If the system is stable then they can be set to (see [1] for more details).
In order to approximate two decompositions can be chosen, a full LU decomposition and a purely upper triangular version. A full LU decomposition requires that the velocity convectiondiffusion operator ( ) is inverted twice, while an upper triangular approximation requires only a single inverse.
The methods of this strategy provide the different pieces. For instance getInvF
provides . Similarly there are calls to get the inverses of , , and as well as the operator. All these methods are required by the LSCPreconditionerFactory
. Additionally there is a buildState
method that is called everytime a preconditiner is (re)constructed. This is to allow for any preprocessing neccessary to be handled.
The final set of methods help construct a LSCStrategy object, they are primarily used by the parameter list construction inteface. They are more advanced and can be ignored by initial implementations of this class.
Definition at line 119 of file Teko_LSCStrategy.hpp.
virtual void Teko::NS::LSCStrategy::buildState  (  BlockedLinearOp &  A, 
BlockPreconditionerState &  state  
)  const [pure virtual] 
This informs the strategy object to build the state associated with this operator.
[in]  A  The linear operator to be preconditioned by LSC. 
[in]  state  State object for storying reusable information about the operator A. 
Implemented in Teko::NS::InvLSCStrategy, Teko::NS::LSCSIMPLECStrategy, and Teko::NS::PresLaplaceLSCStrategy.
virtual LinearOp Teko::NS::LSCStrategy::getInvBQBt  (  const BlockedLinearOp &  A, 
BlockPreconditionerState &  state  
)  const [pure virtual] 
Get the inverse of .
[in]  A  The linear operator to be preconditioned by LSC. 
[in]  state  State object for storying reusable information about the operator A. 
Implemented in Teko::NS::InvLSCStrategy, Teko::NS::LSCSIMPLECStrategy, and Teko::NS::PresLaplaceLSCStrategy.
virtual LinearOp Teko::NS::LSCStrategy::getInvBHBt  (  const BlockedLinearOp &  A, 
BlockPreconditionerState &  state  
)  const [pure virtual] 
Get the inverse of .
[in]  A  The linear operator to be preconditioned by LSC. 
[in]  state  State object for storying reusable information about the operator A. 
Implemented in Teko::NS::InvLSCStrategy, Teko::NS::LSCSIMPLECStrategy, and Teko::NS::PresLaplaceLSCStrategy.
virtual LinearOp Teko::NS::LSCStrategy::getInvF  (  const BlockedLinearOp &  A, 
BlockPreconditionerState &  state  
)  const [pure virtual] 
Get the inverse of the block.
[in]  A  The linear operator to be preconditioned by LSC. 
[in]  state  State object for storying reusable information about the operator A. 
Implemented in Teko::NS::InvLSCStrategy, Teko::NS::LSCSIMPLECStrategy, and Teko::NS::PresLaplaceLSCStrategy.
virtual LinearOp Teko::NS::LSCStrategy::getOuterStabilization  (  const BlockedLinearOp &  A, 
BlockPreconditionerState &  state  
)  const [pure virtual] 
Get the inverse to stablized stabilizing the Schur complement approximation using a placement on the ``outside''. That is what is the value for . This quantity may be null.
[in]  A  The linear operator to be preconditioned by LSC. 
[in]  state  State object for storying reusable information about the operator A. 
Implemented in Teko::NS::InvLSCStrategy, Teko::NS::LSCSIMPLECStrategy, and Teko::NS::PresLaplaceLSCStrategy.
virtual LinearOp Teko::NS::LSCStrategy::getInnerStabilization  (  const BlockedLinearOp &  A, 
BlockPreconditionerState &  state  
)  const [pure virtual] 
Get the inverse to stablized stabilizing the Schur complement approximation using a placement on the ``inside''. That is what is the value for . This quantity may be null.
[in]  A  The linear operator to be preconditioned by LSC. 
[in]  state  State object for storying reusable information about the operator A. 
Implemented in Teko::NS::InvLSCStrategy, Teko::NS::LSCSIMPLECStrategy, and Teko::NS::PresLaplaceLSCStrategy.
virtual LinearOp Teko::NS::LSCStrategy::getInvMass  (  const BlockedLinearOp &  A, 
BlockPreconditionerState &  state  
)  const [pure virtual] 
Get the inverse mass matrix.
[in]  A  The linear operator to be preconditioned by LSC. 
[in]  state  State object for storying reusable information about the operator A. 
Implemented in Teko::NS::InvLSCStrategy, Teko::NS::LSCSIMPLECStrategy, and Teko::NS::PresLaplaceLSCStrategy.
virtual LinearOp Teko::NS::LSCStrategy::getHScaling  (  const BlockedLinearOp &  A, 
BlockPreconditionerState &  state  
)  const [pure virtual] 
Get the scaling matrix.
[in]  A  The linear operator to be preconditioned by LSC. 
[in]  state  State object for storying reusable information about the operator A. 
Implemented in Teko::NS::InvLSCStrategy, Teko::NS::LSCSIMPLECStrategy, and Teko::NS::PresLaplaceLSCStrategy.
virtual bool Teko::NS::LSCStrategy::useFullLDU  (  )  const [pure virtual] 
Should the approximation of the inverse use a full LDU decomposition, or is a upper triangular approximation sufficient.
Implemented in Teko::NS::InvLSCStrategy, Teko::NS::LSCSIMPLECStrategy, and Teko::NS::PresLaplaceLSCStrategy.
virtual void Teko::NS::LSCStrategy::setSymmetric  (  bool  isSymmetric  )  [pure virtual] 
Tell strategy that this operator is supposed to be symmetric. Behavior of LSC is slightly different for nonsymmetric case.
[in]  isSymmetric  Is this operator symmetric? 
Implemented in Teko::NS::InvLSCStrategy, Teko::NS::LSCSIMPLECStrategy, and Teko::NS::PresLaplaceLSCStrategy.
virtual void Teko::NS::LSCStrategy::initializeFromParameterList  (  const Teuchos::ParameterList &  pl, 
const InverseLibrary &  invLib  
)  [inline, virtual] 
Initialize from a parameter list.
Reimplemented in Teko::NS::InvLSCStrategy, Teko::NS::LSCSIMPLECStrategy, and Teko::NS::PresLaplaceLSCStrategy.
Definition at line 234 of file Teko_LSCStrategy.hpp.
virtual Teuchos::RCP<Teuchos::ParameterList> Teko::NS::LSCStrategy::getRequestedParameters  (  )  const [inline, virtual] 
For assiting in construction of the preconditioner.
Reimplemented in Teko::NS::InvLSCStrategy, and Teko::NS::PresLaplaceLSCStrategy.
Definition at line 237 of file Teko_LSCStrategy.hpp.
virtual bool Teko::NS::LSCStrategy::updateRequestedParameters  (  const Teuchos::ParameterList &  pl  )  [inline, virtual] 
For assiting in construction of the preconditioner.
Reimplemented in Teko::NS::InvLSCStrategy, and Teko::NS::PresLaplaceLSCStrategy.
Definition at line 240 of file Teko_LSCStrategy.hpp.
void Teko::NS::LSCStrategy::setRequestHandler  (  const Teuchos::RCP< RequestHandler > &  rh  )  [inline] 
This method sets the request handler for this object.
Definition at line 243 of file Teko_LSCStrategy.hpp.
Teuchos::RCP<RequestHandler> Teko::NS::LSCStrategy::getRequestHandler  (  )  const [inline] 
This method gets the request handler uses by this object.
Definition at line 247 of file Teko_LSCStrategy.hpp.