LOCA::BorderedSolver::AbstractStrategy Class Reference

Abstract interface class for solving bordered sets of linear equations. More...

#include <LOCA_BorderedSolver_AbstractStrategy.H>

Inheritance diagram for LOCA::BorderedSolver::AbstractStrategy:

Inheritance graph
[legend]
List of all members.

Public Member Functions

 AbstractStrategy ()
 Constructor.
virtual ~AbstractStrategy ()
 Destructor.
virtual void setMatrixBlocks (const Teuchos::RCP< const LOCA::BorderedSolver::AbstractOperator > &op, const Teuchos::RCP< const NOX::Abstract::MultiVector > &blockA, const Teuchos::RCP< const LOCA::MultiContinuation::ConstraintInterface > &blockB, const Teuchos::RCP< const NOX::Abstract::MultiVector::DenseMatrix > &blockC)=0
 Set blocks.
virtual void setMatrixBlocksMultiVecConstraint (const Teuchos::RCP< const LOCA::BorderedSolver::AbstractOperator > &op, const Teuchos::RCP< const NOX::Abstract::MultiVector > &blockA, const Teuchos::RCP< const NOX::Abstract::MultiVector > &blockB, const Teuchos::RCP< const NOX::Abstract::MultiVector::DenseMatrix > &blockC)
 Set blocks with multivector constraint.
virtual NOX::Abstract::Group::ReturnType initForSolve ()=0
 Intialize solver for a solve.
virtual NOX::Abstract::Group::ReturnType initForTransposeSolve ()=0
 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 =0
 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 =0
 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 =0
 Solves the extended system as defined above.
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 =0
 Solves the transpose of the extended system as defined above.

Detailed Description

Abstract interface class for solving bordered sets of linear equations.

Abstract interface for solving systems of equations of the form

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

where $J$ is an $n\times n$ matrix, $A$ and $B$ are $n\times m$, $C$ is $m\times m$, $X$ and $F$ are $n\times p$ and $Y$ and $G$ are $m\times p$. The action of $J$ and its inverse are represnted by a LOCA::BorderedSolver::AbstractOperator while $A$ is a NOX::Abstract::MultiVector and $B$, $C$ are represtend by the solution and parameter components of the derivative of a constraint contained in LOCA::MultiContinuation::ConstraintInterface. All classes that implement a method for computing solutions to this system of equations should be derived from this class. Constructors for derived classes should be of the form:

 class Derived : public AbstractStrategy {
 public:
   Derived(
   const Teuchos::RCP<LOCA::GlobalData>& global_data,
   const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
     const Teuchos::RCP<Teuchos::ParameterList>& solverParams);
   ...
 };

where global_data is the LOCA global data object, topParams is the parsed top-level parameter list, and solverParams is a parameter list of bordered-solver parameters.

This class and its children follow the Strategy pattern as defined in Erich Gamma, et al. "Design Patterns: Elements of Reusable Object-Oriented Software." Addison Wesley, Boston, MA, 1995.


Member Function Documentation

virtual NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::AbstractStrategy::apply ( const NOX::Abstract::MultiVector X,
const NOX::Abstract::MultiVector::DenseMatrix Y,
NOX::Abstract::MultiVector U,
NOX::Abstract::MultiVector::DenseMatrix V 
) const [pure 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} \]

where $U$ is $n\times p$, $V$ is $m\times p$ and the other blocks are as defined above.

Implemented in LOCA::BorderedSolver::Bordering, LOCA::BorderedSolver::Nested, LOCA::BorderedSolver::EpetraAugmented, LOCA::BorderedSolver::EpetraHouseholder, and LOCA::BorderedSolver::LAPACKDirectSolve.

virtual NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::AbstractStrategy::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 [pure virtual]

Solves the extended system as defined above.

The params argument is the linear solver parameters.

Implemented in LOCA::BorderedSolver::Bordering, LOCA::BorderedSolver::Nested, LOCA::BorderedSolver::EpetraAugmented, LOCA::BorderedSolver::EpetraHouseholder, and LOCA::BorderedSolver::LAPACKDirectSolve.

virtual NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::AbstractStrategy::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 [pure virtual]

Solves the transpose of the extended system as defined above.

The params argument is the linear solver parameters.

Implemented in LOCA::BorderedSolver::Bordering, LOCA::BorderedSolver::Nested, LOCA::BorderedSolver::EpetraAugmented, LOCA::BorderedSolver::EpetraHouseholder, and LOCA::BorderedSolver::LAPACKDirectSolve.

virtual NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::AbstractStrategy::applyTranspose ( const NOX::Abstract::MultiVector X,
const NOX::Abstract::MultiVector::DenseMatrix Y,
NOX::Abstract::MultiVector U,
NOX::Abstract::MultiVector::DenseMatrix V 
) const [pure virtual]

Computed extended matrix transpose-multivector product.

Computes

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

where $U$ is $n\times p$, $V$ is $m\times p$ and the other blocks are as defined above.

Implemented in LOCA::BorderedSolver::Bordering, LOCA::BorderedSolver::Nested, LOCA::BorderedSolver::EpetraAugmented, LOCA::BorderedSolver::EpetraHouseholder, and LOCA::BorderedSolver::LAPACKDirectSolve.

virtual NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::AbstractStrategy::initForSolve (  )  [pure virtual]

Intialize solver for a solve.

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

Implemented in LOCA::BorderedSolver::Bordering, LOCA::BorderedSolver::Nested, LOCA::BorderedSolver::EpetraAugmented, LOCA::BorderedSolver::EpetraHouseholder, and LOCA::BorderedSolver::LAPACKDirectSolve.

virtual NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::AbstractStrategy::initForTransposeSolve (  )  [pure virtual]

Intialize solver for a transpose solve.

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

Implemented in LOCA::BorderedSolver::Bordering, LOCA::BorderedSolver::Nested, LOCA::BorderedSolver::EpetraAugmented, LOCA::BorderedSolver::EpetraHouseholder, and LOCA::BorderedSolver::LAPACKDirectSolve.

virtual void LOCA::BorderedSolver::AbstractStrategy::setMatrixBlocks ( const Teuchos::RCP< const LOCA::BorderedSolver::AbstractOperator > &  op,
const Teuchos::RCP< const NOX::Abstract::MultiVector > &  blockA,
const Teuchos::RCP< const LOCA::MultiContinuation::ConstraintInterface > &  blockB,
const Teuchos::RCP< const NOX::Abstract::MultiVector::DenseMatrix > &  blockC 
) [pure 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.

Implemented in LOCA::BorderedSolver::Bordering, LOCA::BorderedSolver::Nested, LOCA::BorderedSolver::EpetraAugmented, LOCA::BorderedSolver::EpetraHouseholder, and LOCA::BorderedSolver::LAPACKDirectSolve.

void LOCA::BorderedSolver::AbstractStrategy::setMatrixBlocksMultiVecConstraint ( const Teuchos::RCP< const LOCA::BorderedSolver::AbstractOperator > &  op,
const Teuchos::RCP< const NOX::Abstract::MultiVector > &  blockA,
const Teuchos::RCP< const NOX::Abstract::MultiVector > &  blockB,
const Teuchos::RCP< const NOX::Abstract::MultiVector::DenseMatrix > &  blockC 
) [virtual]

Set blocks with multivector constraint.

This is a version of setMatrixBlocks that takes a multivector for blockB. This method has a default implementation to generate a LOCA::MultiContinuation::MultiVecConstraint from blockB which is then passed to the setMatrixBlocks() method.


The documentation for this class was generated from the following files:
Generated on Wed May 12 21:41:54 2010 for NOX by  doxygen 1.4.7