Anasazi Version of the Day
Public Member Functions
Anasazi::TsqrOrthoManagerImpl< ScalarType, MV > Class Template Reference

TSQR-based OrthoManager subclass implementation. More...

#include <AnasaziTsqrOrthoManager.hpp>

List of all members.

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 $C := Q^* X$ and $X := X - Q C$.
MagnitudeType orthonormError (const MV &X) const
 Return $ \| I - X^* \cdot X \|_F $.
MagnitudeType blockReorthogThreshold () const
MagnitudeType relativeRankTolerance () const

Detailed Description

template<class ScalarType, class MV>
class Anasazi::TsqrOrthoManagerImpl< ScalarType, MV >

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.


Constructor & Destructor Documentation

template<class ScalarType , class MV >
Anasazi::TsqrOrthoManagerImpl< ScalarType, MV >::TsqrOrthoManagerImpl ( const Teuchos::ParameterList tsqrParams) [inline]

Constructor.

Parameters:
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.


Member Function Documentation

template<class ScalarType , class MV >
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 $C := Q^* X$ and $X := X - Q C$.

Warning:
This method does not do reorthogonalization. This is because the reorthogonalization test requires normalization as well.

Definition at line 200 of file AnasaziTsqrOrthoManager.hpp.

template<class ScalarType , class MV >
MagnitudeType Anasazi::TsqrOrthoManagerImpl< ScalarType, MV >::orthonormError ( const MV &  X) const [inline]

Return $ \| I - X^* \cdot X \|_F $.

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.

template<class ScalarType , class MV >
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.

template<class ScalarType , class MV >
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.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends