00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef SACADO_ELRFAD_DFAD_HPP
00033 #define SACADO_ELRFAD_DFAD_HPP
00034
00035 #include "Sacado_ELRFad_GeneralFadExpr.hpp"
00036 #include "Sacado_Fad_DynamicStorage.hpp"
00037 #include "Sacado_ELRFad_DFadTraits.hpp"
00038
00039 namespace Sacado {
00040
00041 namespace ELRFad {
00042
00063 template <typename ValueT,
00064 typename ScalarT = typename ScalarValueType<ValueT>::type >
00065 class DFad : public Expr< GeneralFad<ValueT,Fad::DynamicStorage<ValueT> > > {
00066
00067 public:
00068
00073
00075
00078 DFad() :
00079 Expr< GeneralFad< ValueT,Fad::DynamicStorage<ValueT> > >() {}
00080
00082
00085 DFad(const ValueT& x) :
00086 Expr< GeneralFad< ValueT,Fad::DynamicStorage<ValueT> > >(x) {}
00087
00089
00092 DFad(const ScalarT& x) :
00093 Expr< GeneralFad< ValueT,Fad::DynamicStorage<ValueT> > >(ValueT(x)) {}
00094
00096
00099 DFad(const int sz, const ValueT& x) :
00100 Expr< GeneralFad< ValueT,Fad::DynamicStorage<ValueT> > >(sz,x) {}
00101
00103
00108 DFad(const int sz, const int i, const ValueT & x) :
00109 Expr< GeneralFad< ValueT,Fad::DynamicStorage<ValueT> > >(sz,i,x) {}
00110
00112 DFad(const DFad& x) :
00113 Expr< GeneralFad< ValueT,Fad::DynamicStorage<ValueT> > >(x) {}
00114
00116 template <typename S> DFad(const Expr<S>& x) :
00117 Expr< GeneralFad< ValueT,Fad::DynamicStorage<ValueT> > >(x) {}
00118
00120
00122 ~DFad() {}
00123
00125 DFad& operator=(const ValueT& val) {
00126 GeneralFad< ValueT,Fad::DynamicStorage<ValueT> >::operator=(val);
00127 return *this;
00128 }
00129
00131 DFad& operator=(const ScalarT& val) {
00132 GeneralFad< ValueT,Fad::DynamicStorage<ValueT> >::operator=(ValueT(val));
00133 return *this;
00134 }
00135
00137 DFad& operator=(const DFad& x) {
00138 GeneralFad< ValueT,Fad::DynamicStorage<ValueT> >::operator=(static_cast<const GeneralFad< ValueT,Fad::DynamicStorage<ValueT> >&>(x));
00139 return *this;
00140 }
00141
00143 template <typename S> DFad& operator=(const Expr<S>& x)
00144 {
00145 GeneralFad< ValueT,Fad::DynamicStorage<ValueT> >::operator=(x);
00146 return *this;
00147 }
00148
00149 };
00150
00160 template <typename ValueT>
00161 class DFad<ValueT,ValueT> :
00162 public Expr< GeneralFad<ValueT,Fad::DynamicStorage<ValueT> > > {
00163
00164 public:
00165
00170
00172
00175 DFad() :
00176 Expr< GeneralFad< ValueT,Fad::DynamicStorage<ValueT> > >() {}
00177
00179
00182 DFad(const ValueT& x) :
00183 Expr< GeneralFad< ValueT,Fad::DynamicStorage<ValueT> > >(x) {}
00184
00186
00189 DFad(const int sz, const ValueT& x) :
00190 Expr< GeneralFad< ValueT,Fad::DynamicStorage<ValueT> > >(sz,x) {}
00191
00193
00198 DFad(const int sz, const int i, const ValueT& x) :
00199 Expr< GeneralFad< ValueT,Fad::DynamicStorage<ValueT> > >(sz,i,x) {}
00200
00202 DFad(const DFad& x) :
00203 Expr< GeneralFad< ValueT,Fad::DynamicStorage<ValueT> > >(x) {}
00204
00206 template <typename S> DFad(const Expr<S>& x) :
00207 Expr< GeneralFad< ValueT,Fad::DynamicStorage<ValueT> > >(x) {}
00208
00210
00212 ~DFad() {}
00213
00215 DFad& operator=(const ValueT& val) {
00216 GeneralFad< ValueT,Fad::DynamicStorage<ValueT> >::operator=(val);
00217 return *this;
00218 }
00219
00221 DFad& operator=(const DFad& x) {
00222 GeneralFad< ValueT,Fad::DynamicStorage<ValueT> >::operator=(static_cast<const GeneralFad< ValueT,Fad::DynamicStorage<ValueT> >&>(x));
00223 return *this;
00224 }
00225
00227 template <typename S> DFad& operator=(const Expr<S>& x)
00228 {
00229 GeneralFad< ValueT,Fad::DynamicStorage<ValueT> >::operator=(x);
00230 return *this;
00231 }
00232
00233 };
00234
00235 }
00236
00237 }
00238
00239 #endif // SACADO_ELRFAD_DFAD_HPP