Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #if !defined escript_DataConstant_20040323_H
00016 #define escript_DataConstant_20040323_H
00017 #include "system_dep.h"
00018
00019 #include "DataReady.h"
00020 #include "WrappedArray.h"
00021
00022
00023 namespace escript {
00024
00034 class DataConstant : public DataReady {
00035 typedef DataReady parent;
00036 public:
00037
00048 ESCRIPT_DLL_API
00049 DataConstant(const WrappedArray& value,
00050 const FunctionSpace& what);
00051
00052
00057 ESCRIPT_DLL_API
00058 DataConstant(const DataConstant& other);
00059
00060
00070 ESCRIPT_DLL_API
00071 DataConstant(const DataConstant& other,
00072 const DataTypes::RegionType& region);
00073
00084 ESCRIPT_DLL_API
00085 DataConstant(const FunctionSpace& what,
00086 const DataTypes::ShapeType &shape,
00087 const DataTypes::ValueType &data);
00088
00089 ESCRIPT_DLL_API
00090 DataConstant(const FunctionSpace& what,
00091 const DataTypes::ShapeType &shape,
00092 const double v);
00093
00094
00095 ESCRIPT_DLL_API
00096 bool
00097 isConstant() const
00098 {
00099 return true;
00100 };
00101
00105 ESCRIPT_DLL_API
00106 bool
00107 hasNaN() const;
00108
00113 ESCRIPT_DLL_API
00114 std::string
00115 toString() const;
00116
00120 ESCRIPT_DLL_API
00121 virtual
00122 DataAbstract*
00123 deepCopy();
00124
00125
00130 ESCRIPT_DLL_API
00131 virtual
00132 void
00133 dump(const std::string fileName) const;
00134
00139 ESCRIPT_DLL_API
00140 virtual
00141 void
00142 setToZero();
00143
00153 ESCRIPT_DLL_API
00154 virtual
00155 DataTypes::ValueType::size_type
00156 getPointOffset(int sampleNo,
00157 int dataPointNo) const;
00158
00159 ESCRIPT_DLL_API
00160 virtual
00161 DataTypes::ValueType::size_type
00162 getPointOffset(int sampleNo,
00163 int dataPointNo);
00164
00169 ESCRIPT_DLL_API
00170 virtual
00171 DataTypes::ValueType::size_type
00172 getLength() const;
00173
00181 ESCRIPT_DLL_API
00182 virtual
00183 DataAbstract*
00184 getSlice(const DataTypes::RegionType& region) const;
00185
00192 ESCRIPT_DLL_API
00193 virtual
00194 void
00195 setSlice(const DataAbstract* value,
00196 const DataTypes::RegionType& region);
00197
00198
00206 ESCRIPT_DLL_API
00207 virtual void
00208 symmetric(DataAbstract* ev);
00209
00217 ESCRIPT_DLL_API
00218 virtual void
00219 nonsymmetric(DataAbstract* ev);
00220
00229 ESCRIPT_DLL_API
00230 virtual void
00231 trace(DataAbstract* ev, int axis_offset);
00232
00240 ESCRIPT_DLL_API
00241 virtual void
00242 transpose(DataAbstract* ev, int axis_offset);
00243
00252 ESCRIPT_DLL_API
00253 virtual void
00254 swapaxes(DataAbstract* ev, int axis0, int axis1);
00255
00256
00264 ESCRIPT_DLL_API
00265 virtual void
00266 eigenvalues(DataAbstract* ev);
00267
00279 ESCRIPT_DLL_API
00280 virtual void
00281 eigenvalues_and_eigenvectors(DataAbstract* ev,DataAbstract* V,const double tol=1.e-13);
00282
00283
00289 ESCRIPT_DLL_API
00290 virtual int
00291 matrixInverse(DataAbstract* out) const;
00292
00297 ESCRIPT_DLL_API
00298 DataTypes::ValueType&
00299 getVectorRW();
00300
00301
00302 ESCRIPT_DLL_API
00303 const DataTypes::ValueType&
00304 getVectorRO() const;
00305
00306 protected:
00307
00308 private:
00309
00310
00311 DataTypes::ValueType m_data;
00312
00313 };
00314
00315 }
00316 #endif