Anasazi::GenOrthoManager< ScalarType, MV, OP > Class Template Reference

#include <AnasaziGenOrthoManager.hpp>

Inheritance diagram for Anasazi::GenOrthoManager< ScalarType, MV, OP >:

Anasazi::MatOrthoManager< ScalarType, MV, OP > Anasazi::OrthoManager< ScalarType, MV > Anasazi::ICGSOrthoManager< ScalarType, MV, OP > List of all members.

Public Member Functions

Constructor/Destructor
 GenOrthoManager (Teuchos::RCP< const OP > Op=Teuchos::null)
 Default constructor.
virtual ~GenOrthoManager ()
 Destructor.
Orthogonalization methods
virtual void projectGen (MV &S, Teuchos::Array< Teuchos::RCP< const MV > > X, Teuchos::Array< Teuchos::RCP< const MV > > Y, bool isBiOrtho, Teuchos::Array< Teuchos::RCP< Teuchos::SerialDenseMatrix< int, ScalarType > > > C=Teuchos::tuple(Teuchos::RCP< Teuchos::SerialDenseMatrix< int, ScalarType > >(Teuchos::null)), Teuchos::RCP< MV > MS=Teuchos::null, Teuchos::Array< Teuchos::RCP< const MV > > MX=Teuchos::tuple(Teuchos::RCP< const MV >(Teuchos::null)), Teuchos::Array< Teuchos::RCP< const MV > > MY=Teuchos::tuple(Teuchos::RCP< const MV >(Teuchos::null))) const =0
 Applies a series of generic projectors.
virtual int projectAndNormalizeGen (MV &S, Teuchos::Array< Teuchos::RCP< const MV > > X, Teuchos::Array< Teuchos::RCP< const MV > > Y, bool isBiOrtho, 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 > MS=Teuchos::null, Teuchos::Array< Teuchos::RCP< const MV > > MX=Teuchos::tuple(Teuchos::RCP< const MV >(Teuchos::null)), Teuchos::Array< Teuchos::RCP< const MV > > MY=Teuchos::tuple(Teuchos::RCP< const MV >(Teuchos::null))) const =0
 Applies a series of generic projectors and returns an orthonormal basis for the residual data.

Detailed Description

template<class ScalarType, class MV, class OP>
class Anasazi::GenOrthoManager< ScalarType, MV, OP >

This class provides an interface for orthogonalization managers to provide oblique projectors of the form:

\[ P_{X,Y} S = S - X \langle Y, X \rangle^{-1} \langle Y, S \rangle\ . \]

Such a projector modifies the input in the range on $X$ in order to make the output orthogonal to the range of $Y$.

Author:
Chris Baker, Ulrich Hetmaniuk, Rich Lehoucq, and Heidi Thornquist

Definition at line 59 of file AnasaziGenOrthoManager.hpp.


Constructor & Destructor Documentation

template<class ScalarType, class MV, class OP>
Anasazi::GenOrthoManager< ScalarType, MV, OP >::GenOrthoManager ( Teuchos::RCP< const OP >  Op = Teuchos::null  ) 

Default constructor.

Definition at line 276 of file AnasaziGenOrthoManager.hpp.

template<class ScalarType, class MV, class OP>
virtual Anasazi::GenOrthoManager< ScalarType, MV, OP >::~GenOrthoManager (  )  [inline, virtual]

Destructor.

Definition at line 67 of file AnasaziGenOrthoManager.hpp.


Member Function Documentation

template<class ScalarType, class MV, class OP>
virtual void Anasazi::GenOrthoManager< ScalarType, MV, OP >::projectGen ( MV &  S,
Teuchos::Array< Teuchos::RCP< const MV > >  X,
Teuchos::Array< Teuchos::RCP< const MV > >  Y,
bool  isBiOrtho,
Teuchos::Array< Teuchos::RCP< Teuchos::SerialDenseMatrix< int, ScalarType > > >  C = Teuchos::tuple(Teuchos::RCPTeuchos::SerialDenseMatrix< int, ScalarType > >(Teuchos::null)),
Teuchos::RCP< MV >  MS = Teuchos::null,
Teuchos::Array< Teuchos::RCP< const MV > >  MX = Teuchos::tuple(Teuchos::RCP< const MV >(Teuchos::null)),
Teuchos::Array< Teuchos::RCP< const MV > >  MY = Teuchos::tuple(Teuchos::RCP< const MV >(Teuchos::null)) 
) const [pure virtual]

