#include <LOCA_BorderedSolver_EpetraHouseholder.H>
Inheritance diagram for LOCA::BorderedSolver::EpetraHouseholder:
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:
and
terms in the preconditioner for
as a LOCA::Epetra::LowRankUpdateRowMatrix for computing the preconditioner. This is valid only for preconditioners that accept an Epetra_RowMatrix interface.
|
||||||||||||||||
|
Constructor.
|
|
||||||||||||||||||||
|
Computed extended matrix-multivector product. Computes
Implements LOCA::BorderedSolver::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::BorderedSolver::AbstractStrategy. |
|
||||||||||||||||||||||||
|
Solves the transpose of the extended system as defined above. The params argument is the linear solver parameters. Reimplemented from LOCA::BorderedSolver::AbstractStrategy. |
|
||||||||||||||||||||
|
Computed extended matrix transpose-multivector product. Computes
Implements LOCA::BorderedSolver::AbstractStrategy. |
|
|
Intialize solver for a solve. This should be called after setMatrixBlocks(), but before applyInverse(). Implements LOCA::BorderedSolver::AbstractStrategy. |
|
|
Intialize solver for a transpose solve. This should be called after setMatrixBlocks(), but before applyInverseTranspose(). Implements LOCA::BorderedSolver::AbstractStrategy. |
|
||||||||||||||||||||
|
Set blocks.
The Implements LOCA::BorderedSolver::AbstractStrategy. |
1.3.9.1