|
Anasazi Version of the Day
|
TSQR-based OrthoManager subclass implementation. More...
#include <AnasaziTsqrOrthoManager.hpp>
Public Member Functions | |
| TsqrOrthoManagerImpl (const Teuchos::ParameterList &tsqrParams) | |
| Constructor. | |
| void | project (MV &X, const_prev_mvs_type Q, prev_coeffs_type C=Teuchos::tuple(serial_matrix_ptr(Teuchos::null))) const |
Compute and . | |
| MagnitudeType | orthonormError (const MV &X) const |
Return . | |
| MagnitudeType | blockReorthogThreshold () const |
| MagnitudeType | relativeRankTolerance () const |
TSQR-based OrthoManager subclass implementation.
TsqrOrthoManagerImpl implements the interface defined by OrthoManager. It doesn't actually inherit from OrthoManager, which gives us a bit more freedom when defining the actual subclass of OrthoManager (TsqrOrthoManager).
This class uses a combination of Tall Skinny QR (TSQR) and Block Gram-Schmidt (BGS) to orthogonalize multivectors.
The Block Gram-Schmidt procedure used here is inspired by that of G. W. Stewart ("Block Gram-Schmidt Orthogonalization", SISC vol 31 #1 pp. 761--775, 2008), except that we use TSQR+SVD instead of standard Gram-Schmidt with orthogonalization to handle the current block. "Orthogonalization faults" may still happen, but we do not handle them by default. Rather, we make one BGS pass, do TSQR+SVD, check the resulting column norms, and make a second BGS pass (+ TSQR+SVD) if necessary. If we then detect an orthogonalization fault, we throw TsqrOrthoFault.
Definition at line 116 of file AnasaziTsqrOrthoManager.hpp.
| Anasazi::TsqrOrthoManagerImpl< ScalarType, MV >::TsqrOrthoManagerImpl | ( | const Teuchos::ParameterList & | tsqrParams | ) | [inline] |
Constructor.
| tsqrParams | [in] Configuration parameters for TSQR. See TSQR documentation for how to set those. They depend on which multivector (MV) class you are using (since each MV class maps to a specific TSQR implementation). |
| Op | [in] Inner product. Don't set to anything not Teuchos::null, otherwise an exception will be thrown. Also, don't call setOp(). |
Definition at line 140 of file AnasaziTsqrOrthoManager.hpp.
| void Anasazi::TsqrOrthoManagerImpl< ScalarType, MV >::project | ( | MV & | X, |
| const_prev_mvs_type | Q, | ||
| prev_coeffs_type | C = Teuchos::tuple (serial_matrix_ptr (Teuchos::null)) |
||
| ) | const [inline] |
Compute
and
.
Definition at line 200 of file AnasaziTsqrOrthoManager.hpp.
| MagnitudeType Anasazi::TsqrOrthoManagerImpl< ScalarType, MV >::orthonormError | ( | const MV & | X | ) | const [inline] |
Return
.
Return the Frobenius norm of I - X^* X, which is an absolute measure of the orthogonality of the columns of X.
Definition at line 497 of file AnasaziTsqrOrthoManager.hpp.
| MagnitudeType Anasazi::TsqrOrthoManagerImpl< ScalarType, MV >::blockReorthogThreshold | ( | ) | const [inline] |
Relative tolerance for triggering a block reorthogonalization. If any column norm in a block decreases by this amount, then we reorthogonalize.
Definition at line 522 of file AnasaziTsqrOrthoManager.hpp.
| MagnitudeType Anasazi::TsqrOrthoManagerImpl< ScalarType, MV >::relativeRankTolerance | ( | ) | const [inline] |
Relative tolerance for determining (via the SVD) whether a block is of full numerical rank.
Definition at line 525 of file AnasaziTsqrOrthoManager.hpp.
1.7.4