Belos Version of the Day

Class which defines basic traits for the operator type. More...
#include <BelosOperatorTraits.hpp>
Static Public Member Functions  
static void  Apply (const OP &Op, const MV &x, MV &y, ETrans trans=NOTRANS) 
Apply Op to x, putting the result into y.  
static bool  HasApplyTranspose (const OP &Op) 
Whether this operator implements applying the transpose. 
Class which defines basic traits for the operator type.
This class defines the interface that Belos' linear solvers use when interacting with operators (e.g., matrices and preconditioners). OperatorTraits is a "traits class," which means that it uses compiletime polymorphism to interface between Belos' solvers and the particular implementation of matrices, preconditioners, and multivectors.
A specialization of this traits class must exist for the ScalarType
, MV
and OP
types. If not, this class will produce a compiletime error. (The UndefinedOperatorTraits
class provides an intelligible error message for that case.)
ScalarType  The scalar type: that is, the data type for which scalar multiplication by a (multi)vector is defined, and the data type produced by a dot product of two vectors. 
MV  The multivector type. A "multivector" contains one or more vectors. All vectors in a multivector have the same number of entries and belong to the same vector space. (What the latter phrase specifically means depends on the MV class. Informally, it makes sense to add two vectors belonging to the same vector space.) 
OP  The operator type. An operator behaves as a function (not in the strict mathematical sense) that takes a multivector X as input, and fills a multivector Y with the result of applying the multivector to X. 
BlockCG/BlockCGEpetraExFile.cpp, BlockCG/BlockPrecCGEpetraExFile.cpp, BlockCG/PseudoBlockCGEpetraExFile.cpp, BlockCG/PseudoBlockPrecCGEpetraExFile.cpp, BlockGmres/BlockFlexGmresEpetraExFile.cpp, BlockGmres/BlockGmresEpetraExFile.cpp, BlockGmres/BlockGmresPolyEpetraExFile.cpp, BlockGmres/BlockPrecGmresEpetraExFile.cpp, BlockGmres/PseudoBlockGmresEpetraExFile.cpp, BlockGmres/PseudoBlockPrecGmresEpetraExFile.cpp, GCRODR/GCRODREpetraExFile.cpp, GCRODR/PrecGCRODREpetraExFile.cpp, PCPG/PCPGEpetraExFile.cpp, and TFQMR/TFQMREpetraExFile.cpp.
Definition at line 108 of file BelosOperatorTraits.hpp.
static void Belos::OperatorTraits< ScalarType, MV, OP >::Apply  (  const OP &  Op, 
const MV &  x,  
MV &  y,  
ETrans  trans = NOTRANS 

)  [inline, static] 
Apply Op to x, putting the result into y.
If Op, x, and y are realvalued, then applying the conjugate transpose (trans = CONJTRANS) means the same thing as applying the transpose (trans = TRANS).
If Op does not support applying the transpose and you use trans != NOTRANS, or if there is some other error in applying the operator, this method throws a subclass of std::exception.
Definition at line 122 of file BelosOperatorTraits.hpp.
static bool Belos::OperatorTraits< ScalarType, MV, OP >::HasApplyTranspose  (  const OP &  Op  )  [inline, static] 
Whether this operator implements applying the transpose.
The instance of OP which is the first argument of Apply()
is not required to support applying the transpose (or Hermitian transpose, if applicable). If it does support applying the transpose, this method should return true. Otherwise, it should return false.
If the operator is complex, "can apply its transpose" means that it can apply both its transpose and its Hermitian transpose.
We provide a default implementation of this method that conservatively returns false. If you want the specialization of OperatorTraits for OP to advertise that operators of type OP may implement applying the transpose, override the default implementation in the specialization.
Definition at line 150 of file BelosOperatorTraits.hpp.