|
NOX
Development
|
Abstract interface class for solving bordered sets of linear equations. More...
#include <LOCA_BorderedSolver_AbstractStrategy.H>

Abstract interface class for solving bordered sets of linear equations.
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.
| 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::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
where
is
,
is
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] |
Intialize solver for a solve.
This should be called after setMatrixBlocks(), but before applyInverse().
Implemented in LOCA::BorderedSolver::EpetraHouseholder, LOCA::BorderedSolver::Bordering, LOCA::BorderedSolver::EpetraAugmented, LOCA::BorderedSolver::Nested, and LOCA::BorderedSolver::LAPACKDirectSolve.
Referenced by LOCA::MultiContinuation::ConstrainedGroup::ConstrainedGroup(), LOCA::Homotopy::DeflatedGroup::DeflatedGroup(), LOCA::Pitchfork::MinimallyAugmented::ExtendedGroup::ExtendedGroup(), and LOCA::Hopf::MinimallyAugmented::ExtendedGroup::ExtendedGroup().
| 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::EpetraHouseholder, LOCA::BorderedSolver::Bordering, LOCA::BorderedSolver::EpetraAugmented, LOCA::BorderedSolver::Nested, and LOCA::BorderedSolver::LAPACKDirectSolve.
| 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::Bordering, LOCA::BorderedSolver::EpetraAugmented, LOCA::BorderedSolver::Nested, and LOCA::BorderedSolver::LAPACKDirectSolve.
Referenced by LOCA::MultiContinuation::ConstrainedGroup::ConstrainedGroup(), LOCA::Pitchfork::MinimallyAugmented::ExtendedGroup::ExtendedGroup(), LOCA::Hopf::MinimallyAugmented::ExtendedGroup::ExtendedGroup(), and 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 Teuchos::rcp(), and setMatrixBlocks().
Referenced by LOCA::Homotopy::DeflatedGroup::DeflatedGroup().
1.7.6.1