NOX Development
Loading...
Searching...
No Matches
Public Member Functions | Protected Attributes | List of all members
LOCA::BorderedSolver::EpetraAugmented Class Reference

Bordered system solver strategy based on augmenting the Jacobian operator. More...

#include <LOCA_BorderedSolver_EpetraAugmented.H>

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

Public Member Functions

 EpetraAugmented (const Teuchos::RCP< LOCA::GlobalData > &global_data, const Teuchos::RCP< LOCA::Parameter::SublistParser > &topParams, const Teuchos::RCP< Teuchos::ParameterList > &solverParams)
 Constructor.
 
virtual ~EpetraAugmented ()
 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 using the technique described above.
 
virtual NOX::Abstract::Group::ReturnType applyInverseTranspose (Teuchos::ParameterList &, const NOX::Abstract::MultiVector *, const NOX::Abstract::MultiVector::DenseMatrix *, NOX::Abstract::MultiVector &, NOX::Abstract::MultiVector::DenseMatrix &) const
 Solves the transpose of the extended system as defined above.
 
- Public Member Functions inherited from LOCA::BorderedSolver::AbstractStrategy
 AbstractStrategy ()
 Constructor.
 
virtual ~AbstractStrategy ()
 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)=0
 Set blocks.
 
virtual void 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)
 Set blocks with multivector constraint.
 
virtual NOX::Abstract::Group::ReturnType initForSolve ()=0
 Intialize solver for a solve.
 
virtual NOX::Abstract::Group::ReturnType initForTransposeSolve ()=0
 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 =0
 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 =0
 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 =0
 Solves the extended system as defined above.
 
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 =0
 Solves the transpose of the extended system as defined above.
 

Protected Attributes

Teuchos::RCP< LOCA::GlobalDataglobalData
 Global data object.
 
Teuchos::RCP< Teuchos::ParameterList > solverParams
 Solver parameters.
 
Teuchos::RCP< LOCA::Epetra::Groupgrp
 Pointer to group storing J.
 
Teuchos::RCP< const LOCA::BorderedSolver::AbstractOperatorop
 
Teuchos::RCP< const NOX::Abstract::MultiVectorA
 Pointer to A block.
 
Teuchos::RCP< const NOX::Abstract::MultiVectorB
 Pointer to B block.
 
Teuchos::RCP< const NOX::Abstract::MultiVector::DenseMatrixC
 Pointer to C block.
 
Teuchos::RCP< const LOCA::MultiContinuation::ConstraintInterfaceMVDXconstraints
 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
 

Detailed Description

Bordered system solver strategy based on augmenting the Jacobian operator.

This class solves the extended system of equations

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

by forming an augmented Epetra_Operator representing

\[
    \begin{bmatrix}
         J & A    \\
       B^T & C
    \end{bmatrix}
\]

by creating a new Epetra_Map for the additional equations.

Constructor & Destructor Documentation

◆ EpetraAugmented()

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.

Parameters
global_data[in] Global data object
topParams[in] Parsed top-level parameter list
solverParams[in] Bordered solver parameters. Currently none are referenced.

Member Function Documentation

◆ apply()

NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::EpetraAugmented::apply ( const NOX::Abstract::MultiVector X,
const NOX::Abstract::MultiVector::DenseMatrix Y,
NOX::Abstract::MultiVector U,
NOX::Abstract::MultiVector::DenseMatrix V 
) const
virtual

◆ applyInverse()

NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::EpetraAugmented::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 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 LOCA::Epetra::AugmentedOp::buildEpetraAugmentedMultiVec(), NOX::Epetra::MultiVector::CreateView, NOX::DeepCopy, LOCA::Epetra::AugmentedOp::init(), NOX::Abstract::MultiVector::init(), NOX::Abstract::Group::NotConverged, NOX::Epetra::MultiVector::numVectors(), NOX::Abstract::Group::Ok, LOCA::Epetra::AugmentedOp::setEpetraAugmentedMultiVec(), LOCA::BorderedSolver::LowerTriangularBlockElimination::solve(), and LOCA::BorderedSolver::UpperTriangularBlockElimination::solve().

◆ applyInverseTranspose()

virtual NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::EpetraAugmented::applyInverseTranspose ( Teuchos::ParameterList &  ,
const NOX::Abstract::MultiVector ,
const NOX::Abstract::MultiVector::DenseMatrix ,
NOX::Abstract::MultiVector ,
NOX::Abstract::MultiVector::DenseMatrix  
) const
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.

◆ applyTranspose()

NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::EpetraAugmented::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

\[
    \begin{bmatrix}
       U \\
       V
    \end{bmatrix} =
    \begin{bmatrix}
       J^T & B    \\
       A^T & C
    \end{bmatrix}
    \begin{bmatrix}
       X \\
       Y
    \end{bmatrix} =
    \begin{bmatrix}
       J^T*X + B*Y \\
       A^T*X + C^T*Y
    \end{bmatrix}.
\]

Implements LOCA::BorderedSolver::AbstractStrategy.

References NOX::Abstract::Group::Failed, and NOX::Abstract::MultiVector::multiply().

◆ initForSolve()

NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::EpetraAugmented::initForSolve ( )
virtual

Intialize solver for a solve.

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

Implements LOCA::BorderedSolver::AbstractStrategy.

References NOX::Abstract::Group::Ok.

◆ initForTransposeSolve()

NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::EpetraAugmented::initForTransposeSolve ( )
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.

◆ setMatrixBlocks()

void LOCA::BorderedSolver::EpetraAugmented::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.


The documentation for this class was generated from the following files: