ESYS13
Revision_
|
00001 00002 /******************************************************* 00003 * 00004 * Copyright (c) 2003-2012 by University of Queensland 00005 * Earth Systems Science Computational Center (ESSCC) 00006 * http://www.uq.edu.au/esscc 00007 * 00008 * Primary Business: Queensland, Australia 00009 * Licensed under the Open Software License version 3.0 00010 * http://www.opensource.org/licenses/osl-3.0.php 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 // the actual data 00311 DataTypes::ValueType m_data; 00312 00313 }; 00314 00315 } // end of namespace 00316 #endif