PyTrilinos  Development
 All Classes Functions
Public Member Functions | Public Attributes
PyTrilinos.Anasazi.MultiVecTraitsEpetra Class Reference
Inheritance diagram for PyTrilinos.Anasazi.MultiVecTraitsEpetra:
Inheritance graph
[legend]
Collaboration diagram for PyTrilinos.Anasazi.MultiVecTraitsEpetra:
Collaboration graph
[legend]

List of all members.

Public Member Functions

def Clone
def CloneCopy
def CloneViewNonConst
def CloneView
def GetVecLength
def GetNumberVecs
def HasConstantStride
def MvTimesMatAddMv
def MvAddMv
def MvTransMv
def MvDot
def MvNorm
def SetBlock
def Assign
def MvScale
def MvRandom
def MvInit
def MvPrint
def __init__

Public Attributes

 this

Detailed Description

Proxy of C++ Anasazi::MultiVecTraits<(double,Epetra_MultiVector)> class

Constructor & Destructor Documentation

__init__(Anasazi::MultiVecTraits<(double,Epetra_MultiVector)> self) -> MultiVecTraitsEpetra

Traits class which defines basic operations on multivectors.

Parameters:
-----------

ScalarType:  The type of the entries in the multivectors.

MV:  The type of the multivectors themselves.

This traits class tells Anasazi's solvers how to perform multivector
operations for the multivector type MV. These operations include
creating copies or views, finding the number of rows or columns (i.e.,
vectors) in a given multivector, and computing inner products, norms,
and vector sums. (Anasazi's solvers use the OperatorTraits traits
class to apply operators to multivectors.)

Anasazi gives users two different ways to tell its solvers how to
compute with multivectors of a given type MV. The first and preferred
way is for users to specialize MultiVecTraits, this traits class, for
their given MV type. Anasazi provides specializations for MV =
Epetra_MultiVector, Tpetra::MultiVector, and Thyra::MultiVectorBase.
The second way is for users to make their multivector type (or a
wrapper thereof) inherit from MultiVec. This works because Anasazi
provides a specialization of MultiVecTraits for MultiVec. Specializing
MultiVecTraits is more flexible because it does not require a
multivector type to inherit from MultiVec; this is possible even if
you do not have control over the interface of a class.

If you have a different multivector type MV that you would like to use
with Anasazi, and if that type does not inherit from MultiVec, then
you must implement a specialization of MultiVecTraits for MV.
Otherwise, this traits class will report a compile-time error
(relating to UndefinedMultiVecTraits). Specializing MultiVecTraits for
your MV type is not hard. Just look at the examples for
Epetra_MultiVector (in anasazi/epetra/src/AnasaziEpetraAdapter.hpp)
and Tpetra::MultiVector (in
anasazi/tpetra/src/AnasaziTpetraAdapter.hpp).

You do not need to write a specialization of MultiVecTraits if you are
using Epetra, Tpetra, or Thyra multivectors. Anasazi already provides
specializations for these types. Just relax and enjoy using the
solvers!

C++ includes: AnasaziMultiVecTraits.hpp 

Member Function Documentation

Assign(Epetra_MultiVector A, Epetra_MultiVector mv)

static void
Anasazi::MultiVecTraits< ScalarType, MV >::Assign(const MV &A, MV &mv)

mv := A

Assign (deep copy) A into mv. 
Clone(Epetra_MultiVector mv, int const outNumVecs) -> Teuchos::RCP< Epetra_MultiVector >

static
Teuchos::RCP<MV> Anasazi::MultiVecTraits< ScalarType, MV
>::Clone(const MV &mv, const int numvecs)

Creates a new empty MV containing numvecs columns.

Reference-counted pointer to the new multivector of type MV. 
CloneCopy(Epetra_MultiVector mv) -> Teuchos::RCP< Epetra_MultiVector >
CloneCopy(Epetra_MultiVector mv, VectorInt index) -> Teuchos::RCP< Epetra_MultiVector >
CloneCopy(Epetra_MultiVector mv, Teuchos::Range1D const & index) -> Teuchos::RCP< Epetra_MultiVector >

static
Teuchos::RCP<MV> Anasazi::MultiVecTraits< ScalarType, MV
>::CloneCopy(const MV &mv, const Teuchos::Range1D &index)

Deep copy of specified columns of mv.

Create a new MV, and copy (deep copy) the columns of mv specified by
the given inclusive index range into the new multivector.

Parameters:
-----------

mv:  [in] Multivector to copy

index:  [in] Inclusive index range of columns of mv

Reference-counted pointer to the new multivector of type MV. 
CloneView(Epetra_MultiVector mv, Teuchos::Range1D const & index) -> Teuchos::RCP< Epetra_MultiVector >

static
Teuchos::RCP<MV> Anasazi::MultiVecTraits< ScalarType, MV
>::CloneView(MV &mv, const Teuchos::Range1D &index)

Const view of specified columns of mv.

Return a const view of the columns of mv specified by the given
inclusive index range.

Parameters:
-----------

mv:  [in] Multivector to view (shallow const copy)

index:  [in] Inclusive index range of columns of mv

Reference-counted pointer to the const view of specified columns of mv

CloneViewNonConst(Epetra_MultiVector mv, VectorInt index) -> Teuchos::RCP< Epetra_MultiVector >
CloneViewNonConst(Epetra_MultiVector mv, Teuchos::Range1D const & index) -> Teuchos::RCP< Epetra_MultiVector >