Applies a series of generic projectors.

Given a list of bases X[i] and Y[i] (a projection pair), this method takes a multivector S and applies the projectors

\[ P_{X[i],Y[i]} S = S - X[i] \langle Y[i], X[i] \rangle^{-1} \langle Y[i], S \rangle\ . \]

This operation projects S onto the space orthogonal to the Y[i], along the range of the X[i]. The inner product specified by $\langle \cdot, \cdot \rangle$ is given by innerProd().

Note:
The call
 projectGen(S, tuple(X1,X2), tuple(Y1,Y2)) 
is equivalent to the call
 projectGen(S, tuple(X2,X1), tuple(Y2,Y1))
The method also returns the coefficients C[i] associated with each projection pair, so that

\[ S_{in} = S_{out} + \sum_i X[i] C[i] \]

and therefore

\[ C[i] = \langle Y[i], X[i] \rangle^{-1} \langle Y[i], S \rangle\ . \]

Lastly, for reasons of efficiency, the user must specify whether the projection pairs are bi-orthonormal with respect to innerProd(), i.e., whether $\langle Y[i], X[i] \rangle = I$. In the case that the bases are specified to be biorthogonal, the inverse $\langle Y, X \rangle^{-1}$ will not be computed. Furthermore, the user may optionally specifiy the image of S and the projection pairs under the inner product operator getOp().

Parameters:
S [in/out] The multivector to be modified.
On output, the columns of S will be orthogonal to each Y[i], satisfying

\[ \langle Y[i], S_{out} \rangle = 0 \]

Also,

\[ S_{in} = S_{out} + \sum_i X[i] C[i] \]

X [in] Multivectors for bases under which $S_{in}$ is modified.
Y [in] Multivectors for bases to which $S_{out}$ should be orthogonal.
isBiortho [in] A flag specifying whether the bases X[i] and Y[i] are biorthonormal, i.e,. whether $\langle Y[i], X[i]\rangle == I$.
C [out] Coefficients for reconstructing $S_{in}$ via the bases X[i]. If C[i] is a non-null pointer and C[i] matches the dimensions of S and X[i], then the coefficients computed during the orthogonalization routine will be stored in the matrix C[i].
If C[i] points to a Teuchos::SerialDenseMatrix with size inconsistent with S and X[i], 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 C[i].
MS [in/out] If specified by the user, on input MS is required to be the image of S under the operator getOp(). On output, MS will be updated to reflect the changes in S.
MX [in] If specified by the user, MX[i] is required to be the image of X[i] under the operator getOp().
MY [in] If specified by the user, MY[i] is required to be the image of Y[i] under the operator getOp().
Precondition:
  • If X[i] != Teuchos::null or Y[i] != Teuchos::null, then X[i] and Y[i] are required to have the same number of columns, and each should have the same number of rows as S.
  • For any i != j, $\langle Y[i], X[j] \rangle == 0$.
  • If biOrtho == true, $\langle Y[i], X[i]\rangle == I$
  • Otherwise, if biOrtho == false, then $\langle Y[i], X[i]\rangle$ should be Hermitian positive-definite.
  • If X[i] and Y[i] have $xc_i$ columns and S has $sc$ columns, then C[i] if specified must be $xc_i \times sc$.

Implemented in Anasazi::ICGSOrthoManager< ScalarType, MV, OP >.

template<class ScalarType, class MV, class OP>
virtual int Anasazi::GenOrthoManager< ScalarType, MV, OP >::projectAndNormalizeGen ( MV &  S,
Teuchos::Array< Teuchos::RCP< const MV > >  X,
Teuchos::Array< Teuchos::RCP< const MV > >  Y,
bool  isBiOrtho,
Teuchos::Array< Teuchos::RCP< Teuchos::SerialDenseMatrix< int, ScalarType > > >  C = Teuchos::tuple(Teuchos::RCPTeuchos::SerialDenseMatrix< int, ScalarType > >(Teuchos::null)),
Teuchos::RCP< Teuchos::SerialDenseMatrix< int, ScalarType > >  B = Teuchos::null,
Teuchos::RCP< MV >  MS = Teuchos::null,
Teuchos::Array< Teuchos::RCP< const MV > >  MX = Teuchos::tuple(Teuchos::RCP< const MV >(Teuchos::null)),
Teuchos::Array< Teuchos::RCP< const MV > >  MY = Teuchos::tuple(Teuchos::RCP< const MV >(Teuchos::null)) 
) const [pure virtual]

