#include <AnasaziBasicOrthoManager.hpp>
Public Member Functions | |
Constructor/Destructor | |
BasicOrthoManager (Teuchos::RCP< const OP > Op=Teuchos::null, typename Teuchos::ScalarTraits< ScalarType >::magnitudeType kappa=1.41421356, typename Teuchos::ScalarTraits< ScalarType >::magnitudeType eps=0.0, typename Teuchos::ScalarTraits< ScalarType >::magnitudeType tol=0.20) | |
Constructor specifying re-orthogonalization tolerance. | |
~BasicOrthoManager () | |
Destructor. | |
Methods implementing Anasazi::MatOrthoManager | |
void | projectMat (MV &X, Teuchos::Array< Teuchos::RCP< const MV > > Q, Teuchos::Array< Teuchos::RCP< Teuchos::SerialDenseMatrix< int, ScalarType > > > C=Teuchos::tuple(Teuchos::RCP< Teuchos::SerialDenseMatrix< int, ScalarType > >(Teuchos::null)), Teuchos::RCP< MV > MX=Teuchos::null, Teuchos::Array< Teuchos::RCP< const MV > > MQ=Teuchos::tuple(Teuchos::RCP< const MV >(Teuchos::null))) const |
Given a list of mutually orthogonal and internally orthonormal bases Q , this method projects a multivector X onto the space orthogonal to the individual Q[i] , optionally returning the coefficients of X for the individual Q[i] . All of this is done with respect to the inner product innerProd(). | |
int | normalizeMat (MV &X, Teuchos::RCP< Teuchos::SerialDenseMatrix< int, ScalarType > > B=Teuchos::null, Teuchos::RCP< MV > MX=Teuchos::null) const |
This method takes a multivector X and attempts to compute an orthonormal basis for ![]() | |
int | projectAndNormalizeMat (MV &X, Teuchos::Array< Teuchos::RCP< const MV > > Q, Teuchos::Array< Teuchos::RCP< Teuchos::SerialDenseMatrix< int, ScalarType > > > C=Teuchos::tuple(Teuchos::RCP< Teuchos::SerialDenseMatrix< int, ScalarType > >(Teuchos::null)), Teuchos::RCP< Teuchos::SerialDenseMatrix< int, ScalarType > > B=Teuchos::null, Teuchos::RCP< MV > MX=Teuchos::null, Teuchos::Array< Teuchos::RCP< const MV > > MQ=Teuchos::tuple(Teuchos::RCP< const MV >(Teuchos::null))) const |
Given a set of bases Q[i] and a multivector X , this method computes an orthonormal basis for ![]() | |
Error methods | |
Teuchos::ScalarTraits < ScalarType >::magnitudeType | orthonormErrorMat (const MV &X, Teuchos::RCP< const MV > MX=Teuchos::null) const |
This method computes the error in orthonormality of a multivector, measured as the Frobenius norm of the difference innerProd(X,Y) - I . The method has the option of exploiting a caller-provided MX . | |
Teuchos::ScalarTraits < ScalarType >::magnitudeType | orthogErrorMat (const MV &X1, const MV &X2, Teuchos::RCP< const MV > MX1, Teuchos::RCP< const MV > MX2) const |
This method computes the error in orthogonality of two multivectors, measured as the Frobenius norm of innerProd(X,Y) . The method has the option of exploiting a caller-provided MX . | |
Accessor routines | |
void | setKappa (typename Teuchos::ScalarTraits< ScalarType >::magnitudeType kappa) |
Set parameter for re-orthogonalization threshold. | |
Teuchos::ScalarTraits < ScalarType >::magnitudeType | getKappa () const |
Return parameter for re-orthogonalization threshold. |
Definition at line 58 of file AnasaziBasicOrthoManager.hpp.
Anasazi::BasicOrthoManager< ScalarType, MV, OP >::BasicOrthoManager | ( | Teuchos::RCP< const OP > | Op = Teuchos::null , |
|
typename Teuchos::ScalarTraits< ScalarType >::magnitudeType | kappa = 1.41421356 , |
|||
typename Teuchos::ScalarTraits< ScalarType >::magnitudeType | eps = 0.0 , |
|||
typename Teuchos::ScalarTraits< ScalarType >::magnitudeType | tol = 0.20 | |||
) | [inline] |
Constructor specifying re-orthogonalization tolerance.
Definition at line 302 of file AnasaziBasicOrthoManager.hpp.
Anasazi::BasicOrthoManager< ScalarType, MV, OP >::~BasicOrthoManager | ( | ) | [inline] |
Teuchos::ScalarTraits<ScalarType>::magnitudeType Anasazi::BasicOrthoManager< ScalarType, MV, OP >::getKappa | ( | ) | const [inline] |
Return parameter for re-orthogonalization threshold.
Definition at line 276 of file AnasaziBasicOrthoManager.hpp.
int Anasazi::BasicOrthoManager< ScalarType, MV, OP >::normalizeMat | ( | MV & | X, | |
Teuchos::RCP< Teuchos::SerialDenseMatrix< int, ScalarType > > | B = Teuchos::null , |
|||
Teuchos::RCP< MV > | MX = Teuchos::null | |||
) | const [inline, virtual] |
This method takes a multivector X
and attempts to compute an orthonormal basis for , with respect to innerProd().
The method uses classical Gram-Schmidt with selective reorthogonalization. As a result, the coefficient matrix B
is upper triangular.
This routine returns an integer rank
stating the rank of the computed basis. If X
does not have full rank and the normalize() routine does not attempt to augment the subspace, then rank
may be smaller than the number of columns in X
. In this case, only the first rank
columns of output X
and first rank
rows of B
will be valid.
The method attempts to find a basis with dimension equal to the number of columns in X
. It does this by augmenting linearly dependent vectors in X
with random directions. A finite number of these attempts will be made; therefore, it is possible that the dimension of the computed basis is less than the number of vectors in X
.
X | [in/out] The multivector to be modified. On output, the first rank columns of X satisfy
Also,
where | |
MX | [in/out] The image of X under the inner product operator Op . If ![]() Op X. On output, this is updated consistent with updates to X . If ![]() ![]() MX is not referenced. | |
B | [out] The coefficients of the original X with respect to the computed basis. If B is a non-null pointer and B matches the dimensions of B , then the coefficients computed during the orthogonalization routine will be stored in B , similar to calling innerProd( Xout, Xin, B ); B points to a Teuchos::SerialDenseMatrix with size inconsistent with X , then a std::invalid_argument exception will be thrown. Otherwise, if B is null, the caller will not have access to the computed coefficients. This matrix is not necessarily triangular (as in a QR factorization); see the documentation of specific orthogonalization managers.The first rows in B corresponding to the valid columns in X will be upper triangular. |
X
. This specifies how many columns in the returned X
and rows in the returned B
are valid. Implements Anasazi::MatOrthoManager< ScalarType, MV, OP >.
Definition at line 553 of file AnasaziBasicOrthoManager.hpp.
Teuchos::ScalarTraits< ScalarType >::magnitudeType Anasazi::BasicOrthoManager< ScalarType, MV, OP >::orthogErrorMat | ( | const MV & | X1, | |
const MV & | X2, | |||
Teuchos::RCP< const MV > | MX1, | |||
Teuchos::RCP< const MV > | MX2 | |||
) | const [inline, virtual] |
This method computes the error in orthogonality of two multivectors, measured as the Frobenius norm of innerProd(X,Y)
. The method has the option of exploiting a caller-provided MX
.
Implements Anasazi::MatOrthoManager< ScalarType, MV, OP >.
Definition at line 345 of file AnasaziBasicOrthoManager.hpp.
Teuchos::ScalarTraits< ScalarType >::magnitudeType Anasazi::BasicOrthoManager< ScalarType, MV, OP >::orthonormErrorMat | ( | const MV & | X, | |
Teuchos::RCP< const MV > | MX = Teuchos::null | |||
) | const [inline, virtual] |
This method computes the error in orthonormality of a multivector, measured as the Frobenius norm of the difference innerProd(X,Y) - I
. The method has the option of exploiting a caller-provided MX
.
Implements Anasazi::MatOrthoManager< ScalarType, MV, OP >.
Definition at line 328 of file AnasaziBasicOrthoManager.hpp.
int Anasazi::BasicOrthoManager< ScalarType, MV, OP >::projectAndNormalizeMat | ( | MV & | X, | |
Teuchos::Array< Teuchos::RCP< const MV > > | Q, | |||
Teuchos::Array< Teuchos::RCP< Teuchos::SerialDenseMatrix< int, ScalarType > > > | C = Teuchos::tuple(Teuchos::RCP< Teuchos::SerialDenseMatrix<int,ScalarType> >(Teuchos::null)) , |
|||
Teuchos::RCP< Teuchos::SerialDenseMatrix< int, ScalarType > > | B = Teuchos::null , |
|||
Teuchos::RCP< MV > | MX = Teuchos::null , |
|||
Teuchos::Array< Teuchos::RCP< const MV > > | MQ = Teuchos::tuple(Teuchos::RCP<const MV>(Teuchos::null)) | |||
) | const [inline, virtual] |
Given a set of bases Q[i]
and a multivector X
, this method computes an orthonormal basis for .
This routine returns an integer rank
stating the rank of the computed basis. If the subspace does not have dimension as large as the number of columns of
X
and the orthogonalization manager doe not attempt to augment the subspace, then rank
may be smaller than the number of columns of X
. In this case, only the first rank
columns of output X
and first rank
rows of B
will be valid.
The method attempts to find a basis with dimension the same as the number of columns in X
. It does this by augmenting linearly dependent vectors with random directions. A finite number of these attempts will be made; therefore, it is possible that the dimension of the computed basis is less than the number of vectors in X
.
X | [in/out] The multivector to be modified. On output, the first rank columns of X satisfy
Also,
where | |
MX | [in/out] The image of X under the inner product operator Op . If ![]() Op X. On output, this is updated consistent with updates to X . If ![]() ![]() MX is not referenced. | |
C | [out] The coefficients of X in the Q[i] . If C[i] is a non-null pointer and C[i] matches the dimensions of X and Q[i] , then the coefficients computed during the orthogonalization routine will be stored in the matrix C[i] , similar to calling innerProd( Q[i], X, C[i] ); C[i] points to a Teuchos::SerialDenseMatrix with size inconsistent with X and , then a std::invalid_argument exception will be thrown. Otherwise, if C.size() < i or C[i] is a null pointer, the caller will not have access to the computed coefficients. | |
B | [out] The coefficients of the original X with respect to the computed basis. If B is a non-null pointer and B matches the dimensions of B , then the coefficients computed during the orthogonalization routine will be stored in B , similar to calling innerProd( Xout, Xin, B ); B points to a Teuchos::SerialDenseMatrix with size inconsistent with X , then a std::invalid_argument exception will be thrown. Otherwise, if B is null, the caller will not have access to the computed coefficients. This matrix is not necessarily triangular (as in a QR factorization); see the documentation of specific orthogonalization managers.The first rows in B corresponding to the valid columns in X will be upper triangular. | |
Q | [in] A list of multivector bases specifying the subspaces to be orthogonalized against, satisfying
and
|
X
. This specifies how many columns in the returned X
and rows in the returned B
are valid. Implements Anasazi::MatOrthoManager< ScalarType, MV, OP >.
Definition at line 601 of file AnasaziBasicOrthoManager.hpp.
void Anasazi::BasicOrthoManager< ScalarType, MV, OP >::projectMat | ( | MV & | X, | |
Teuchos::Array< Teuchos::RCP< const MV > > | Q, | |||
Teuchos::Array< Teuchos::RCP< Teuchos::SerialDenseMatrix< int, ScalarType > > > | C = Teuchos::tuple(Teuchos::RCP< Teuchos::SerialDenseMatrix<int,ScalarType> >(Teuchos::null)) , |
|||
Teuchos::RCP< MV > | MX = Teuchos::null , |
|||
Teuchos::Array< Teuchos::RCP< const MV > > | MQ = Teuchos::tuple(Teuchos::RCP<const MV>(Teuchos::null)) | |||
) | const [inline, virtual] |
Given a list of mutually orthogonal and internally orthonormal bases Q
, this method projects a multivector X
onto the space orthogonal to the individual Q[i]
, optionally returning the coefficients of X
for the individual Q[i]
. All of this is done with respect to the inner product innerProd().
After calling this routine, X
will be orthogonal to each of the Q[i]
.
X | [in/out] The multivector to be modified. On output, the columns of X will be orthogonal to each Q[i] , satisfying
| |
MX | [in/out] The image of X under the inner product operator Op . If ![]() Op X. On output, this is updated consistent with updates to X . If ![]() ![]() MX is not referenced. | |
C | [out] The coefficients of X in the bases Q[i] . If C[i] is a non-null pointer and C[i] matches the dimensions of X and Q[i] , then the coefficients computed during the orthogonalization routine will be stored in the matrix C[i] , similar to calling innerProd( Q[i], X, C[i] ); C[i] points to a Teuchos::SerialDenseMatrix with size inconsistent with X and , then a std::invalid_argument exception will be thrown. Otherwise, if C.size() < i or C[i] is a null pointer, the caller will not have access to the computed coefficients. | |
Q | [in] A list of multivector bases specifying the subspaces to be orthogonalized against, satisfying
and
|
Implements Anasazi::MatOrthoManager< ScalarType, MV, OP >.
Definition at line 357 of file AnasaziBasicOrthoManager.hpp.
void Anasazi::BasicOrthoManager< ScalarType, MV, OP >::setKappa | ( | typename Teuchos::ScalarTraits< ScalarType >::magnitudeType | kappa | ) | [inline] |
Set parameter for re-orthogonalization threshold.
Definition at line 273 of file AnasaziBasicOrthoManager.hpp.