10#ifndef THYRA_OPERATOR_VECTOR_TYPES_HPP
11#define THYRA_OPERATOR_VECTOR_TYPES_HPP
13#include "Thyra_ConfigDefs.hpp"
14#include "RTOpPack_Types.hpp"
17#include "Teuchos_FancyOStream.hpp"
19#include "Teuchos_ArrayRCP.hpp"
20#include "Teuchos_ArrayView.hpp"
21#include "Teuchos_Tuple.hpp"
50using Teuchos::ArrayView;
55using Teuchos::ArrayRCP;
95typedef Teuchos::Ordinal Ordinal;
116 case NONCONJ_ELE:
return "NONCONJ_ELE";
117 case CONJ_ELE:
return "CONJ_ELE";
152 case NOTRANS:
return "NOTRANS";
153 case CONJ:
return "CONJ";
154 case TRANS:
return "TRANS";
155 case CONJTRANS:
return "CONJTRANS";
173 case TRANS:
return TRANS;
174 case CONJTRANS:
return TRANS;
190 case CONJ:
return CONJTRANS;
191 case TRANS:
return CONJ;
192 case CONJTRANS:
return NOTRANS;
206 if( trans1 == trans2 )
212 if( ( trans1 == CONJ && trans2 == TRANS ) || ( trans2 == CONJ && trans1 == TRANS ) )
214 if( ( trans1 == TRANS && trans2 == CONJTRANS ) || ( trans2 == TRANS && trans1 == CONJTRANS ) )
216 if( ( trans1 == CONJ && trans2 == CONJTRANS ) || ( trans2 == CONJ && trans1 == CONJTRANS ) )
232 case NOTRANS:
return NONCONJ_ELE;
233 case CONJ:
return CONJ_ELE;
234 case TRANS:
return NONCONJ_ELE;
235 case CONJTRANS:
return CONJ_ELE;
249 case NONCONJ_ELE:
return NOTRANS;
250 case CONJ_ELE:
return CONJ;
265 case NONCONJ_ELE:
return TRANS;
266 case CONJ_ELE:
return CONJTRANS;
295namespace Exceptions {
303class UnInitialized :
public std::logic_error
304{
public: UnInitialized(
const std::string& what_arg)
305 : std::logic_error(what_arg) {}};
312class IncompatibleVectorSpaces :
public std::logic_error
314 IncompatibleVectorSpaces(
const std::string& what_arg)
315 : std::logic_error(what_arg) {}
323class OpNotSupported :
public std::logic_error
324{
public: OpNotSupported(
const std::string& what_arg)
325 : std::logic_error(what_arg) {}};
Base class for all linear operators.
Interface for a collection of column vectors called a multi-vector.
Abstract interface for finite-dimensional dense vectors.
Abstract interface for objects that represent a space for vectors.
Abstract interface for objects that can create vector spaces of a specified dimension.
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)
const char * toString(EOpTransp transp)
Return a string name for a EOpTransp value.
EStrideType
Determine if data is unit stride or non-unit stride.
EOpTransp applyTransposeConjToTrans(EConj conj)
Convert from EConj to EOpTransp for forward apply.
NOTRANS
Type for the dimension of a vector space. `**/ typedef Teuchos::Ordinal Ordinal;.
EConj transToConj(EOpTransp trans)
Convert from EOpTransp to EConj.
EViewType
Determines if a view is a direct view of data or a detached copy of data.
EOpTransp applyConjToTrans(EConj conj)
Convert from EConj to EOpTransp for forward apply.
EOpTransp not_trans(EOpTransp transp)
Perform a not operation on an EOpTransp value.
EOpTransp real_trans(EOpTransp transp)
Return NOTRANS or TRANS for real scalar valued operators and this also is used for determining struct...
EOpTransp trans_trans(EOpTransp trans1, EOpTransp trans2)
Combine two transpose arguments.
@ STRIDE_TYPE_UNIT
The stride between elements in an array is one.
@ STRIDE_TYPE_NONUNIT
The stride between elements in an array is greater than or equal to one.
@ VIEW_TYPE_DIRECT
The view is a direct view of data and no copies are made.
@ VIEW_TYPE_DETACHED
The view is a detached copy of the data.
std::string typeName(const T &t)
basic_FancyOStream< char > FancyOStream