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_DataExpanded_20040323_H
00016 #define escript_DataExpanded_20040323_H
00017 #include "system_dep.h"
00018
00019 #include "DataReady.h"
00020 #include "DataBlocks2D.h"
00021
00022 namespace escript {
00023
00024
00025
00026 class DataConstant;
00027 class DataTagged;
00028
00041 class DataExpanded : public DataReady {
00042
00043 typedef DataReady parent;
00044
00045 public:
00046
00061 ESCRIPT_DLL_API
00062 DataExpanded(const WrappedArray& value,
00063 const FunctionSpace& what);
00064
00073 ESCRIPT_DLL_API
00074 DataExpanded(const DataExpanded& other,
00075 const DataTypes::RegionType& region);
00076
00089 ESCRIPT_DLL_API
00090 DataExpanded(const FunctionSpace& what,
00091 const DataTypes::ShapeType &shape,
00092 const DataTypes::ValueType &data);
00093
00094
00095 ESCRIPT_DLL_API
00096 DataExpanded(const FunctionSpace& what,
00097 const DataTypes::ShapeType &shape,
00098 const double data);
00099
00105 ESCRIPT_DLL_API
00106 DataExpanded(const DataExpanded& other);
00107
00113 ESCRIPT_DLL_API
00114 DataExpanded(const DataConstant& other);
00115
00121 ESCRIPT_DLL_API
00122 DataExpanded(const DataTagged& other);
00123
00128 ESCRIPT_DLL_API
00129 virtual
00130 ~DataExpanded();
00131
00132 ESCRIPT_DLL_API
00133 bool
00134 isExpanded() const
00135 {
00136 return true;
00137 };
00138
00139 ESCRIPT_DLL_API
00140 bool
00141 actsExpanded() const
00142 {
00143 return true;
00144 }
00145
00149 ESCRIPT_DLL_API
00150 bool
00151 hasNaN() const;
00152
00157 ESCRIPT_DLL_API
00158 virtual
00159 std::string
00160 toString() const;
00161
00165 ESCRIPT_DLL_API
00166 virtual
00167 DataAbstract*
00168 deepCopy();
00169
00170
00175 ESCRIPT_DLL_API
00176 virtual
00177 void
00178 dump(const std::string fileName) const;
00179
00180
00186 ESCRIPT_DLL_API
00187 virtual int
00188 matrixInverse(DataAbstract* out) const;
00189
00194 ESCRIPT_DLL_API
00195 virtual
00196 void
00197 setToZero();
00198
00208 ESCRIPT_DLL_API
00209 virtual
00210 DataTypes::ValueType::size_type
00211 getPointOffset(int sampleNo,
00212 int dataPointNo) const;
00213
00214 ESCRIPT_DLL_API
00215 virtual
00216 DataTypes::ValueType::size_type
00217 getPointOffset(int sampleNo,
00218 int dataPointNo);
00219
00225 ESCRIPT_DLL_API
00226 DataTypes::ValueType&
00227 getVectorRW();
00228
00229 ESCRIPT_DLL_API
00230 const DataTypes::ValueType&
00231 getVectorRO() const;
00232
00233
00234
00239 ESCRIPT_DLL_API
00240 virtual
00241 ValueType::size_type
00242 getLength() const;
00243
00251 ESCRIPT_DLL_API
00252 virtual
00253 DataAbstract*
00254 getSlice(const DataTypes::RegionType& region) const;
00255
00263 ESCRIPT_DLL_API
00264 virtual
00265 void
00266 setSlice(const DataAbstract* value,
00267 const DataTypes::RegionType& region);
00268
00281 void
00282 setTaggedValue(int tagKey,
00283 const DataTypes::ShapeType& pointshape,
00284 const DataTypes::ValueType& value,
00285 int dataOffset=0);
00286
00287
00288
00296 ESCRIPT_DLL_API
00297 virtual void
00298 symmetric(DataAbstract* ev);
00299
00307 ESCRIPT_DLL_API
00308 virtual void
00309 nonsymmetric(DataAbstract* ev);
00310
00319 ESCRIPT_DLL_API
00320 virtual void
00321 trace(DataAbstract* ev, int axis_offset);
00322
00330 ESCRIPT_DLL_API
00331 virtual void
00332 transpose(DataAbstract* ev, int axis_offset);
00333
00342 ESCRIPT_DLL_API
00343 virtual void
00344 swapaxes(DataAbstract* ev, int axis0, int axis1);
00345
00346
00354 ESCRIPT_DLL_API
00355 virtual void
00356 eigenvalues(DataAbstract* ev);
00357
00369 ESCRIPT_DLL_API
00370 virtual void
00371 eigenvalues_and_eigenvectors(DataAbstract* ev,DataAbstract* V,const double tol=1.e-13);
00372
00379 ESCRIPT_DLL_API
00380 virtual void
00381 reorderByReferenceIDs(int *reference_ids);
00382
00388 ESCRIPT_DLL_API
00389 void randomFill(long seed);
00390
00391 protected:
00392
00393 private:
00394
00409 void
00410 initialise(int noSamples,
00411 int noDataPointsPerSample);
00412
00422 void
00423 copy(const DataConstant& value);
00424
00425
00426
00434 void
00435 copy(const WrappedArray& value);
00436
00437
00449 ESCRIPT_DLL_API
00450 virtual void
00451 copyToDataPoint(const int sampleNo, const int dataPointNo, const double value);
00452
00453
00462 ESCRIPT_DLL_API
00463 virtual void
00464 copyToDataPoint(const int sampleNo, const int dataPointNo, const WrappedArray& value);
00465
00466
00467
00468
00469 DataBlocks2D m_data;
00470
00471 };
00472
00473 }
00474
00475 #endif