LOCA::BorderedSolver::Bordering Class Reference

Bordered system solver strategy based on bordering. More...

#include <LOCA_BorderedSolver_Bordering.H>

Inheritance diagram for LOCA::BorderedSolver::Bordering:

[legend]
Collaboration diagram for LOCA::BorderedSolver::Bordering:
[legend]
List of all members.

Public Member Functions

 Bordering (const Teuchos::RefCountPtr< LOCA::GlobalData > &global_data, const Teuchos::RefCountPtr< LOCA::Parameter::SublistParser > &topParams, const Teuchos::RefCountPtr< Teuchos::ParameterList > &solverParams)
 Constructor.
virtual ~Bordering ()
 Destructor.
virtual void setMatrixBlocks (const Teuchos::RefCountPtr< const NOX::Abstract::Group > &group, const Teuchos::RefCountPtr< const NOX::Abstract::MultiVector > &blockA, const Teuchos::RefCountPtr< const LOCA::MultiContinuation::ConstraintInterface > &blockB, const Teuchos::RefCountPtr< const NOX::Abstract::MultiVector::DenseMatrix > &blockC)
 Set blocks.
virtual NOX::Abstract::Group::ReturnType initForSolve ()
 Intialize solver for a solve.
virtual NOX::Abstract::Group::ReturnType initForTransposeSolve ()
 Intialize solver for a transpose solve.
virtual NOX::Abstract::Group::ReturnType apply (const NOX::Abstract::MultiVector &X, const NOX::Abstract::MultiVector::DenseMatrix &Y, NOX::Abstract::MultiVector &U, NOX::Abstract::MultiVector::DenseMatrix &V) const
 Computed extended matrix-multivector product.
virtual NOX::Abstract::Group::ReturnType applyTranspose (const NOX::Abstract::MultiVector &X, const NOX::Abstract::MultiVector::DenseMatrix &Y, NOX::Abstract::MultiVector &U, NOX::Abstract::MultiVector::DenseMatrix &V) const
 Computed extended matrix transpose-multivector product.
virtual NOX::Abstract::Group::ReturnType applyInverse (Teuchos::ParameterList &params, const NOX::Abstract::MultiVector *F, const NOX::Abstract::MultiVector::DenseMatrix *G, NOX::Abstract::MultiVector &X, NOX::Abstract::MultiVector::DenseMatrix &Y) const
 Solves the extended system as defined above using bordering.
virtual NOX::Abstract::Group::ReturnType applyInverseTranspose (Teuchos::ParameterList &params, const NOX::Abstract::MultiVector *F, const NOX::Abstract::MultiVector::DenseMatrix *G, NOX::Abstract::MultiVector &X, NOX::Abstract::MultiVector::DenseMatrix &Y) const
 Solves the transpose of the extended system as defined above using bordering.

Protected Member Functions

NOX::Abstract::Group::ReturnType solveFZero (Teuchos::ParameterList &params, const NOX::Abstract::MultiVector *AA, const LOCA::MultiContinuation::ConstraintInterface *BB, const NOX::Abstract::MultiVector::DenseMatrix *CC, const NOX::Abstract::MultiVector::DenseMatrix *G, NOX::Abstract::MultiVector &X, NOX::Abstract::MultiVector::DenseMatrix &Y) const
 Solves the extended system when F = 0.
NOX::Abstract::Group::ReturnType solveContiguous (Teuchos::ParameterList &params, const NOX::Abstract::MultiVector *AA, const LOCA::MultiContinuation::ConstraintInterface *BB, const NOX::Abstract::MultiVector::DenseMatrix *CC, vector< int > &indexF, vector< int > &indexA, const NOX::Abstract::MultiVector *F, const NOX::Abstract::MultiVector::DenseMatrix *G, NOX::Abstract::MultiVector &X, NOX::Abstract::MultiVector::DenseMatrix &Y) const
 Solves the extended system when F and A are contiguous.