Applies a series of generic projectors and returns an orthonormal basis for the residual data.

Given a list of bases X[i] and Y[i] (a projection pair), this method takes a multivector S and applies the projectors

\[ P_{X[i],Y[i]} S = S - X[i] \langle Y[i], X[i] \rangle^{-1} \langle Y[i], S \rangle\ . \]

These operation project S onto the space orthogonal to the range of the Y[i], along the range of X[i]. The inner product specified by $\langle \cdot, \cdot \rangle$ is given by innerProd().

The method returns in S an orthonormal basis for the residual

\[ \left( \prod_{i} P_{X[i],Y[i]} \right) S_{in} = S_{out} B\ , \]

where B contains the (not necessarily triangular) coefficients of the residual with respect to the new basis.

The method also returns the coefficients C[i] and B associated with each projection pair, so that

\[ S_{in} = S_{out} B + \sum_i X[i] C[i] \]

and

\[ C[i] = \langle Y[i], X[i] \rangle^{-1} \langle Y[i], S \rangle\ . \]

Lastly, for reasons of efficiency, the user must specify whether the projection pairs are bi-orthonormal with respect to innerProd(), i.e., whether $\langle Y[i], X[i] \rangle = I$. Furthermore, the user may optionally specifiy the image of S and the projection pairs under the inner product operator getOp().

Parameters:
S [in/out] The multivector to be modified.
On output, the columns of S will be orthogonal to each Y[i], satisfying

\[ \langle Y[i], S_{out} \rangle = 0 \]

Also,

\[ S_{in}(1:m,1:n) = S_{out}(1:m,1:rank) B(1:rank,1:n) + \sum_i X[i] C[i]\ , \]

where m is the number of rows in S, n is the number of columns in S, and rank is the value returned from the method.

X [in] Multivectors for bases under which $S_{in}$ is modified.
Y [in] Multivectors for bases to which $S_{out}$ should be orthogonal.
isBiortho [in] A flag specifying whether the bases X[i] and Y[i] are biorthonormal, i.e,. whether $\langle Y[i], X[i]\rangle == I$.
C [out] Coefficients for reconstructing $S_{in}$ via the bases X[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].
If C[i] points to a Teuchos::SerialDenseMatrix with size inconsistent with S and X[i], 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 C[i].
B [out] The coefficients of the original S 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( Sout, Sin, B );
If B points to a Teuchos::SerialDenseMatrix with size inconsistent with S, then a std::invalid_argument exception will be thrown.
Otherwise, if B is null, the caller will not have access to the computed coefficients.
MS [in/out] If specified by the user, on input MS is required to be the image of S under the operator getOp(). On output, MS will be updated to reflect the changes in S.
MX [in] If specified by the user, MX[i] is required to be the image of X[i] under the operator getOp().
MY [in] If specified by the user, MY[i] is required to be the image of Y[i] under the operator getOp().
Note:
The matrix B is not necessarily triangular (as in a QR factorization); see the documentation of specific orthogonalization managers.
Precondition:
  • If X[i] != Teuchos::null or Y[i] != Teuchos::null, then X[i] and Y[i] are required to have the same number of columns, and each should have the same number of rows as S.
  • For any i != j, $\langle Y[i], X[j] \rangle == 0$.
  • If biOrtho == true, $\langle Y[i], X[i]\rangle == I$
  • Otherwise, if biOrtho == false, then $\langle Y[i], X[i]\rangle$ should be Hermitian positive-definite.
  • If X[i] and Y[i] have $xc_i$ columns and S has $sc$ columns, then C[i] if specified must be $xc_i \times sc$.
  • If S has $sc$ columns, then B if specified must be $sc \times sc $.
Returns:
Rank of the basis computed by this method.

Implemented in Anasazi::ICGSOrthoManager< ScalarType, MV, OP >.


The documentation for this class was generated from the following file:
Generated on Wed May 12 21:24:35 2010 for Anasazi by  doxygen 1.4.7