escript
Revision_
|
00001 00002 /***************************************************************************** 00003 * 00004 * Copyright (c) 2003-2014 by University of Queensland 00005 * http://www.uq.edu.au 00006 * 00007 * Primary Business: Queensland, Australia 00008 * Licensed under the Open Software License version 3.0 00009 * http://www.opensource.org/licenses/osl-3.0.php 00010 * 00011 * Development until 2012 by Earth Systems Science Computational Center (ESSCC) 00012 * Development 2012-2013 by School of Earth Sciences 00013 * Development from 2014 by Centre for Geoscience Computing (GeoComp) 00014 * 00015 *****************************************************************************/ 00016 00017 00018 #if !defined escript_DataConstant_20040323_H 00019 #define escript_DataConstant_20040323_H 00020 #include "system_dep.h" 00021 00022 #include "DataReady.h" 00023 #include "WrappedArray.h" 00024 00025 00026 namespace escript { 00027 00037 class DataConstant : public DataReady { 00038 typedef DataReady parent; 00039 public: 00040 00051 ESCRIPT_DLL_API 00052 DataConstant(const WrappedArray& value, 00053 const FunctionSpace& what); 00054 00055 00060 ESCRIPT_DLL_API 00061 DataConstant(const DataConstant& other); 00062 00063 00073 ESCRIPT_DLL_API 00074 DataConstant(const DataConstant& other, 00075 const DataTypes::RegionType& region); 00076 00087 ESCRIPT_DLL_API 00088 DataConstant(const FunctionSpace& what, 00089 const DataTypes::ShapeType &shape, 00090 const DataTypes::ValueType &data); 00091 00092 ESCRIPT_DLL_API 00093 DataConstant(const FunctionSpace& what, 00094 const DataTypes::ShapeType &shape, 00095 const double v); 00096 00097 00098 ESCRIPT_DLL_API 00099 bool 00100 isConstant() const 00101 { 00102 return true; 00103 }; 00104 00108 ESCRIPT_DLL_API 00109 bool 00110 hasNaN() const; 00111 00116 ESCRIPT_DLL_API 00117 std::string 00118 toString() const; 00119 00123 ESCRIPT_DLL_API 00124 virtual 00125 DataAbstract* 00126 deepCopy(); 00127 00128 00133 ESCRIPT_DLL_API 00134 virtual 00135 void 00136 dump(const std::string fileName) const; 00137 00142 ESCRIPT_DLL_API 00143 virtual 00144 void 00145 setToZero(); 00146 00156 ESCRIPT_DLL_API 00157 virtual 00158 DataTypes::ValueType::size_type 00159 getPointOffset(int sampleNo, 00160 int dataPointNo) const; 00161 00162 ESCRIPT_DLL_API 00163 virtual 00164 DataTypes::ValueType::size_type 00165 getPointOffset(int sampleNo, 00166 int dataPointNo); 00167 00172 ESCRIPT_DLL_API 00173 virtual 00174 DataTypes::ValueType::size_type 00175 getLength() const; 00176 00184 ESCRIPT_DLL_API 00185 virtual 00186 DataAbstract* 00187 getSlice(const DataTypes::RegionType& region) const; 00188 00195 ESCRIPT_DLL_API 00196 virtual 00197 void 00198 setSlice(const DataAbstract* value, 00199 const DataTypes::RegionType& region); 00200 00201 00209 ESCRIPT_DLL_API 00210 virtual void 00211 symmetric(DataAbstract* ev); 00212 00220 ESCRIPT_DLL_API 00221 virtual void 00222 nonsymmetric(DataAbstract* ev); 00223 00232 ESCRIPT_DLL_API 00233 virtual void 00234 trace(DataAbstract* ev, int axis_offset); 00235 00243 ESCRIPT_DLL_API 00244 virtual void 00245 transpose(DataAbstract* ev, int axis_offset); 00246 00255 ESCRIPT_DLL_API 00256 virtual void 00257 swapaxes(DataAbstract* ev, int axis0, int axis1); 00258 00259 00267 ESCRIPT_DLL_API 00268 virtual void 00269 eigenvalues(DataAbstract* ev); 00270 00282 ESCRIPT_DLL_API 00283 virtual void 00284 eigenvalues_and_eigenvectors(DataAbstract* ev,DataAbstract* V,const double tol=1.e-13); 00285 00286 00292 ESCRIPT_DLL_API 00293 virtual int 00294 matrixInverse(DataAbstract* out) const; 00295 00300 ESCRIPT_DLL_API 00301 DataTypes::ValueType& 00302 getVectorRW(); 00303 00304 00305 ESCRIPT_DLL_API 00306 const DataTypes::ValueType& 00307 getVectorRO() const; 00308 00309 protected: 00310 00311 private: 00312 // 00313 // the actual data 00314 DataTypes::ValueType m_data; 00315 00316 }; 00317 00318 } // end of namespace 00319 #endif