#include <LOCA_BorderedSolver_AbstractStrategy.H>
Abstract interface for solving systems of equations of the form
where is an
matrix,
and
are
,
is
,
and
are
and
and
are
. The action of
and its inverse are represnted by a LOCA::BorderedSolver::AbstractOperator while
is a NOX::Abstract::MultiVector and
,
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.
LOCA::BorderedSolver::AbstractStrategy::AbstractStrategy | ( | ) | [inline] |
virtual LOCA::BorderedSolver::AbstractStrategy::~AbstractStrategy | ( | ) | [inline, virtual] |
LOCA::BorderedSolver::AbstractStrategy::AbstractStrategy | ( | const AbstractStrategy & | ) | [private] |
Private to prohibit copying.
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] |
Intialize solver for a solve.
This should be called after setMatrixBlocks(), but before applyInverse().
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::initForTransposeSolve | ( | ) | [pure virtual] |
Intialize solver for a transpose solve.
This should be called after setMatrixBlocks(), but before applyInverseTranspose().
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::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
where is
,
is
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
where is
,
is
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.