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:
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.
|
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.
|
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.
|
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.
|
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.
|
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().
|
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.
|
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().
|
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().