|
NOX
Development
|
Bordered system solver strategy for nested bordered systems. More...
#include <LOCA_BorderedSolver_Nested.H>


Bordered system solver strategy for nested bordered systems.
This class implements a bordered solver strategy for the bordered system
when
itself has this block form. It combines the blocks for
,
, and
and then instantiates a solver as specified by the "Nested Bordered Solver" sublist of the solverParams pass through the constructor. This sublist should specify the "Bordered Solver Method" for the solver as well as any other parameters for that method, and any method that can be instantiated through the LOCA::Factory is available.
Note that the operator representing
must implement the LOCA::BorderedSolver::BorderedOperator interface, and the constraint object representing
must be of type LOCA::MultiContinuation::ConstraintInterfaceMVDX.
| LOCA::BorderedSolver::Nested::Nested | ( | const Teuchos::RCP< LOCA::GlobalData > & | global_data, |
| const Teuchos::RCP< LOCA::Parameter::SublistParser > & | topParams, | ||
| const Teuchos::RCP< Teuchos::ParameterList > & | solverParams | ||
| ) |
Constructor.
| global_data | [in] Global data object |
| topParams | [in] Parsed top-level parameter list |
| solverParams | [in] Bordered solver parameters as described above |
References LOCA::Factory::createBorderedSolverStrategy(), globalData, LOCA::GlobalData::locaFactory, Teuchos::rcp(), solver, solverParams, and Teuchos::ParameterList::sublist().
| NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::Nested::apply | ( | const NOX::Abstract::MultiVector & | X, |
| const NOX::Abstract::MultiVector::DenseMatrix & | Y, | ||
| NOX::Abstract::MultiVector & | U, | ||
| NOX::Abstract::MultiVector::DenseMatrix & | V | ||
| ) | const [virtual] |
Computed extended matrix-multivector product.
Computes
Implements LOCA::BorderedSolver::AbstractStrategy.
References Teuchos::SerialDenseMatrix< OrdinalType, ScalarType >::assign(), NOX::Abstract::MultiVector::numVectors(), and Teuchos::View.
| NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::Nested::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 [virtual] |
Solves the extended system as defined above using bordering.
The params argument is the linear solver parameters. If isZeroF or isZeroG is true, than the corresponding F or G pointers may be NULL.
Implements LOCA::BorderedSolver::AbstractStrategy.
References Teuchos::SerialDenseMatrix< OrdinalType, ScalarType >::assign(), Teuchos::RCP< T >::get(), NOX::Abstract::MultiVector::init(), NOX::Abstract::MultiVector::numVectors(), Teuchos::SerialDenseMatrix< OrdinalType, ScalarType >::putScalar(), and Teuchos::View.
| NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::Nested::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 [virtual] |
Solves the transpose of the extended system as defined above using bordering.
The params argument is the linear solver parameters. If isZeroF or isZeroG is true, than the corresponding F or G pointers may be NULL.
Implements LOCA::BorderedSolver::AbstractStrategy.
References Teuchos::SerialDenseMatrix< OrdinalType, ScalarType >::assign(), Teuchos::RCP< T >::get(), NOX::Abstract::MultiVector::init(), NOX::Abstract::MultiVector::numVectors(), Teuchos::SerialDenseMatrix< OrdinalType, ScalarType >::putScalar(), and Teuchos::View.
| NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::Nested::applyTranspose | ( | const NOX::Abstract::MultiVector & | X, |
| const NOX::Abstract::MultiVector::DenseMatrix & | Y, | ||
| NOX::Abstract::MultiVector & | U, | ||
| NOX::Abstract::MultiVector::DenseMatrix & | V | ||
| ) | const [virtual] |
Computed extended matrix transpose-multivector product.
Computes
Implements LOCA::BorderedSolver::AbstractStrategy.
References Teuchos::SerialDenseMatrix< OrdinalType, ScalarType >::assign(), NOX::Abstract::MultiVector::numVectors(), and Teuchos::View.
Intialize solver for a solve.
This should be called after setMatrixBlocks(), but before applyInverse().
Implements LOCA::BorderedSolver::AbstractStrategy.
Intialize solver for a transpose solve.
This should be called after setMatrixBlocks(), but before applyInverseTranspose().
Implements LOCA::BorderedSolver::AbstractStrategy.
| void LOCA::BorderedSolver::Nested::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 | ||
| ) | [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.
Implements LOCA::BorderedSolver::AbstractStrategy.
References Teuchos::SerialDenseMatrix< OrdinalType, ScalarType >::assign(), Teuchos::RCP< T >::get(), LOCA::MultiContinuation::ConstraintInterfaceMVDX::getDX(), LOCA::BorderedSolver::JacobianOperator::getGroup(), NOX::Abstract::MultiVector::init(), LOCA::MultiContinuation::ConstraintInterface::isDXZero(), Teuchos::SerialDenseMatrix< OrdinalType, ScalarType >::numRows(), NOX::Abstract::MultiVector::numVectors(), Teuchos::SerialDenseMatrix< OrdinalType, ScalarType >::putScalar(), Teuchos::rcp(), NOX::Abstract::MultiVector::subView(), and Teuchos::View.
1.7.6.1