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
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().