NOX
Development
|
Bordered system solver strategy based on augmenting the Jacobian operator. More...
#include <LOCA_BorderedSolver_EpetraAugmented.H>
Protected Attributes | |
Teuchos::RCP< LOCA::GlobalData > | globalData |
Global data object. | |
Teuchos::RCP < Teuchos::ParameterList > | solverParams |
Solver parameters. | |
Teuchos::RCP< LOCA::Epetra::Group > | grp |
Pointer to group storing J. | |
Teuchos::RCP< const LOCA::BorderedSolver::AbstractOperator > | op |
Teuchos::RCP< const NOX::Abstract::MultiVector > | A |
Pointer to A block. | |
Teuchos::RCP< const NOX::Abstract::MultiVector > | B |
Pointer to B block. | |
Teuchos::RCP< const NOX::Abstract::MultiVector::DenseMatrix > | C |
Pointer to C block. | |
Teuchos::RCP< const LOCA::MultiContinuation::ConstraintInterfaceMVDX > | constraints |
Pointer to constraint interface. | |
int | numConstraints |
Number of constraint equations. | |
bool | isZeroA |
flag indicating whether A block is zero | |
bool | isZeroB |
flag indicating whether B block is zero | |
bool | isZeroC |
flag indicating whether C block is zero | |
Bordered system solver strategy based on augmenting the Jacobian operator.
This class solves the extended system of equations
by forming an augmented Epetra_Operator representing
by creating a new Epetra_Map for the additional equations.
LOCA::BorderedSolver::EpetraAugmented::EpetraAugmented | ( | 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. Currently none are referenced. |
|
virtual |
Computed extended matrix-multivector product.
Computes
Implements LOCA::BorderedSolver::AbstractStrategy.
References NOX::Abstract::Group::Failed, Teuchos::SerialDenseMatrix< OrdinalType, ScalarType >::multiply(), Teuchos::NO_TRANS, and NOX::Abstract::MultiVector::update().
|
virtual |
Solves the extended system using the technique described above.
The params argument is the linear solver parameters. If isZeroF or isZeroG is true, than the corresponding F or G pointers may be NULL.
Note that if either the A or B blocks are zero, the system is solved using a simple block elimination scheme instead of the Householder scheme.
Implements LOCA::BorderedSolver::AbstractStrategy.
References NOX::Epetra::LinearSystem::applyJacobianInverse(), LOCA::Epetra::AugmentedOp::buildEpetraAugmentedMultiVec(), NOX::Epetra::LinearSystem::createPreconditioner(), NOX::Epetra::MultiVector::CreateView, NOX::DeepCopy, NOX::Epetra::LinearSystem::destroyPreconditioner(), Teuchos::ParameterList::get(), NOX::Epetra::MultiVector::getEpetraMultiVector(), NOX::Epetra::LinearSystem::getGeneratedPrecOperator(), NOX::Epetra::LinearSystem::getJacobianOperator(), NOX::Abstract::MultiVector::init(), LOCA::Epetra::AugmentedOp::init(), NOX::Abstract::Group::NotConverged, NOX::Epetra::MultiVector::numVectors(), NOX::Abstract::Group::Ok, Teuchos::SerialDenseMatrix< OrdinalType, ScalarType >::putScalar(), Teuchos::rcp(), LOCA::Epetra::AugmentedOp::setEpetraAugmentedMultiVec(), NOX::Epetra::LinearSystem::setJacobianOperatorForSolve(), NOX::Epetra::LinearSystem::setPrecOperatorForSolve(), LOCA::BorderedSolver::UpperTriangularBlockElimination::solve(), and LOCA::BorderedSolver::LowerTriangularBlockElimination::solve().
|
inlinevirtual |
Solves the transpose of the extended system as defined above.
The params argument is the linear solver parameters.
Implements LOCA::BorderedSolver::AbstractStrategy.
References NOX::Abstract::Group::NotDefined.
|
virtual |
Computed extended matrix transpose-multivector product.
Computes
Implements LOCA::BorderedSolver::AbstractStrategy.
References NOX::Abstract::Group::Failed, Teuchos::SerialDenseMatrix< OrdinalType, ScalarType >::multiply(), NOX::Abstract::MultiVector::multiply(), Teuchos::NO_TRANS, and Teuchos::TRANS.
|
virtual |
Intialize solver for a solve.
This should be called after setMatrixBlocks(), but before applyInverse().
Implements LOCA::BorderedSolver::AbstractStrategy.
References NOX::Abstract::Group::Ok.
|
virtual |
Intialize solver for a transpose solve.
This should be called after setMatrixBlocks(), but before applyInverseTranspose().
Implements LOCA::BorderedSolver::AbstractStrategy.
References NOX::Abstract::Group::Ok.
|
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 LOCA::BorderedSolver::JacobianOperator::getGroup(), Teuchos::SerialDenseMatrix< OrdinalType, ScalarType >::putScalar(), and Teuchos::rcp().