|
NOX Development
|
A convenience class to compute the QR factorization of a an extended multi-vector. More...
#include <LOCA_BorderedSolver_HouseholderQR.H>
Public Member Functions | |
| HouseholderQR (const Teuchos::RCP< LOCA::GlobalData > &global_data) | |
| Constructor. | |
| virtual | ~HouseholderQR () |
| Destructor. | |
| void | computeQR (const NOX::Abstract::MultiVector::DenseMatrix &C, const NOX::Abstract::MultiVector &B, bool use_c_transpose, NOX::Abstract::MultiVector::DenseMatrix &Y1, NOX::Abstract::MultiVector &Y2, NOX::Abstract::MultiVector::DenseMatrix &T, NOX::Abstract::MultiVector::DenseMatrix &R) |
| Compute QR factorization as described above. | |
| void | applyCompactWY (const NOX::Abstract::MultiVector::DenseMatrix &Y1, const NOX::Abstract::MultiVector &Y2, const NOX::Abstract::MultiVector::DenseMatrix &T, NOX::Abstract::MultiVector::DenseMatrix &X1, NOX::Abstract::MultiVector &X2, bool isZeroX1, bool isZeroX2, 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::DenseMatrix &Y1, const NOX::Abstract::MultiVector &Y2, const NOX::Abstract::MultiVector::DenseMatrix &T, const NOX::Abstract::MultiVector::DenseMatrix *input1, const NOX::Abstract::MultiVector *input2, NOX::Abstract::MultiVector::DenseMatrix &result1, NOX::Abstract::MultiVector &result2, bool useTranspose) const |
| Another version of applyCompactWY() that does not overwrite its inputs. If either input is zero, set the corresponding pointer to NULL. | |
Protected Member Functions | |
| void | computeHouseholderVector (int col, const NOX::Abstract::MultiVector::DenseMatrix &A1, const NOX::Abstract::MultiVector &A2, NOX::Abstract::MultiVector::DenseMatrix &V1, NOX::Abstract::MultiVector &V2, double &beta) |
Computes the Householder vector V1, V2 for column col of A1 and A2, starting at row col of A1. | |
| void | applyHouseholderVector (const NOX::Abstract::MultiVector::DenseMatrix &V1, const NOX::Abstract::MultiVector &V2, double beta, NOX::Abstract::MultiVector::DenseMatrix &A1, NOX::Abstract::MultiVector &A2) |
Applies the Householder vector V1, V2 to the matrix sub-block represented by A1 and A2. | |
Protected Attributes | |
| Teuchos::RCP< LOCA::GlobalData > | globalData |
| Global data object. | |
| Teuchos::BLAS< int, double > | dblas |
| BLAS Wrappers. | |
A convenience class to compute the QR factorization of a an extended multi-vector.
This class computes the QR factorization
![\[
Q^T
\begin{bmatrix}
op(C) \\
B
\end{bmatrix} =
\begin{bmatrix}
R \\
0
\end{bmatrix}
\]](form_431.png)
where 

















| LOCA::BorderedSolver::HouseholderQR::HouseholderQR | ( | const Teuchos::RCP< LOCA::GlobalData > & | global_data | ) |
Constructor.
| global_data | [in] Global data object |
|
protected |
Computes the Householder vector V1, V2 for column col of A1 and A2, starting at row col of A1.
The algorithm implemented here is essentially algorithm 5.1.1 of Golub and Van Loan.
References NOX::Abstract::MultiVector::scale().
| void LOCA::BorderedSolver::HouseholderQR::computeQR | ( | const NOX::Abstract::MultiVector::DenseMatrix & | C, |
| const NOX::Abstract::MultiVector & | B, | ||
| bool | use_c_transpose, | ||
| NOX::Abstract::MultiVector::DenseMatrix & | Y1, | ||
| NOX::Abstract::MultiVector & | Y2, | ||
| NOX::Abstract::MultiVector::DenseMatrix & | T, | ||
| NOX::Abstract::MultiVector::DenseMatrix & | R | ||
| ) |
Compute QR factorization as described above.
Set use_c_transpose to true if the transpose of 
References NOX::Abstract::MultiVector::clone(), NOX::Abstract::MultiVector::multiply(), NOX::Abstract::MultiVector::numVectors(), and NOX::Abstract::MultiVector::subView().