ESScript  Revision_4488
DataConstant.h
Go to the documentation of this file.
1 
2 /*****************************************************************************
3 *
4 * Copyright (c) 2003-2013 by University of Queensland
5 * http://www.uq.edu.au
6 *
7 * Primary Business: Queensland, Australia
8 * Licensed under the Open Software License version 3.0
9 * http://www.opensource.org/licenses/osl-3.0.php
10 *
11 * Development until 2012 by Earth Systems Science Computational Center (ESSCC)
12 * Development since 2012 by School of Earth Sciences
13 *
14 *****************************************************************************/
15 
16 
17 #if !defined escript_DataConstant_20040323_H
18 #define escript_DataConstant_20040323_H
19 #include "system_dep.h"
20 
21 #include "DataReady.h"
22 #include "WrappedArray.h"
23 
24 
25 namespace escript {
26 
36 class DataConstant : public DataReady {
37 typedef DataReady parent;
38  public:
39 
51  DataConstant(const WrappedArray& value,
52  const FunctionSpace& what);
53 
54 
60  DataConstant(const DataConstant& other);
61 
62 
73  DataConstant(const DataConstant& other,
74  const DataTypes::RegionType& region);
75 
87  DataConstant(const FunctionSpace& what,
88  const DataTypes::ShapeType &shape,
89  const DataTypes::ValueType &data);
90 
92  DataConstant(const FunctionSpace& what,
93  const DataTypes::ShapeType &shape,
94  const double v);
95 
96 
98  bool
99  isConstant() const
100  {
101  return true;
102  };
103 
108  bool
109  hasNaN() const;
110 
116  std::string
117  toString() const;
118 
123  virtual
124  DataAbstract*
125  deepCopy();
126 
127 
133  virtual
134  void
135  dump(const std::string fileName) const;
136 
142  virtual
143  void
144  setToZero();
145 
156  virtual
158  getPointOffset(int sampleNo,
159  int dataPointNo) const;
160 
162  virtual
164  getPointOffset(int sampleNo,
165  int dataPointNo);
166 
172  virtual
174  getLength() const;
175 
184  virtual
185  DataAbstract*
186  getSlice(const DataTypes::RegionType& region) const;
187 
195  virtual
196  void
197  setSlice(const DataAbstract* value,
198  const DataTypes::RegionType& region);
199 
200 
209  virtual void
210  symmetric(DataAbstract* ev);
211 
220  virtual void
222 
232  virtual void
233  trace(DataAbstract* ev, int axis_offset);
234 
243  virtual void
244  transpose(DataAbstract* ev, int axis_offset);
245 
255  virtual void
256  swapaxes(DataAbstract* ev, int axis0, int axis1);
257 
258 
267  virtual void
269 
282  virtual void
283  eigenvalues_and_eigenvectors(DataAbstract* ev,DataAbstract* V,const double tol=1.e-13);
284 
285 
292  virtual int
293  matrixInverse(DataAbstract* out) const;
294 
301  getVectorRW();
302 
303 
305  const DataTypes::ValueType&
306  getVectorRO() const;
307 
308  protected:
309 
310  private:
311  //
312  // the actual data
314 
315 };
316 
317 } // end of namespace
318 #endif