NOX::Abstract::Group::ReturnType solveFZeroTrans (Teuchos::ParameterList &params, const NOX::Abstract::MultiVector *AA, const NOX::Abstract::MultiVector *BB, const NOX::Abstract::MultiVector::DenseMatrix *CC, const NOX::Abstract::MultiVector::DenseMatrix *G, NOX::Abstract::MultiVector &X, NOX::Abstract::MultiVector::DenseMatrix &Y) const
 Solves the transpose of the extended system when F = 0.
NOX::Abstract::Group::ReturnType solveContiguousTrans (Teuchos::ParameterList &params, const NOX::Abstract::MultiVector *AA, const NOX::Abstract::MultiVector *BB, const NOX::Abstract::MultiVector::DenseMatrix *CC, vector< int > &indexF, vector< int > &indexA, const NOX::Abstract::MultiVector *F, const NOX::Abstract::MultiVector::DenseMatrix *G, NOX::Abstract::MultiVector &X, NOX::Abstract::MultiVector::DenseMatrix &Y) const
 Solves the transpose of the extended system when F and B are contiguous.

Protected Attributes

Teuchos::RefCountPtr< LOCA::GlobalDataglobalData
 Global data object.
Teuchos::RefCountPtr< Teuchos::ParameterListsolverParams
 Solver parameters.
Teuchos::RefCountPtr< const
NOX::Abstract::Group
grp
 Pointer to group storing J.
Teuchos::RefCountPtr< const
LOCA::Abstract::TransposeSolveGroup
ts_grp
 Pointer to group with transpose-solve interface.
Teuchos::RefCountPtr< const
NOX::Abstract::MultiVector
A
 Pointer to A block.
Teuchos::RefCountPtr< const
LOCA::MultiContinuation::ConstraintInterface
B
 Pointer to B block.
Teuchos::RefCountPtr< const
NOX::Abstract::MultiVector::DenseMatrix
C
 Pointer to C block.
bool isZeroA
 flag indicating whether A block is zero
bool isZeroB
 flag indicating whether B block is zero
bool isZeroC
 flag indicating whether C block is zero
bool isZeroF
 flag indicating whether F block is zero
bool isZeroG
 flag indicating whether G block is zero

Detailed Description

Bordered system solver strategy based on bordering.

This class solves the extended system of equations

\[ \begin{bmatrix} J & A \\ B^T & C \end{bmatrix} \begin{bmatrix} X \\ Y \end{bmatrix} = \begin{bmatrix} F \\ G \end{bmatrix} \]

via bordering (block elimination):

\[ \begin{aligned} X_1 &= J^{-1} F \\ X_2 &= J^{-1} A \\ Y &= (C-B^T X_2)^{-1}(G-B^T X_1) \\ X &= X_1 - X_2 Y \end{aligned} \]

It takes advantage of any of the matrix blocks being zero and concatenates $F$ and $A$ into a contiguous multivector to compute $X_1$ and $X_2$ in one block solve.

To solve the transpose of the system, a similar bordering algorithm is implemented. Note however that for the transpose, the constraint object representing $B$ must implement the LOCA::MultiContinuation::ConstraintInterfaceMVDX since $B$ appears on the right-hand-side of a linear system, and the group must implement the LOCA::Abstract::TransposeSolveGroup interface to solve the Jacobian transpose system.


Constructor & Destructor Documentation

LOCA::BorderedSolver::Bordering::Bordering const Teuchos::RefCountPtr< LOCA::GlobalData > &  global_data,
const Teuchos::RefCountPtr< LOCA::Parameter::SublistParser > &  topParams,
const Teuchos::RefCountPtr< Teuchos::ParameterList > &  solverParams
 

Constructor.

Parameters:
global_data [in] Global data object
topParams [in] Parsed top-level parameter list
solverParams [in] Bordered solver parameters. Currently none are referenced.


Member Function Documentation

NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::Bordering::apply const NOX::Abstract::MultiVector X,
const NOX::Abstract::MultiVector::DenseMatrix Y,
NOX::Abstract::MultiVector U,
NOX::Abstract::MultiVector::DenseMatrix V
const [virtual]
 

Computed extended matrix-multivector product.

Computes

\[ \begin{bmatrix} U \\ V \end{bmatrix} = \begin{bmatrix} J & A \\ B^T & C \end{bmatrix} \begin{bmatrix} X \\ Y \end{bmatrix} = \begin{bmatrix} J*X + A*Y \\ B^T*X + C*Y \end{bmatrix}. \]

Implements LOCA::BorderedSolver::AbstractStrategy.

NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::Bordering::applyInverse Teuchos::ParameterList params,
const NOX::Abstract::MultiVector F,
const NOX::Abstract::MultiVector::DenseMatrix G,
NOX::Abstract::MultiVector X,
NOX::Abstract::MultiVector::DenseMatrix Y
const [virtual]
 

Solves the extended system as defined above using bordering.

The params argument is the linear solver parameters. If isZeroF or isZeroG is true, than the corresponding F or G pointers may be NULL.

Implements LOCA::BorderedSolver::AbstractStrategy.

NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::Bordering::applyInverseTranspose Teuchos::ParameterList params,
const NOX::Abstract::MultiVector F,
const NOX::Abstract::MultiVector::DenseMatrix G,
NOX::Abstract::MultiVector X,
NOX::Abstract::MultiVector::DenseMatrix Y
const [virtual]
 

Solves the transpose of the extended system as defined above using bordering.

The params argument is the linear solver parameters. If isZeroF or isZeroG is true, than the corresponding F or G pointers may be NULL. Note that for the transpose solve B must be of type LOCA::MultiContinuation::ConstraintInterfaceMVDX and the group must implement LOCA::Abstract::TransposeSolveGroup.

Reimplemented from LOCA::BorderedSolver::AbstractStrategy.

NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::Bordering::applyTranspose const NOX::Abstract::MultiVector X,
const NOX::Abstract::MultiVector::DenseMatrix Y,
NOX::Abstract::MultiVector U,
NOX::Abstract::MultiVector::DenseMatrix V
const [virtual]
 

Computed extended matrix transpose-multivector product.

Computes

\[ \begin{bmatrix} U \\ V \end{bmatrix} = \begin{bmatrix} J^T & B \\ A^T & C \end{bmatrix} \begin{bmatrix} X \\ Y \end{bmatrix} = \begin{bmatrix} J^T*X + B*Y \\ A^T*X + C^T*Y \end{bmatrix}. \]

Implements LOCA::BorderedSolver::AbstractStrategy.

NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::Bordering::initForSolve  )  [virtual]
 

Intialize solver for a solve.

This should be called after setMatrixBlocks(), but before applyInverse().

Implements LOCA::BorderedSolver::AbstractStrategy.

NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::Bordering::initForTransposeSolve  )  [virtual]
 

Intialize solver for a transpose solve.

This should be called after setMatrixBlocks(), but before applyInverseTranspose().

Implements LOCA::BorderedSolver::AbstractStrategy.

void LOCA::BorderedSolver::Bordering::setMatrixBlocks const Teuchos::RefCountPtr< const NOX::Abstract::Group > &  group,
const Teuchos::RefCountPtr< const NOX::Abstract::MultiVector > &  blockA,
const Teuchos::RefCountPtr< const LOCA::MultiContinuation::ConstraintInterface > &  blockB,
const Teuchos::RefCountPtr< const NOX::Abstract::MultiVector::DenseMatrix > &  blockC
[virtual]
 

Set blocks.

The blockA or blockC pointer may be null if either is zero. Whether block B is zero will be determined by querying blockB via ConstraintInterface::isConstraintDerivativesXZero.

Implements LOCA::BorderedSolver::AbstractStrategy.


The documentation for this class was generated from the following files:
Generated on Thu Sep 18 12:38:30 2008 for NOX by doxygen 1.3.9.1