NOX  Development
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Member Functions | List of all members
LOCA::BorderedSolver::AbstractStrategy Class Referenceabstract

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]

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. More...
 
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. More...
 
virtual
NOX::Abstract::Group::ReturnType 
initForSolve ()=0
 Intialize solver for a solve. More...
 
virtual
NOX::Abstract::Group::ReturnType 
initForTransposeSolve ()=0
 Intialize solver for a transpose solve. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 

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,
...
};

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::EpetraHouseholder, LOCA::BorderedSolver::Bordering, LOCA::BorderedSolver::EpetraAugmented, LOCA::BorderedSolver::Nested, 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::EpetraHouseholder, LOCA::BorderedSolver::EpetraAugmented, LOCA::BorderedSolver::Bordering, LOCA::BorderedSolver::Nested, 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::EpetraHouseholder, LOCA::BorderedSolver::Bordering, LOCA::BorderedSolver::EpetraAugmented, LOCA::BorderedSolver::Nested, 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::EpetraHouseholder, LOCA::BorderedSolver::Bordering, LOCA::BorderedSolver::EpetraAugmented, LOCA::BorderedSolver::Nested, 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
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().

Referenced by LOCA::Homotopy::DeflatedGroup::DeflatedGroup().


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