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 &, const InverseLibrary &) |
Initialize from a parameter list. More... | |
virtual Teuchos::RCP < Teuchos::ParameterList > | getRequestedParameters () const |
For assiting in construction of the preconditioner. More... | |
virtual bool | updateRequestedParameters (const Teuchos::ParameterList &) |
For assiting in construction of the preconditioner. More... | |
void | setRequestHandler (const Teuchos::RCP< RequestHandler > &rh) |
This method sets the request handler for this object. More... | |
Teuchos::RCP< RequestHandler > | getRequestHandler () const |
This method gets the request handler uses by this object. More... | |
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 Navier-Stokes Euqations," SISC-2007.
[2] Elman, and Tuminaro, "Boundary Conditions in Approximate Commutator Preconditioners for the Navier-Stokes 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 convection-diffusion 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.
|
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::PresLaplaceLSCStrategy, and Teko::NS::LSCSIMPLECStrategy.
|
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::PresLaplaceLSCStrategy, and Teko::NS::LSCSIMPLECStrategy.
|
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::PresLaplaceLSCStrategy, and Teko::NS::LSCSIMPLECStrategy.
|
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::PresLaplaceLSCStrategy, and Teko::NS::LSCSIMPLECStrategy.
|
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::PresLaplaceLSCStrategy, and Teko::NS::LSCSIMPLECStrategy.
|
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::PresLaplaceLSCStrategy, and Teko::NS::LSCSIMPLECStrategy.
|
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::PresLaplaceLSCStrategy, and Teko::NS::LSCSIMPLECStrategy.
|
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::PresLaplaceLSCStrategy, and Teko::NS::LSCSIMPLECStrategy.
|
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::PresLaplaceLSCStrategy, and Teko::NS::LSCSIMPLECStrategy.
|
pure virtual |
Tell strategy that this operator is supposed to be symmetric. Behavior of LSC is slightly different for non-symmetric case.
[in] | isSymmetric | Is this operator symmetric? |
Implemented in Teko::NS::LSCSIMPLECStrategy, Teko::NS::InvLSCStrategy, and Teko::NS::PresLaplaceLSCStrategy.
|
inlinevirtual |
Initialize from a parameter list.
Reimplemented in Teko::NS::InvLSCStrategy, Teko::NS::PresLaplaceLSCStrategy, and Teko::NS::LSCSIMPLECStrategy.
Definition at line 234 of file Teko_LSCStrategy.hpp.
|
inlinevirtual |
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.
|
inlinevirtual |
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.
|
inline |
This method sets the request handler for this object.
Definition at line 243 of file Teko_LSCStrategy.hpp.
|
inline |
This method gets the request handler uses by this object.
Definition at line 247 of file Teko_LSCStrategy.hpp.