#include <LOCA_BorderedSolver_EpetraHouseholder.H>
Public Member Functions | |
EpetraHouseholder (const Teuchos::RCP< LOCA::GlobalData > &global_data, const Teuchos::RCP< LOCA::Parameter::SublistParser > &topParams, const Teuchos::RCP< Teuchos::ParameterList > &solverParams) | |
Constructor. | |
virtual | ~EpetraHouseholder () |
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 ¶ms, 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 ¶ms, 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 Types | |
enum | PRECONDITIONER_METHOD { JACOBIAN, SMW } |
Enumerated type indicating preconditioner method. More... | |
Protected Member Functions | |
virtual NOX::Abstract::Group::ReturnType | solve (Teuchos::ParameterList ¶ms, 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 | solveTranspose (Teuchos::ParameterList ¶ms, 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. | |
NOX::Abstract::Group::ReturnType | computeUV (const NOX::Abstract::MultiVector::DenseMatrix &Y1, const NOX::Abstract::MultiVector &Y2, const NOX::Abstract::MultiVector::DenseMatrix &T, const NOX::Abstract::MultiVector &A, NOX::Abstract::MultiVector &U, NOX::Abstract::MultiVector &V, bool use_jac_transpose) |
Compute ![]() ![]() ![]() | |
void | updateJacobianForPreconditioner (const NOX::Abstract::MultiVector &U, const NOX::Abstract::MultiVector &V, Epetra_CrsMatrix &jac) const |
Overwrites the Jacobian ![]() ![]() ![]() | |
Teuchos::RCP < NOX::Abstract::MultiVector > | createBlockMV (const NOX::Abstract::MultiVector &v) const |
void | setBlockMV (const NOX::Abstract::MultiVector &bv, NOX::Abstract::MultiVector &v) const |
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. | |
LOCA::BorderedSolver::HouseholderQR | qrFact |
QR Factorization object. | |
Teuchos::RCP < NOX::Abstract::MultiVector > | house_x |
Solution component of Householder multivec. | |
NOX::Abstract::MultiVector::DenseMatrix | house_p |
Parameter component of Householder multivec. | |
NOX::Abstract::MultiVector::DenseMatrix | T |
T matrix in compact WY representation. | |
NOX::Abstract::MultiVector::DenseMatrix | R |
R matrix in QR factorization. | |
Teuchos::RCP < NOX::Abstract::MultiVector > | U |
U matrix in low-rank update form P = J + U*V^T. | |
Teuchos::RCP < NOX::Abstract::MultiVector > | V |
V matrix in low-rank update form P = J + U*V^T. | |
Teuchos::RCP < NOX::Abstract::MultiVector > | house_x_trans |
Solution component of Householder multivec for transposed system. | |
NOX::Abstract::MultiVector::DenseMatrix | house_p_trans |
Parameter component of Householder multivec for transposed system. | |
NOX::Abstract::MultiVector::DenseMatrix | T_trans |
T matrix in compact WY representation for transposed system. | |
NOX::Abstract::MultiVector::DenseMatrix | R_trans |
R matrix in QR factorization for transposed system. | |
Teuchos::RCP < NOX::Abstract::MultiVector > | U_trans |
U matrix in low-rank update form P = J + U*V^T for transposed system. | |
Teuchos::RCP < NOX::Abstract::MultiVector > | V_trans |
V matrix in low-rank update form P = J + U*V^T for transposed system. | |
Teuchos::RCP< const NOX::Abstract::MultiVector > | Ablock |
Pointer to A block as an Epetra multivector. | |
Teuchos::RCP< const NOX::Abstract::MultiVector > | Bblock |
Pointer to B block as an Epetra multivector. | |
Teuchos::RCP < NOX::Abstract::MultiVector > | Ascaled |
Pointer to scaled A block. | |
Teuchos::RCP < NOX::Abstract::MultiVector > | Bscaled |
Pointer to scaled B block. | |
Teuchos::RCP < NOX::Abstract::MultiVector::DenseMatrix > | Cscaled |
Pointer to scaled C block. | |
Teuchos::RCP < NOX::Epetra::LinearSystem > | linSys |
Pointer to linear system. | |
Teuchos::RCP< Epetra_Operator > | epetraOp |
Pointer to Epetra operator. | |
Teuchos::RCP< const Epetra_BlockMap > | baseMap |
Pointer to base map for block vectors. | |
Teuchos::RCP< const Epetra_BlockMap > | globalMap |
Pointer to global map for block vectors. | |
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 | |
bool | isValidForSolve |
Flag indicating whether constraint factorization for solve has been computed. | |
bool | isValidForTransposeSolve |
Flag indicating whether constraint factorization for transpoe solve has been computed. | |
Teuchos::BLAS< int, double > | dblas |
BLAS Wrappers. | |
bool | scale_rows |
Whether we should scale augmented rows to have unit 2-norm. | |
std::vector< double > | scale_vals |
Scale values for each row. | |
PRECONDITIONER_METHOD | precMethod |
Preconditioner method. | |
bool | includeUV |
Flag indicating whether to include U*V^T terms in preconditioner. | |
bool | use_P_For_Prec |
Flag indicating whether to use P = J + U*V^T in preconditioner. | |
bool | isComplex |
Flag indicating whether we are doing a complex solve. | |
double | omega |
Frequency for complex systems. | |
Private Member Functions | |
EpetraHouseholder (const EpetraHouseholder &) | |
Private to prohibit copying. | |
EpetraHouseholder & | operator= (const EpetraHouseholder &) |
Private to prohibit copying. |
This class solves the extended system of equations
using Householder tranformations. The algorithm works as follows: First consider a slightly rearranged version of the extended system of equations:
Let
be the QR decomposition of the constraints matrix where and
. Define
then the extended system of equations is equivalent to
and hence
This last equation equation can be written
where is given by
and
We then recover and
by
It can be further shown that the operator above can be written
where ,
and
. The equation
is solved using an iterative solver using the definition of
above, in this case AztecOO. The system is preconditioned using the preconditioner for
. The operator
is generated using the standard Householder QR algorithm (Algorithm 5.2.1, G. Golub and C. Van Loan, "Matrix Computations," 3rd Edition, Johns Hopkins, Baltimore, 1996) and is stored using the compact WY representation:
(see R. Schreiver and C. Van Loan, "A Storage-Efficient WY Represntation for Products of Householder Transformations," SIAM J. Sci. Stat. Comput., Vol. 10, No. 1, pp. 53-57, January 1989).
The operator representing is encapsulated in the class LOCA::Epetra::LowRankUpdateRowMatrix if
is an Epetra_RowMatrix and LOCA::Epetra::LowRankUpdateOp otherwise. If the row matrix version is available
can be scaled and also used to construct a preconditioner. If "Include UV In Preconditioner" is true as discussed below, the
and
terms will be included when computing this preconditioner, which can help stability when
is nearly singular.
The class is intialized via the solverParams
parameter list argument to the constructor. The parameters this class recognizes are:
Definition at line 257 of file LOCA_BorderedSolver_EpetraHouseholder.H.
enum LOCA::BorderedSolver::EpetraHouseholder::PRECONDITIONER_METHOD [protected] |
Enumerated type indicating preconditioner method.
Definition at line 455 of file LOCA_BorderedSolver_EpetraHouseholder.H.
LOCA::BorderedSolver::EpetraHouseholder::EpetraHouseholder | ( | 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 |
Definition at line 71 of file LOCA_BorderedSolver_EpetraHouseholder.C.
References globalData, includeUV, precMethod, scale_rows, solverParams, and use_P_For_Prec.
LOCA::BorderedSolver::EpetraHouseholder::~EpetraHouseholder | ( | ) | [virtual] |
LOCA::BorderedSolver::EpetraHouseholder::EpetraHouseholder | ( | const EpetraHouseholder & | ) | [private] |
Private to prohibit copying.
void LOCA::BorderedSolver::EpetraHouseholder::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.
Definition at line 142 of file LOCA_BorderedSolver_EpetraHouseholder.C.
References A, Ablock, Ascaled, B, baseMap, Bblock, Bscaled, C, constraints, Cscaled, epetraOp, globalData, globalMap, grp, isComplex, isValidForSolve, isValidForTransposeSolve, isZeroA, isZeroB, isZeroC, linSys, numConstraints, and omega.
NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::EpetraHouseholder::initForSolve | ( | ) | [virtual] |
Intialize solver for a solve.
This should be called after setMatrixBlocks(), but before applyInverse().
Implements LOCA::BorderedSolver::AbstractStrategy.
Definition at line 297 of file LOCA_BorderedSolver_EpetraHouseholder.C.
References Ablock, Bblock, Bscaled, C, LOCA::BorderedSolver::HouseholderQR::computeQR(), computeUV(), Cscaled, globalData, house_p, house_x, isValidForSolve, isZeroA, isZeroB, numConstraints, NOX::Abstract::Group::Ok, qrFact, R, scale_rows, scale_vals, NOX::ShapeCopy, T, U, and V.
NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::EpetraHouseholder::initForTransposeSolve | ( | ) | [virtual] |
Intialize solver for a transpose solve.
This should be called after setMatrixBlocks(), but before applyInverseTranspose().
Implements LOCA::BorderedSolver::AbstractStrategy.
Definition at line 350 of file LOCA_BorderedSolver_EpetraHouseholder.C.
References Ablock, Ascaled, Bblock, C, LOCA::BorderedSolver::HouseholderQR::computeQR(), computeUV(), Cscaled, globalData, house_p_trans, house_x_trans, isValidForTransposeSolve, isZeroA, isZeroB, numConstraints, NOX::Abstract::Group::Ok, qrFact, R_trans, scale_rows, scale_vals, NOX::ShapeCopy, T_trans, U_trans, and V_trans.
NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::EpetraHouseholder::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.
Definition at line 406 of file LOCA_BorderedSolver_EpetraHouseholder.C.
References A, C, constraints, NOX::Abstract::Group::Failed, isZeroA, isZeroB, isZeroC, and NOX::Abstract::MultiVector::update().
NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::EpetraHouseholder::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.
Definition at line 438 of file LOCA_BorderedSolver_EpetraHouseholder.C.
References A, C, constraints, NOX::Abstract::Group::Failed, isZeroA, isZeroB, isZeroC, and NOX::Abstract::MultiVector::multiply().
NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::EpetraHouseholder::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.
Definition at line 470 of file LOCA_BorderedSolver_EpetraHouseholder.C.
References A, C, constraints, globalData, NOX::Abstract::MultiVector::init(), isComplex, isZeroA, isZeroB, NOX::Abstract::Group::Ok, scale_rows, scale_vals, solve(), LOCA::BorderedSolver::UpperTriangularBlockElimination::solve(), and LOCA::BorderedSolver::LowerTriangularBlockElimination::solve().
NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::EpetraHouseholder::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.
Definition at line 527 of file LOCA_BorderedSolver_EpetraHouseholder.C.
References A, B, C, globalData, grp, NOX::Abstract::MultiVector::init(), isComplex, isZeroA, isZeroB, NOX::Abstract::Group::Ok, scale_rows, scale_vals, solveTranspose(), LOCA::BorderedSolver::LowerTriangularBlockElimination::solveTranspose(), and LOCA::BorderedSolver::UpperTriangularBlockElimination::solveTranspose().
NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::EpetraHouseholder::solve | ( | Teuchos::ParameterList & | params, | |
const NOX::Abstract::MultiVector * | F, | |||
const NOX::Abstract::MultiVector::DenseMatrix * | G, | |||
NOX::Abstract::MultiVector & | X, | |||
NOX::Abstract::MultiVector::DenseMatrix & | Y | |||
) | const [protected, virtual] |
Solves the extended system using the technique described above.
Definition at line 597 of file LOCA_BorderedSolver_EpetraHouseholder.C.
References Ablock, LOCA::BorderedSolver::HouseholderQR::applyCompactWY(), NOX::Abstract::MultiVector::clone(), dblas, epetraOp, NOX::Abstract::Group::Failed, globalData, grp, house_p, house_x, includeUV, NOX::Abstract::MultiVector::init(), isComplex, isValidForSolve, linSys, NOX::Abstract::Group::NotConverged, NOX::Abstract::MultiVector::numVectors(), NOX::Abstract::Group::Ok, omega, precMethod, qrFact, R, NOX::ShapeCopy, T, U, updateJacobianForPreconditioner(), use_P_For_Prec, and V.
Referenced by applyInverse().
NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::EpetraHouseholder::solveTranspose | ( | Teuchos::ParameterList & | params, | |
const NOX::Abstract::MultiVector * | F, | |||
const NOX::Abstract::MultiVector::DenseMatrix * | G, | |||
NOX::Abstract::MultiVector & | X, | |||
NOX::Abstract::MultiVector::DenseMatrix & | Y | |||
) | const [protected, virtual] |
Solves the transpose of the extended system as defined above.
Definition at line 774 of file LOCA_BorderedSolver_EpetraHouseholder.C.
References LOCA::BorderedSolver::HouseholderQR::applyCompactWY(), Bblock, NOX::Abstract::MultiVector::clone(), LOCA::Epetra::TransposeLinearSystem::Factory::create(), dblas, epetraOp, NOX::Abstract::Group::Failed, globalData, grp, house_p_trans, house_x_trans, includeUV, NOX::Abstract::MultiVector::init(), isComplex, isValidForTransposeSolve, linSys, NOX::Abstract::Group::NotConverged, NOX::Abstract::MultiVector::numVectors(), NOX::Abstract::Group::Ok, omega, qrFact, R_trans, NOX::ShapeCopy, solverParams, T_trans, U_trans, updateJacobianForPreconditioner(), use_P_For_Prec, and V_trans.
Referenced by applyInverseTranspose().
NOX::Abstract::Group::ReturnType LOCA::BorderedSolver::EpetraHouseholder::computeUV | ( | const NOX::Abstract::MultiVector::DenseMatrix & | Y1, | |
const NOX::Abstract::MultiVector & | Y2, | |||
const NOX::Abstract::MultiVector::DenseMatrix & | T, | |||
const NOX::Abstract::MultiVector & | A, | |||
NOX::Abstract::MultiVector & | U, | |||
NOX::Abstract::MultiVector & | V, | |||
bool | use_jac_transpose | |||
) | [protected] |
Compute and
multivectors in
.
Definition at line 952 of file LOCA_BorderedSolver_EpetraHouseholder.C.
References epetraOp, NOX::Abstract::Group::Failed, NOX::Epetra::MultiVector::getEpetraMultiVector(), NOX::Abstract::Group::Ok, and NOX::Abstract::MultiVector::update().
Referenced by initForSolve(), and initForTransposeSolve().
void LOCA::BorderedSolver::EpetraHouseholder::updateJacobianForPreconditioner | ( | const NOX::Abstract::MultiVector & | U, | |
const NOX::Abstract::MultiVector & | V, | |||
Epetra_CrsMatrix & | jac | |||
) | const [protected] |
Overwrites the Jacobian with
for computing the preconditioner of
.
Definition at line 982 of file LOCA_BorderedSolver_EpetraHouseholder.C.
References NOX::Epetra::MultiVector::getEpetraMultiVector(), and numConstraints.
Referenced by solve(), and solveTranspose().
EpetraHouseholder& LOCA::BorderedSolver::EpetraHouseholder::operator= | ( | const EpetraHouseholder & | ) | [private] |
Private to prohibit copying.
Teuchos::RCP<LOCA::GlobalData> LOCA::BorderedSolver::EpetraHouseholder::globalData [protected] |
Global data object.
Definition at line 461 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by applyInverse(), applyInverseTranspose(), EpetraHouseholder(), initForSolve(), initForTransposeSolve(), setMatrixBlocks(), solve(), and solveTranspose().
Teuchos::RCP<Teuchos::ParameterList> LOCA::BorderedSolver::EpetraHouseholder::solverParams [protected] |
Solver parameters.
Definition at line 464 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by EpetraHouseholder(), and solveTranspose().
Teuchos::RCP<LOCA::Epetra::Group> LOCA::BorderedSolver::EpetraHouseholder::grp [protected] |
Pointer to group storing J.
Definition at line 467 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by applyInverseTranspose(), setMatrixBlocks(), solve(), and solveTranspose().
Teuchos::RCP<const NOX::Abstract::MultiVector> LOCA::BorderedSolver::EpetraHouseholder::A [protected] |
Pointer to A block.
Definition at line 473 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by apply(), applyInverse(), applyInverseTranspose(), applyTranspose(), and setMatrixBlocks().
Teuchos::RCP<const NOX::Abstract::MultiVector> LOCA::BorderedSolver::EpetraHouseholder::B [protected] |
Pointer to B block.
Definition at line 476 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by applyInverseTranspose(), and setMatrixBlocks().
Teuchos::RCP<const NOX::Abstract::MultiVector::DenseMatrix> LOCA::BorderedSolver::EpetraHouseholder::C [protected] |
Pointer to C block.
Definition at line 479 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by apply(), applyInverse(), applyInverseTranspose(), applyTranspose(), initForSolve(), initForTransposeSolve(), and setMatrixBlocks().
Teuchos::RCP<const LOCA::MultiContinuation::ConstraintInterfaceMVDX> LOCA::BorderedSolver::EpetraHouseholder::constraints [protected] |
Pointer to constraint interface.
Definition at line 482 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by apply(), applyInverse(), applyTranspose(), and setMatrixBlocks().
QR Factorization object.
Definition at line 485 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by initForSolve(), initForTransposeSolve(), solve(), and solveTranspose().
Teuchos::RCP<NOX::Abstract::MultiVector> LOCA::BorderedSolver::EpetraHouseholder::house_x [protected] |
Solution component of Householder multivec.
Definition at line 488 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by initForSolve(), and solve().
NOX::Abstract::MultiVector::DenseMatrix LOCA::BorderedSolver::EpetraHouseholder::house_p [protected] |
Parameter component of Householder multivec.
Definition at line 491 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by initForSolve(), and solve().
T matrix in compact WY representation.
Definition at line 494 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by initForSolve(), and solve().
R matrix in QR factorization.
Definition at line 497 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by initForSolve(), and solve().
Teuchos::RCP<NOX::Abstract::MultiVector> LOCA::BorderedSolver::EpetraHouseholder::U [protected] |
U matrix in low-rank update form P = J + U*V^T.
Definition at line 500 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by initForSolve(), and solve().
Teuchos::RCP<NOX::Abstract::MultiVector> LOCA::BorderedSolver::EpetraHouseholder::V [protected] |
V matrix in low-rank update form P = J + U*V^T.
Definition at line 503 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by initForSolve(), and solve().
Teuchos::RCP<NOX::Abstract::MultiVector> LOCA::BorderedSolver::EpetraHouseholder::house_x_trans [protected] |
Solution component of Householder multivec for transposed system.
Definition at line 506 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by initForTransposeSolve(), and solveTranspose().
NOX::Abstract::MultiVector::DenseMatrix LOCA::BorderedSolver::EpetraHouseholder::house_p_trans [protected] |
Parameter component of Householder multivec for transposed system.
Definition at line 509 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by initForTransposeSolve(), and solveTranspose().
NOX::Abstract::MultiVector::DenseMatrix LOCA::BorderedSolver::EpetraHouseholder::T_trans [protected] |
T matrix in compact WY representation for transposed system.
Definition at line 512 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by initForTransposeSolve(), and solveTranspose().
NOX::Abstract::MultiVector::DenseMatrix LOCA::BorderedSolver::EpetraHouseholder::R_trans [protected] |
R matrix in QR factorization for transposed system.
Definition at line 515 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by initForTransposeSolve(), and solveTranspose().
Teuchos::RCP<NOX::Abstract::MultiVector> LOCA::BorderedSolver::EpetraHouseholder::U_trans [protected] |
U matrix in low-rank update form P = J + U*V^T for transposed system.
Definition at line 518 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by initForTransposeSolve(), and solveTranspose().
Teuchos::RCP<NOX::Abstract::MultiVector> LOCA::BorderedSolver::EpetraHouseholder::V_trans [protected] |
V matrix in low-rank update form P = J + U*V^T for transposed system.
Definition at line 521 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by initForTransposeSolve(), and solveTranspose().
Teuchos::RCP<const NOX::Abstract::MultiVector> LOCA::BorderedSolver::EpetraHouseholder::Ablock [protected] |
Pointer to A block as an Epetra multivector.
Definition at line 524 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by initForSolve(), initForTransposeSolve(), setMatrixBlocks(), and solve().
Teuchos::RCP<const NOX::Abstract::MultiVector> LOCA::BorderedSolver::EpetraHouseholder::Bblock [protected] |
Pointer to B block as an Epetra multivector.
Definition at line 527 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by initForSolve(), initForTransposeSolve(), setMatrixBlocks(), and solveTranspose().
Teuchos::RCP<NOX::Abstract::MultiVector> LOCA::BorderedSolver::EpetraHouseholder::Ascaled [protected] |
Pointer to scaled A block.
Definition at line 530 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by initForTransposeSolve(), and setMatrixBlocks().
Teuchos::RCP<NOX::Abstract::MultiVector> LOCA::BorderedSolver::EpetraHouseholder::Bscaled [protected] |
Pointer to scaled B block.
Definition at line 533 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by initForSolve(), and setMatrixBlocks().
Teuchos::RCP<NOX::Abstract::MultiVector::DenseMatrix> LOCA::BorderedSolver::EpetraHouseholder::Cscaled [protected] |
Pointer to scaled C block.
Definition at line 536 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by initForSolve(), initForTransposeSolve(), and setMatrixBlocks().
Teuchos::RCP<NOX::Epetra::LinearSystem> LOCA::BorderedSolver::EpetraHouseholder::linSys [protected] |
Pointer to linear system.
Definition at line 539 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by setMatrixBlocks(), solve(), and solveTranspose().
Teuchos::RCP<Epetra_Operator> LOCA::BorderedSolver::EpetraHouseholder::epetraOp [protected] |
Pointer to Epetra operator.
Definition at line 542 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by computeUV(), setMatrixBlocks(), solve(), and solveTranspose().
Teuchos::RCP<const Epetra_BlockMap> LOCA::BorderedSolver::EpetraHouseholder::baseMap [protected] |
Pointer to base map for block vectors.
Definition at line 545 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by setMatrixBlocks().
Teuchos::RCP<const Epetra_BlockMap> LOCA::BorderedSolver::EpetraHouseholder::globalMap [protected] |
Pointer to global map for block vectors.
Definition at line 548 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by setMatrixBlocks().
int LOCA::BorderedSolver::EpetraHouseholder::numConstraints [protected] |
Number of constraint equations.
Definition at line 551 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by initForSolve(), initForTransposeSolve(), setMatrixBlocks(), and updateJacobianForPreconditioner().
bool LOCA::BorderedSolver::EpetraHouseholder::isZeroA [protected] |
flag indicating whether A block is zero
Definition at line 554 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by apply(), applyInverse(), applyInverseTranspose(), applyTranspose(), initForSolve(), initForTransposeSolve(), and setMatrixBlocks().
bool LOCA::BorderedSolver::EpetraHouseholder::isZeroB [protected] |
flag indicating whether B block is zero
Definition at line 557 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by apply(), applyInverse(), applyInverseTranspose(), applyTranspose(), initForSolve(), initForTransposeSolve(), and setMatrixBlocks().
bool LOCA::BorderedSolver::EpetraHouseholder::isZeroC [protected] |
flag indicating whether C block is zero
Definition at line 560 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by apply(), applyTranspose(), and setMatrixBlocks().
bool LOCA::BorderedSolver::EpetraHouseholder::isValidForSolve [protected] |
Flag indicating whether constraint factorization for solve has been computed.
Definition at line 566 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by initForSolve(), setMatrixBlocks(), and solve().
bool LOCA::BorderedSolver::EpetraHouseholder::isValidForTransposeSolve [protected] |
Flag indicating whether constraint factorization for transpoe solve has been computed.
Definition at line 572 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by initForTransposeSolve(), setMatrixBlocks(), and solveTranspose().
Teuchos::BLAS<int,double> LOCA::BorderedSolver::EpetraHouseholder::dblas [protected] |
BLAS Wrappers.
Definition at line 575 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by solve(), and solveTranspose().
bool LOCA::BorderedSolver::EpetraHouseholder::scale_rows [protected] |
Whether we should scale augmented rows to have unit 2-norm.
Definition at line 578 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by applyInverse(), applyInverseTranspose(), EpetraHouseholder(), initForSolve(), and initForTransposeSolve().
std::vector<double> LOCA::BorderedSolver::EpetraHouseholder::scale_vals [protected] |
Scale values for each row.
Definition at line 581 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by applyInverse(), applyInverseTranspose(), initForSolve(), and initForTransposeSolve().
Preconditioner method.
Definition at line 584 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by EpetraHouseholder(), and solve().
bool LOCA::BorderedSolver::EpetraHouseholder::includeUV [protected] |
Flag indicating whether to include U*V^T terms in preconditioner.
Definition at line 587 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by EpetraHouseholder(), solve(), and solveTranspose().
bool LOCA::BorderedSolver::EpetraHouseholder::use_P_For_Prec [protected] |
Flag indicating whether to use P = J + U*V^T in preconditioner.
Definition at line 590 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by EpetraHouseholder(), solve(), and solveTranspose().
bool LOCA::BorderedSolver::EpetraHouseholder::isComplex [protected] |
Flag indicating whether we are doing a complex solve.
Definition at line 593 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by applyInverse(), applyInverseTranspose(), setMatrixBlocks(), solve(), and solveTranspose().
double LOCA::BorderedSolver::EpetraHouseholder::omega [protected] |
Frequency for complex systems.
Definition at line 596 of file LOCA_BorderedSolver_EpetraHouseholder.H.
Referenced by setMatrixBlocks(), solve(), and solveTranspose().