NOX  Development
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,
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

◆ apply()

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

◆ applyInverse()

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

◆ applyInverseTranspose()

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

◆ applyTranspose()

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

◆ initForSolve()

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

◆ initForTransposeSolve()

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

◆ setMatrixBlocks()

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

Referenced by setMatrixBlocksMultiVecConstraint().

◆ 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 setMatrixBlocks().


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