NOX Development
Public Member Functions | Protected Attributes
LOCA::BorderedSolver::Nested Class Reference

Bordered system solver strategy for nested bordered systems. More...

#include <LOCA_BorderedSolver_Nested.H>

Inheritance diagram for LOCA::BorderedSolver::Nested:
Inheritance graph
[legend]
Collaboration diagram for LOCA::BorderedSolver::Nested:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 Nested (const Teuchos::RCP< LOCA::GlobalData > &global_data, const Teuchos::RCP< LOCA::Parameter::SublistParser > &topParams, const Teuchos::RCP< Teuchos::ParameterList > &solverParams)
 Constructor.
virtual ~Nested ()
 Destructor.
virtual void 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)
 Set blocks.
virtual
NOX::Abstract::Group::ReturnType 
initForSolve ()
 Intialize solver for a solve.
virtual
NOX::Abstract::Group::ReturnType 
initForTransposeSolve ()
 Intialize solver for a transpose solve.
virtual
NOX::Abstract::Group::ReturnType 
apply (const NOX::Abstract::MultiVector &X, const NOX::Abstract::MultiVector::DenseMatrix &Y, NOX::Abstract::MultiVector &U, NOX::Abstract::MultiVector::DenseMatrix &V) const
 Computed extended matrix-multivector product.
virtual
NOX::Abstract::Group::ReturnType 
applyTranspose (const NOX::Abstract::MultiVector &X, const NOX::Abstract::MultiVector::DenseMatrix &Y, NOX::Abstract::MultiVector &U, NOX::Abstract::MultiVector::DenseMatrix &V) const
 Computed extended matrix transpose-multivector product.
virtual
NOX::Abstract::Group::ReturnType 
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
 Solves the extended system as defined above using bordering.
virtual
NOX::Abstract::Group::ReturnType 
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
 Solves the transpose of the extended system as defined above using bordering.

Protected Attributes

Teuchos::RCP< LOCA::GlobalDataglobalData
 Global data object.
Teuchos::RCP
< Teuchos::ParameterList
solverParams
 Solver parameters.
Teuchos::RCP
< LOCA::BorderedSolver::AbstractStrategy
solver
 Underlying solver.
Teuchos::RCP< const
LOCA::BorderedSystem::AbstractGroup
grp
 Pointer to group storing J.
Teuchos::RCP< const
NOX::Abstract::Group
unbordered_grp
 Pointer to unbordered group.
int myWidth
 Width for bordered rows/columns.
int underlyingWidth
 Underling width.
int numConstraints
 Number of my constraints.

Detailed Description

Bordered system solver strategy for nested bordered systems.

This class implements a bordered solver strategy for the bordered system

\[ \begin{bmatrix} J & A \\ B^T & C \end{bmatrix} \begin{bmatrix} X \\ Y \end{bmatrix} = \begin{bmatrix} F \\ G \end{bmatrix} \]

when $J$ itself has this block form. It combines the blocks for $A$, $B$, and $C$ 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 $J$ must implement the LOCA::BorderedSolver::BorderedOperator interface, and the constraint object representing $B$ must be of type LOCA::MultiContinuation::ConstraintInterfaceMVDX.


Constructor & Destructor Documentation

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.

Parameters:
global_data[in] Global data object
topParams[in] Parsed top-level parameter list
solverParams[in] Bordered solver parameters as described above

References globalData, Teuchos::rcp(), solver, and solverParams.


Member Function Documentation

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]
NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::Nested::initForSolve ( ) [virtual]

Intialize solver for a solve.

This should be called after setMatrixBlocks(), but before applyInverse().

Implements LOCA::BorderedSolver::AbstractStrategy.

NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::Nested::initForTransposeSolve ( ) [virtual]

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(), Teuchos::rcp(), and Teuchos::View.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends