A factory that creates a block Gauss Seidel preconditioner. The user must specify the solvers (or preconditioners) to use to approximately invert the diagonal operators. More...
#include <Teko_GaussSeidelPreconditionerFactory.hpp>

Public Member Functions | |
| LinearOp | buildPreconditionerOperator (BlockedLinearOp &blo, BlockPreconditionerState &state) const |
| Create the Gauss-Seidel preconditioner operator. | |
Constructors. | |
| GaussSeidelPreconditionerFactory (TriSolveType solveType, const LinearOp &invD0, const LinearOp &invD1) | |
| GaussSeidelPreconditionerFactory (TriSolveType solveType, const RCP< const BlockInvDiagonalStrategy > &strategy) | |
| GaussSeidelPreconditionerFactory () | |
Protected Member Functions | |
| virtual void | initializeFromParameterList (const Teuchos::ParameterList &pl) |
| Initialize from a parameter list. | |
Protected Attributes | |
| Teuchos::RCP< const BlockInvDiagonalStrategy > | invOpsStrategy_ |
| some members | |
A factory that creates a block Gauss Seidel preconditioner. The user must specify the solvers (or preconditioners) to use to approximately invert the diagonal operators.
A factory that creates a block Gauss Seidel preconditioner. The user must specify the solvers (or preconditioners) to use to approximately invert the diagonal operators.
To invoke this preconditioner using the XML file a diagonal inverse needs to be specified. For example the following XML code creates a Gauss-Seidel preconditioner called "GS-Outer" using Amesos (a direct solver) to invert the diagonal blocks. This will invert the lower triangular portion of the matrix.
<ParameterList name="GS-Outer">
<Parameter name="Type" type="string" value="Block Gauss-Seidel"/>
<Parameter name="Use Upper Triangle" type="bool" value="false"/>
<Parameter name="Inverse Type" type="string" value="Amesos"/>
</ParameterList>
Or if you want to specify a different inverse factory for a particular diagonal you can use
<ParameterList name="GS-Outer">
<Parameter name="Type" type="string" value="Block Gauss-Seidel"/>
<Parameter name="Use Upper Triangle" type="bool" value="false"/>
<Parameter name="Inverse Type" type="string" value="DefaultInverse"/>
<Parameter name="Inverse Type 1" type="string" value="InverseOfFirstDigonalEntry"/>
<Parameter name="Inverse Type 3" type="string" value="InverseOfThirdDigonalEntry"/>
</ParameterList>
Notice that the "Inverse Type" parameter is now a default, and that you can specify each diagonal inverse on its own. The diagonal entries run from 1...N where N is the number of block rows. So the solver "InverseOfFirstDiagonalEntry" will be used for the first diagonal block, for the second "DefaultInverse" will be used, for the third "InverseOfThirdDigonalEntry" will be used, and for any further diagonal blocks "DefaultInverse" will be used.
Definition at line 102 of file Teko_GaussSeidelPreconditionerFactory.hpp.
| Teko::GaussSeidelPreconditionerFactory::GaussSeidelPreconditionerFactory | ( | TriSolveType | solveType, |
| const LinearOp & | invD0, | ||
| const LinearOp & | invD1 | ||
| ) |
Construct a PreconditionerFactory assuming a specific block
matrix. This case is a simple one.
Definition at line 57 of file Teko_GaussSeidelPreconditionerFactory.cpp.
| Teko::GaussSeidelPreconditionerFactory::GaussSeidelPreconditionerFactory | ( | TriSolveType | solveType, |
| const RCP< const BlockInvDiagonalStrategy > & | strategy | ||
| ) |
The most flexible JacobiPreconditionerFactory constructor. Pass in a generally defined BlockInvDiagonalStrategy to use the full generality of this class.
Definition at line 61 of file Teko_GaussSeidelPreconditionerFactory.cpp.
Build an empty Gauss-Seidel preconditioner factory
Definition at line 65 of file Teko_GaussSeidelPreconditionerFactory.cpp.
| LinearOp Teko::GaussSeidelPreconditionerFactory::buildPreconditionerOperator | ( | BlockedLinearOp & | blo, |
| BlockPreconditionerState & | state | ||
| ) | const [virtual] |
Create the Gauss-Seidel preconditioner operator.
This method breaks apart the BlockLinearOp and builds a block diagonal preconditioner. The inverse of the diagonals are specified by the BlockInvDiagonalStrategy object.
Implements Teko::BlockPreconditionerFactory.
Definition at line 69 of file Teko_GaussSeidelPreconditionerFactory.cpp.
| void Teko::GaussSeidelPreconditionerFactory::initializeFromParameterList | ( | const Teuchos::ParameterList & | pl | ) | [protected, virtual] |
Initialize from a parameter list.
Reimplemented from Teko::PreconditionerFactory.
Definition at line 98 of file Teko_GaussSeidelPreconditionerFactory.cpp.
Teuchos::RCP<const BlockInvDiagonalStrategy> Teko::GaussSeidelPreconditionerFactory::invOpsStrategy_ [protected] |
some members
Definition at line 135 of file Teko_GaussSeidelPreconditionerFactory.hpp.
1.7.6.1