42#ifndef SACADO_ETPCE_ORTHOGPOLYTRAITS_HPP
43#define SACADO_ETPCE_ORTHOGPOLYTRAITS_HPP
45#include "Sacado_Traits.hpp"
57 SACADO_AD_PROMOTE_SPEC2( ETPCE, OrthogPoly )
60 template <
typename T,
typename S>
61 struct ScalarType< ETPCE::OrthogPoly<T,S> > {
62 typedef typename ScalarType<typename ETPCE::OrthogPoly<T,S>::value_type>::type
type;
66 template <
typename T,
typename S>
67 struct ValueType< ETPCE::OrthogPoly<T,S> > {
72 template <
typename T,
typename S>
73 struct IsADType< ETPCE::OrthogPoly<T,S> > {
74 static const bool value =
true;
78 template <
typename T,
typename S>
79 struct IsScalarType< ETPCE::OrthogPoly<T,S> > {
80 static const bool value =
false;
84 template <
typename T,
typename S>
85 struct Value< ETPCE::OrthogPoly<T,S> > {
86 typedef typename ValueType< ETPCE::OrthogPoly<T,S> >::type
value_type;
92 template <
typename T,
typename S>
93 struct ScalarValue< ETPCE::OrthogPoly<T,S> > {
94 typedef typename ValueType< ETPCE::OrthogPoly<T,S> >::type
value_type;
95 typedef typename ScalarType< ETPCE::OrthogPoly<T,S> >::type
scalar_type;
97 return ScalarValue<value_type>::eval(x.val()); }
101 template <
typename T,
typename S>
102 struct StringName< ETPCE::OrthogPoly<T,S> > {
104 return std::string(
"Sacado::ETPCE::OrthogPoly< ") +
105 StringName<T>::eval() +
" >"; }
109 template <
typename T,
typename S>
110 struct IsEqual< ETPCE::OrthogPoly<T,S> > {
113 return x.isEqualTo(y);
118 template <
typename T,
typename S>
119 struct IsStaticallySized< ETPCE::OrthogPoly<T,S> > {
120 static const bool value =
false;
127#include "Teuchos_PromotionTraits.hpp"
128#include "Teuchos_ScalarTraits.hpp"
130#include "Teuchos_SerializationTraits.hpp"
135 template <
typename T,
typename S>
136 struct PromotionTraits<
Sacado::ETPCE::OrthogPoly<T,S>,
138 typedef typename Sacado::Promote< Sacado::ETPCE::OrthogPoly<T,S>,
144 template <
typename T,
typename S,
typename R>
145 struct PromotionTraits<
Sacado::ETPCE::OrthogPoly<T,S>, R > {
146 typedef typename Sacado::Promote< Sacado::ETPCE::OrthogPoly<T,S>, R >::type
151 template <
typename L,
typename T,
typename S>
152 struct PromotionTraits< L,
Sacado::ETPCE::OrthogPoly<T,S> > {
154 typedef typename Sacado::Promote< L, Sacado::ETPCE::OrthogPoly<T,S> >::type
159 template <
typename T,
typename S>
160 struct ScalarTraits<
Sacado::ETPCE::OrthogPoly<T,S> > :
164 template <
typename Ordinal,
typename T,
typename S>
167 Sacado::ETPCE::OrthogPoly<T,S> >
171 template <
typename Ordinal,
typename T,
typename S>
174 Sacado::ETPCE::OrthogPoly<T,S>,
175 ValueTypeSerializer<Ordinal,T> >
182 const Teuchos::RCP<const ValueSerializer>& vs) :
183 Base(expansion,vs) {}
Implementation of Teuchos::SerializationTraits for all PCE types.
Serializer object for all PCE types.
PCEType::expansion_type expansion_type
Typename of expansion.
static bool eval(const ETPCE::OrthogPoly< T, S > &x, const ETPCE::OrthogPoly< T, S > &y)
Implementation for Teuchos::ScalarTraits for all PCE types.
ScalarType< typenameETPCE::OrthogPoly< T, S >::value_type >::type type
ValueType< ETPCE::OrthogPoly< T, S > >::type value_type
static const scalar_type & eval(const ETPCE::OrthogPoly< T, S > &x)
ScalarType< ETPCE::OrthogPoly< T, S > >::type scalar_type
static std::string eval()
ETPCE::OrthogPoly< T, S >::value_type type
ValueType< ETPCE::OrthogPoly< T, S > >::type value_type
static const value_type & eval(const ETPCE::OrthogPoly< T, S > &x)
ValueTypeSerializer(const Teuchos::RCP< expansion_type > &expansion, const Teuchos::RCP< const ValueSerializer > &vs)
Sacado::PCE::SerializerImp< Ordinal, PCEType, ValueSerializer > Base
Sacado::ETPCE::OrthogPoly< T, S > PCEType
ValueTypeSerializer< Ordinal, T > ValueSerializer
Base::expansion_type expansion_type