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

Referenced by setMatrixBlocksMultiVecConstraint().

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.

References Teuchos::rcp(), and setMatrixBlocks().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends
Generated on Wed Apr 13 09:59:41 2011 for NOX by  doxygen 1.6.3