Teko Version of the Day
Public Member Functions | Protected Member Functions | Protected Attributes
Teko::GaussSeidelPreconditionerFactory Class Reference

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>

Inheritance diagram for Teko::GaussSeidelPreconditionerFactory:
Inheritance graph
[legend]

List of all members.

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

Detailed Description

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.


Constructor & Destructor Documentation

Teko::GaussSeidelPreconditionerFactory::GaussSeidelPreconditionerFactory ( TriSolveType  solveType,
const LinearOp &  invD0,
const LinearOp &  invD1 
)

Construct a PreconditionerFactory assuming a specific block $2\times2$ 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.

Teko::GaussSeidelPreconditionerFactory::GaussSeidelPreconditionerFactory ( )

Build an empty Gauss-Seidel preconditioner factory

Definition at line 65 of file Teko_GaussSeidelPreconditionerFactory.cpp.


Member Function Documentation

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.


Member Data Documentation

some members

Definition at line 135 of file Teko_GaussSeidelPreconditionerFactory.hpp.


The documentation for this class was generated from the following files:
 All Classes Files Functions Variables