42 #ifndef SACADO_PCE_ORTHOGPOLYTRAITS_HPP 43 #define SACADO_PCE_ORTHOGPOLYTRAITS_HPP 45 #include "Sacado_Traits.hpp" 57 SACADO_AD_PROMOTE_SPEC2( PCE, OrthogPoly )
60 template <
typename T,
typename S>
61 struct ScalarType< PCE::OrthogPoly<T,S> > {
66 template <
typename T,
typename S>
67 struct ValueType< PCE::OrthogPoly<T,S> > {
72 template <
typename T,
typename S>
73 struct IsADType< PCE::OrthogPoly<T,S> > {
74 static const bool value =
true;
78 template <
typename T,
typename S>
79 struct IsScalarType< PCE::OrthogPoly<T,S> > {
80 static const bool value =
false;
84 template <
typename T,
typename S>
85 struct Value< PCE::OrthogPoly<T,S> > {
86 typedef typename ValueType< PCE::OrthogPoly<T,S> >::type
value_type;
92 template <
typename T,
typename S>
93 struct ScalarValue< PCE::OrthogPoly<T,S> > {
94 typedef typename ValueType< PCE::OrthogPoly<T,S> >::type
value_type;
95 typedef typename ScalarType< PCE::OrthogPoly<T,S> >::type
scalar_type;
97 return ScalarValue<value_type>::eval(
x.val()); }
101 template <
typename T,
typename S>
102 struct StringName< PCE::OrthogPoly<T,S> > {
104 return std::string(
"Sacado::PCE::OrthogPoly< ") +
105 StringName<T>::eval() +
" >"; }
109 template <
typename T,
typename S>
110 struct IsEqual< PCE::OrthogPoly<T,S> > {
113 return x.isEqualTo(
y);
118 template <
typename T,
typename S>
119 struct IsStaticallySized< PCE::OrthogPoly<T,S> > {
120 static const bool value =
false;
126 #ifdef HAVE_SACADO_TEUCHOS 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::PCE::OrthogPoly<T,S>,
138 typedef typename Sacado::Promote< Sacado::PCE::OrthogPoly<T,S>,
144 template <
typename T,
typename S,
typename R>
145 struct PromotionTraits<
Sacado::PCE::OrthogPoly<T,S>, R > {
146 typedef typename Sacado::Promote< Sacado::PCE::OrthogPoly<T,S>, R >::type
151 template <
typename L,
typename T,
typename S>
152 struct PromotionTraits< L,
Sacado::PCE::OrthogPoly<T,S> > {
154 typedef typename Sacado::Promote< L, Sacado::PCE::OrthogPoly<T,S> >::type
159 template <
typename T,
typename S>
160 struct ScalarTraits<
Sacado::PCE::OrthogPoly<T,S> > :
161 public Sacado::PCE::ScalarTraitsImp< Sacado::PCE::OrthogPoly<T,S> > {};
164 template <
typename TypeTo,
typename T,
typename S>
165 struct ValueTypeConversionTraits< TypeTo,
Sacado::PCE::OrthogPoly<T,S> > :
166 public Sacado::PCE::ValueTypeConversionTraitsImp< TypeTo,
167 Sacado::PCE::OrthogPoly<T,S> > {};
170 template <
typename Ordinal,
typename T,
typename S>
171 struct SerializationTraits<
Ordinal,
Sacado::PCE::OrthogPoly<T,S> > :
172 public Sacado::PCE::SerializationTraitsImp< Ordinal,
173 Sacado::PCE::OrthogPoly<T,S> >
177 template <
typename Ordinal,
typename T,
typename S>
178 struct ValueTypeSerializer<
Ordinal,
Sacado::PCE::OrthogPoly<T,S> > :
179 public Sacado::PCE::SerializerImp< Ordinal,
180 Sacado::PCE::OrthogPoly<T,S>,
181 ValueTypeSerializer<Ordinal,T> >
184 typedef ValueTypeSerializer<Ordinal,T> ValueSerializer;
185 typedef Sacado::PCE::SerializerImp< Ordinal,PCEType,ValueSerializer> Base;
186 typedef typename Base::expansion_type expansion_type;
187 ValueTypeSerializer(
const Teuchos::RCP<expansion_type>& expansion,
188 const Teuchos::RCP<const ValueSerializer>& vs) :
189 Base(expansion,vs) {}
193 #endif // HAVE_SACADO_TEUCHOS 195 #endif // SACADO_PCE_UNIVARIATEHERMITETRAITS_HPP static std::string eval()
ScalarType< typename PCE::OrthogPoly< T, S >::value_type >::type type
ValueType< PCE::OrthogPoly< T, S > >::type value_type
static bool eval(const PCE::OrthogPoly< T, S > &x, const PCE::OrthogPoly< T, S > &y)
ValueType< PCE::OrthogPoly< T, S > >::type value_type
PCE::OrthogPoly< T, S >::value_type type
const IndexType const IndexType const IndexType const IndexType const ValueType const ValueType * x
static const value_type & eval(const PCE::OrthogPoly< T, S > &x)
ScalarType< PCE::OrthogPoly< T, S > >::type scalar_type
Sacado::UQ::PCE< storage_type > PCEType
const IndexType const IndexType const IndexType const IndexType const ValueType const ValueType ValueType * y
static const scalar_type & eval(const PCE::OrthogPoly< T, S > &x)