static Teuchos::RCP<MV> Anasazi::MultiVecTraits< ScalarType, MV
>::CloneViewNonConst(MV &mv, const Teuchos::Range1D &index)

Non-const view of specified columns of mv.

Return a non-const view of the columns of mv specified by the given
inclusive index range.

Parameters:
-----------

mv:  [in] Multivector to view (shallow non-const copy)

index:  [in] Inclusive index range of columns of mv

Reference-counted pointer to the non-const view of specified columns
of mv 
GetNumberVecs(Epetra_MultiVector mv) -> int

static
int Anasazi::MultiVecTraits< ScalarType, MV >::GetNumberVecs(const MV
&mv)

Obtain the number of vectors in mv. 
GetVecLength(Epetra_MultiVector mv) -> int

static
int Anasazi::MultiVecTraits< ScalarType, MV >::GetVecLength(const MV
&mv)

Obtain the vector length of mv. 
HasConstantStride(Epetra_MultiVector mv) -> bool
MvAddMv(double alpha, Epetra_MultiVector A, double beta, Epetra_MultiVector B, Epetra_MultiVector mv)

static void
Anasazi::MultiVecTraits< ScalarType, MV >::MvAddMv(const ScalarType
alpha, const MV &A, const ScalarType beta, const MV &B, MV &mv)

Replace mv with $\\alpha A + \\beta B$. 
MvDot(Epetra_MultiVector A, Epetra_MultiVector B, std::vector< double,std::allocator< double > > & b)

static void
Anasazi::MultiVecTraits< ScalarType, MV >::MvDot(const MV &mv, const
MV &A, std::vector< ScalarType > &b)

Compute a vector b where the components are the individual dot-
products of the i-th columns of A and mv, i.e. $b[i] = A[i]^Hmv[i]$.

MvInit(Epetra_MultiVector mv, double alpha=Teuchos::ScalarTraits< double >::zero())

static void
Anasazi::MultiVecTraits< ScalarType, MV >::MvInit(MV &mv, const
ScalarType alpha=Teuchos::ScalarTraits< ScalarType >::zero())

Replace each element of the vectors in mv with alpha. 
MvNorm(Epetra_MultiVector mv, std::vector< double,std::allocator< double > > & normvec)

static void
Anasazi::MultiVecTraits< ScalarType, MV >::MvNorm(const MV &mv,
std::vector< typename Teuchos::ScalarTraits< ScalarType
>::magnitudeType > &normvec)

Compute the 2-norm of each individual vector of mv. Upon return,
normvec[i] holds the value of $||mv_i||_2$, the i-th column of mv. 
MvPrint(Epetra_MultiVector mv, std::ostream & os)

static void
Anasazi::MultiVecTraits< ScalarType, MV >::MvPrint(const MV &mv,
std::ostream &os)

Print the mv multi-vector to the os output stream. 
MvRandom(Epetra_MultiVector mv)

static void
Anasazi::MultiVecTraits< ScalarType, MV >::MvRandom(MV &mv)

Replace the vectors in mv with random vectors. 
MvScale(Epetra_MultiVector mv, double alpha)
MvScale(Epetra_MultiVector mv, std::vector< double,std::allocator< double > > const & alpha)

static void
Anasazi::MultiVecTraits< ScalarType, MV >::MvScale(MV &mv, const
std::vector< ScalarType > &alpha)

Scale each element of the i-th vector in mv with alpha[i]. 
MvTimesMatAddMv(double alpha, Epetra_MultiVector A, Teuchos::SerialDenseMatrix< int,double > const & B, 
    double beta, Epetra_MultiVector mv)

static void Anasazi::MultiVecTraits< ScalarType, MV
>::MvTimesMatAddMv(const ScalarType alpha, const MV &A, const
Teuchos::SerialDenseMatrix< int, ScalarType > &B, const ScalarType
beta, MV &mv)

Update mv with $ \\alpha AB + \\beta mv $. 
MvTransMv(double alpha, Epetra_MultiVector A, Epetra_MultiVector mv, Teuchos::SerialDenseMatrix< int,double > & B)

static
void Anasazi::MultiVecTraits< ScalarType, MV >::MvTransMv(const
ScalarType alpha, const MV &A, const MV &mv,
Teuchos::SerialDenseMatrix< int, ScalarType > &B)

Compute a dense matrix B through the matrix-matrix multiply $
\\alpha A^Hmv $. 
SetBlock(Epetra_MultiVector A, VectorInt index, Epetra_MultiVector mv)
SetBlock(Epetra_MultiVector A, Teuchos::Range1D const & index, Epetra_MultiVector mv)

static void
Anasazi::MultiVecTraits< ScalarType, MV >::SetBlock(const MV &A, const
Teuchos::Range1D &index, MV &mv)

Deep copy of A into specified columns of mv.

(Deeply) copy the first index.size() columns of A into the columns of
mv specified by the given index range.

Postcondition: mv[i] = A[i - index.lbound()] for all i in
[index.lbound(), index.ubound()]

Parameters:
-----------

A:  [in] Source multivector

index:  [in] Inclusive index range of columns of mv; index set of the
target

mv:  [out] Target multivector 

The documentation for this class was generated from the following file:
 All Classes Functions