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.

Private Member Functions

 AbstractStrategy (const AbstractStrategy &)
 Private to prohibit copying.
AbstractStrategyoperator= (const AbstractStrategy &)
 Private to prohibit copying.


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.

Definition at line 115 of file LOCA_BorderedSolver_AbstractStrategy.H.


Constructor & Destructor Documentation

LOCA::BorderedSolver::AbstractStrategy::AbstractStrategy (  )  [inline]

Constructor.

Definition at line 120 of file LOCA_BorderedSolver_AbstractStrategy.H.

virtual LOCA::BorderedSolver::AbstractStrategy::~AbstractStrategy (  )  [inline, virtual]

Destructor.

Definition at line 123 of file LOCA_BorderedSolver_AbstractStrategy.H.

LOCA::BorderedSolver::AbstractStrategy::AbstractStrategy ( const AbstractStrategy  )  [private]

Private to prohibit copying.


Member Function Documentation

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::LAPACKDirectSolve, LOCA::BorderedSolver::EpetraAugmented, and LOCA::BorderedSolver::EpetraHouseholder.

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.

Definition at line 46 of file LOCA_BorderedSolver_AbstractStrategy.C.

References setMatrixBlocks().

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

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

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::LAPACKDirectSolve, LOCA::BorderedSolver::EpetraAugmented, and LOCA::BorderedSolver::EpetraHouseholder.

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::LAPACKDirectSolve, LOCA::BorderedSolver::EpetraAugmented, and LOCA::BorderedSolver::EpetraHouseholder.

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::LAPACKDirectSolve, LOCA::BorderedSolver::EpetraAugmented, and LOCA::BorderedSolver::EpetraHouseholder.

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::LAPACKDirectSolve, LOCA::BorderedSolver::EpetraAugmented, and LOCA::BorderedSolver::EpetraHouseholder.

AbstractStrategy& LOCA::BorderedSolver::AbstractStrategy::operator= ( const AbstractStrategy  )  [private]

Private to prohibit copying.


The documentation for this class was generated from the following files:

Generated on Thu Dec 17 11:02:45 2009 for Nonlinear Solver Project by  doxygen 1.5.9