LOCA::BorderedSolver::LAPACKDirectSolve Class Reference

Bordered system solver strategy based on direct factorization. More...

#include <LOCA_BorderedSolver_LAPACKDirectSolve.H>

Inheritance diagram for LOCA::BorderedSolver::LAPACKDirectSolve:

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

Collaboration graph
[legend]
List of all members.

Public Member Functions

 LAPACKDirectSolve (const Teuchos::RCP< LOCA::GlobalData > &global_data, const Teuchos::RCP< LOCA::Parameter::SublistParser > &topParams, const Teuchos::RCP< Teuchos::ParameterList > &solverParams)
 Constructor.
virtual ~LAPACKDirectSolve ()
 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 Gaussian Elimination.
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.

Protected Member Functions

NOX::Abstract::Group::ReturnType solve (bool trans, Teuchos::ParameterList &params, const NOX::Abstract::MultiVector *F, const NOX::Abstract::MultiVector::DenseMatrix *G, NOX::Abstract::MultiVector &X, NOX::Abstract::MultiVector::DenseMatrix &Y) const
 Solve linear system.

Protected Attributes

Teuchos::RCP< LOCA::GlobalDataglobalData
 Global data object.
Teuchos::RCP< Teuchos::ParameterListsolverParams
 Solver parameters.
Teuchos::RCP< const LOCA::LAPACK::Groupgrp
 Pointer to group.
Teuchos::RCP< const LOCA::BorderedSolver::AbstractOperatorop
 Pointer to operator.
Teuchos::RCP< const NOX::Abstract::MultiVectorA
 Pointer to A block.
Teuchos::RCP< const LOCA::MultiContinuation::ConstraintInterfaceMVDXB
 Pointer to B block.
Teuchos::RCP< const NOX::Abstract::MultiVector::DenseMatrixC
 Pointer to C block.
Teuchos::RCP< NOX::LAPACK::LinearSolver<
double > > 
augJacSolver
 The augmented Jacobian matrix solver.
Teuchos::RCP< NOX::LAPACK::LinearSolver<
std::complex< double > > > 
augComplexSolver
 The augmented complex matrix solver.
int n
 Matrix dimension.
int m
 Number of additional rows/columns.
int N
 Size of augmented matrix.
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
bool isZeroF
 flag indicating whether F block is zero
bool isZeroG
 flag indicating whether G block is zero
bool isComplex
 flag indicating whether we are solving the complex matrix or not

Detailed Description

Bordered system solver strategy based on direct factorization.

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} \]

using a direct solve by augmenting the $J$ with $A$, $B$, and $C$. To support this, the group representing $J$ must be a LOCA::LAPACK::Group and the contraint object representing $B$ must be a LOCA::MultiContinuation::ConstraintInterfaceMVDX.


Constructor & Destructor Documentation

LOCA::BorderedSolver::LAPACKDirectSolve::LAPACKDirectSolve ( 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

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

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

Implements LOCA::BorderedSolver::AbstractStrategy.

NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::LAPACKDirectSolve::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 Gaussian Elimination.

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.

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

The params argument is the linear solver parameters.

Implements LOCA::BorderedSolver::AbstractStrategy.

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

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

Intialize solver for a transpose solve.

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

Implements LOCA::BorderedSolver::AbstractStrategy.

void LOCA::BorderedSolver::LAPACKDirectSolve::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:
Generated on Wed May 12 21:41:54 2010 for NOX by  doxygen 1.4.7