LOCA::BorderedSystem::AbstractStrategy Class Reference

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

#include <LOCA_BorderedSystem_AbstractStrategy.H>

Inheritance diagram for LOCA::BorderedSystem::AbstractStrategy:

[legend]
List of all members.

Public Member Functions

 AbstractStrategy ()
 Constructor.
virtual ~AbstractStrategy ()
 Destructor.
virtual void setIsContiguous (bool flag)=0
 Set flag indicating whether F and A are stored in a continguous multivector.
virtual void setMatrixBlocks (const Teuchos::RefCountPtr< const NOX::Abstract::Group > &group, const Teuchos::RefCountPtr< const NOX::Abstract::MultiVector > &blockA, const Teuchos::RefCountPtr< const LOCA::MultiContinuation::ConstraintInterface > &blockB, const Teuchos::RefCountPtr< const NOX::Abstract::MultiVector::DenseMatrix > &blockC)=0
 Set blocks.
virtual void setMatrixBlocksMultiVecConstraint (const Teuchos::RefCountPtr< const NOX::Abstract::Group > &group, const Teuchos::RefCountPtr< const NOX::Abstract::MultiVector > &blockA, const Teuchos::RefCountPtr< const NOX::Abstract::MultiVector > &blockB, const Teuchos::RefCountPtr< const NOX::Abstract::MultiVector::DenseMatrix > &blockC)
 Set blocks with multivector constraint.
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 (NOX::Parameter::List &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.

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 NOX::Abstract::Group 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::RefCountPtr<LOCA::GlobalData>& global_data,
   const Teuchos::RefCountPtr<LOCA::Parameter::SublistParser>& topParams,
     const Teuchos::RefCountPtr<NOX::Parameter::List>& 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.

In many cases, F and A are stored in a contiguous multivector, and this storage can be taken advantage of by some bordered solver strategies (e.g., bordering). Any bordered solver strategy must be able to handle this, and is signaled by the setIsContiguous() method. In this case, the supplied A block should be a sub-view of the contiguous multivector representing only A, and the F block passed in applyInverse() should contain the columns of F first, then A. The X multivector in applyInverse() must then have the same number of columns as the supplied F. These extra columns may be used by some strategies and my be overwritten. The remaining blocks (G and Y) should have the proper number of columns corresponding to the actual number of right-hand sides (i.e., F.numVectors() - A.numVectors()). Also note that neither the F nor A blocks can be signaled as zero if they are to be stored contiguously.

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

virtual NOX::Abstract::Group::ReturnType LOCA::BorderedSystem::AbstractStrategy::applyInverse NOX::Parameter::List 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::BorderedSystem::Bordering, LOCA::BorderedSystem::EpetraAugmented, LOCA::BorderedSystem::EpetraHouseholder, and LOCA::BorderedSystem::LAPACKDirectSolve.

virtual NOX::Abstract::Group::ReturnType LOCA::BorderedSystem::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::BorderedSystem::Bordering, LOCA::BorderedSystem::EpetraAugmented, LOCA::BorderedSystem::EpetraHouseholder, and LOCA::BorderedSystem::LAPACKDirectSolve.

virtual void LOCA::BorderedSystem::AbstractStrategy::setMatrixBlocks const Teuchos::RefCountPtr< const NOX::Abstract::Group > &  group,
const Teuchos::RefCountPtr< const NOX::Abstract::MultiVector > &  blockA,
const Teuchos::RefCountPtr< const LOCA::MultiContinuation::ConstraintInterface > &  blockB,
const Teuchos::RefCountPtr< 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::BorderedSystem::Bordering, LOCA::BorderedSystem::EpetraAugmented, LOCA::BorderedSystem::EpetraHouseholder, and LOCA::BorderedSystem::LAPACKDirectSolve.

void LOCA::BorderedSystem::AbstractStrategy::setMatrixBlocksMultiVecConstraint const Teuchos::RefCountPtr< const NOX::Abstract::Group > &  group,
const Teuchos::RefCountPtr< const NOX::Abstract::MultiVector > &  blockA,
const Teuchos::RefCountPtr< const NOX::Abstract::MultiVector > &  blockB,
const Teuchos::RefCountPtr< 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 Thu Sep 18 12:40:43 2008 for NOX by doxygen 1.3.9.1