#include <LOCA_BorderedSystem_EpetraHouseholder.H>
Inheritance diagram for LOCA::BorderedSystem::EpetraHouseholder:
Public Member Functions | |
| EpetraHouseholder (const Teuchos::RefCountPtr< LOCA::GlobalData > &global_data, const Teuchos::RefCountPtr< LOCA::Parameter::SublistParser > &topParams, const Teuchos::RefCountPtr< NOX::Parameter::List > &solverParams) | |
| Constructor. | |
| virtual | ~EpetraHouseholder () |
| Destructor. | |
| virtual void | setIsContiguous (bool flag) |
| Set flag indicating whether F and A are stored in a continguous multivector. | |
| virtual void | setMatrixBlocks (const Teuchos::RefCountPtr< const NOX::Abstract::Group > &group, const Teuchos::RefCountPtr< const NOX::Abstract::MultiVector > &blockA, const Teuchos::RefCountPtr< const LOCA::MultiContinuation::ConstraintInterface > &blockB, const Teuchos::RefCountPtr< const NOX::Abstract::MultiVector::DenseMatrix > &blockC) |
| Set blocks. | |
| 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 (NOX::Parameter::List ¶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. | |
Protected Member Functions | |
| void | factorConstraints () |
| Factors the constraint derivatives using the QR-factorization and generates the Y, T, and R matrices as described above. | |
| void | computeHouseholderVector (int col, const NOX::Abstract::MultiVector &A_x, const NOX::Abstract::MultiVector::DenseMatrix &A_p, NOX::Abstract::MultiVector &V_x, NOX::Abstract::MultiVector::DenseMatrix &V_p, double &beta) |
Computes the Householder vector V_x, V_p for column col of A_x and A_p, starting at row col of A_p. | |
| void | applyHouseholderVector (const NOX::Abstract::MultiVector &V_x, const NOX::Abstract::MultiVector::DenseMatrix &V_p, double beta, NOX::Abstract::MultiVector &A_x, NOX::Abstract::MultiVector::DenseMatrix &A_p) |
Applies the Householder vector V_x, V_p to the matrix sub-block represented by A_x and A_p. | |
| void | applyCompactWY (NOX::Abstract::MultiVector &x, NOX::Abstract::MultiVector::DenseMatrix &y, bool isZeroX, bool isZeroY, bool useTranspose) const |
Applies the operator Q as described above overwriting x and y. If either of x or y are zero on input, set the corresponding isZeroX or isZeroY flags. Set\ useTranspose to true to instead apply the transpose of Q. | |
| void | applyCompactWY (const NOX::Abstract::MultiVector *input_x, const NOX::Abstract::MultiVector::DenseMatrix *input_y, NOX::Abstract::MultiVector &result_x, NOX::Abstract::MultiVector::DenseMatrix &result_y, bool useTranspose) const |
| Another version of applyCompactWY() that does not overwrite its inputs. If either input is zero, set the corresponding pointer to NULL. | |
| NOX::Abstract::Group::ReturnType | solveAZero (NOX::Parameter::List ¶ms, const LOCA::MultiContinuation::ConstraintInterface *BB, const NOX::Abstract::MultiVector::DenseMatrix *CC, 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 of equations when the A block is zero using a simple block elimination. | |
| NOX::Abstract::Group::ReturnType | solveBZero (NOX::Parameter::List ¶ms, const NOX::Abstract::MultiVector *AA, const NOX::Abstract::MultiVector::DenseMatrix *CC, 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 of equations when the B block is zero using a simple block elimination. | |
Protected Attributes | |
| Teuchos::RefCountPtr< LOCA::GlobalData > | globalData |
| Global data object. | |
| Teuchos::RefCountPtr< NOX::Parameter::List > | solverParams |
| Solver parameters. | |
|
Teuchos::RefCountPtr< const LOCA::EpetraNew::Group > | grp |
| Pointer to group storing J. | |
|
Teuchos::RefCountPtr< const NOX::Abstract::MultiVector > | A |
| Pointer to A block. | |
|
Teuchos::RefCountPtr< const NOX::Abstract::MultiVector > | B |
| Pointer to B block. | |
|
Teuchos::RefCountPtr< const NOX::Abstract::MultiVector::DenseMatrix > | C |
| Pointer to C block. | |
|
Teuchos::RefCountPtr< const LOCA::MultiContinuation::ConstraintInterfaceMVDX > | constraints |
| Pointer to constraint interface. | |
| Teuchos::RefCountPtr< 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::RefCountPtr< NOX::Abstract::MultiVector > | v_x |
| Vector store 1 single Householder vector. | |
| 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 | isContiguous |
| flag indicating whether F and A are contiguous | |
| Teuchos::BLAS< int, double > | dblas |
| BLAS Wrappers. | |
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
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::CompactWYOp.
|
||||||||||||||||
|
Constructor.
|
|
||||||||||||||||||||
|
Computed extended matrix-multivector product. Computes
Implements LOCA::BorderedSystem::AbstractStrategy. |
|
||||||||||||||||||||||||
|
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::BorderedSystem::AbstractStrategy. |
|
||||||||||||||||||||
|
Computed extended matrix transpose-multivector product. Computes
Implements LOCA::BorderedSystem::AbstractStrategy. |
|
||||||||||||||||||||||||||||
|
Computes the Householder vector The algorithm implemented here is essentially algorithm 5.1.1 of Golub and Van Loan. |
|
||||||||||||||||||||
|
Set blocks.
The Implements LOCA::BorderedSystem::AbstractStrategy. |
1.3.9.1