escript  Revision_
DataExpanded.h
Go to the documentation of this file.
1 
2 /*****************************************************************************
3 *
4 * Copyright (c) 2003-2017 by The University of Queensland
5 * http://www.uq.edu.au
6 *
7 * Primary Business: Queensland, Australia
8 * Licensed under the Apache License, version 2.0
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Development until 2012 by Earth Systems Science Computational Center (ESSCC)
12 * Development 2012-2013 by School of Earth Sciences
13 * Development from 2014 by Centre for Geoscience Computing (GeoComp)
14 *
15 *****************************************************************************/
16 
17 
18 #if !defined escript_DataExpanded_20040323_H
19 #define escript_DataExpanded_20040323_H
20 #include "system_dep.h"
21 
22 #include "DataReady.h"
23 
24 namespace escript {
25 
26 //
27 // Forward declarations of other Data types.
28 class DataConstant;
29 class DataTagged;
30 
43 class DataExpanded : public DataReady {
44 
45 typedef DataReady parent;
46 
47  public:
48 
64  explicit DataExpanded(const WrappedArray& value,
65  const FunctionSpace& what);
66 
76  explicit DataExpanded(const DataExpanded& other,
77  const DataTypes::RegionType& region);
78 
92  explicit DataExpanded(const FunctionSpace& what,
93  const DataTypes::ShapeType &shape,
94  const DataTypes::RealVectorType &data);
95 
96 
98  explicit DataExpanded(const FunctionSpace& what,
99  const DataTypes::ShapeType &shape,
100  const DataTypes::CplxVectorType &data);
101 
102 
103 
105  explicit DataExpanded(const FunctionSpace& what,
106  const DataTypes::ShapeType &shape,
107  const DataTypes::real_t data);
108 
110  explicit DataExpanded(const FunctionSpace& what,
111  const DataTypes::ShapeType &shape,
112  const DataTypes::cplx_t data);
113 
114 
121  DataExpanded(const DataExpanded& other);
122 
129  explicit DataExpanded(const DataConstant& other);
130 
137  explicit DataExpanded(const DataTagged& other);
138 
144  virtual
145  ~DataExpanded();
146 
148  bool
149  isExpanded() const
150  {
151  return true;
152  };
153 
155  bool
156  actsExpanded() const
157  {
158  return true;
159  }
160 
165  bool
166  hasNaN() const;
167 
172  void
174 
176  void
178 
184  virtual
185  std::string
186  toString() const;
187 
192  virtual
193  DataAbstract*
194  deepCopy() const;
195 
201  virtual
202  DataAbstract*
203  zeroedCopy() const;
204 
205 
211  virtual
212  void
213  dump(const std::string fileName) const;
214 
215 
222  virtual int
223  matrixInverse(DataAbstract* out) const;
224 
230  virtual
231  void
232  setToZero();
233 
244  virtual
246  getPointOffset(int sampleNo,
247  int dataPointNo) const;
248 
249 // ESCRIPT_DLL_API
250 // virtual
251 // DataTypes::RealVectorType::size_type
252 // getPointOffset(int sampleNo,
253 // int dataPointNo);
254 
262  getVectorRW();
263 
266  getVectorRO() const;
267 
270  getVectorRWC();
271 
274  getVectorROC() const;
275 
278 
279  virtual const DataTypes::RealVectorType&
280  getTypedVectorRO(DataTypes::real_t dummy) const;
281 
284 
285  virtual const DataTypes::CplxVectorType&
286  getTypedVectorRO(DataTypes::cplx_t dummy) const;
287 
293  virtual
295  getLength() const;
296 
305  virtual
306  DataAbstract*
307  getSlice(const DataTypes::RegionType& region) const;
308 
317  virtual
318  void
319  setSlice(const DataAbstract* value,
320  const DataTypes::RegionType& region);
321 
334  void
335  setTaggedValue(int tagKey,
336  const DataTypes::ShapeType& pointshape,
337  const DataTypes::RealVectorType& value,
338  int dataOffset=0);
339 
340  void
341  setTaggedValue(int tagKey,
342  const DataTypes::ShapeType& pointshape,
343  const DataTypes::CplxVectorType& value,
344  int dataOffset=0);
345 
354  virtual void
355  symmetric(DataAbstract* ev);
356 
365  virtual void
367 
376  virtual void
377  hermitian(DataAbstract* ev);
378 
387  virtual void
389 
390 
391 
401  virtual void
402  trace(DataAbstract* ev, int axis_offset);
403 
412  virtual void
413  transpose(DataAbstract* ev, int axis_offset);
414 
424  virtual void
425  swapaxes(DataAbstract* ev, int axis0, int axis1);
426 
427 
436  virtual void
438 
451  virtual void
452  eigenvalues_and_eigenvectors(DataAbstract* ev,DataAbstract* V,const double tol=1.e-13);
453 
461  virtual void
462  reorderByReferenceIDs(DataTypes::dim_t *reference_ids);
463 
465  void
466  complicate();
467  protected:
468 
469  private:
470 
486  void
487  initialise(int noSamples,
488  int noDataPointsPerSample,
489  bool cplx
490  );
491 
501  void
502  copy(const DataConstant& value);
503 
504 
505 
513  void
514  copy(const WrappedArray& value);
515 
516 
529  virtual void
530  copyToDataPoint(const int sampleNo, const int dataPointNo, const DataTypes::real_t value);
531 
533  virtual void
534  copyToDataPoint(const int sampleNo, const int dataPointNo, const DataTypes::cplx_t value);
535 
536 
546  virtual void
547  copyToDataPoint(const int sampleNo, const int dataPointNo, const WrappedArray& value);
548 
549  //
550  // The main data storage array, a 2D array of data blocks.
551  // noSamples * noDataPointsPerSample
554 };
555 
556 } // end of namespace
557 
558 #endif
virtual void swapaxes(DataAbstract *ev, int axis0, int axis1)
swaps components axis0 and axis1
Definition: DataExpanded.cpp:925
Definition: FunctionSpace.h:34
DataTypes::RealVectorType m_data_r
Definition: DataExpanded.h:552
virtual DataAbstract * deepCopy() const
Return a deep copy of the current object.
Definition: DataExpanded.cpp:264
virtual void symmetric(DataAbstract *ev)
Computes a symmetric matrix (A + AT) / 2.
Definition: DataExpanded.cpp:714
DataReady parent
Definition: DataExpanded.h:45
void setTaggedValue(int tagKey, const DataTypes::ShapeType &pointshape, const DataTypes::RealVectorType &value, int dataOffset=0)
setTaggedValue
Definition: DataExpanded.cpp:1318
DataTypes::CplxVectorType m_data_c
Definition: DataExpanded.h:553
virtual void setToZero()
sets all values to zero
Definition: DataExpanded.cpp:1072
virtual DataTypes::RealVectorType & getTypedVectorRW(DataTypes::real_t dummy)
These versions use the type system rather than method name to determine return type.
Definition: DataExpanded.cpp:1438
Definition: DataReady.h:35
DataTypes::vec_size_type size_type
Definition: DataVectorAlt.h:49
std::vector< std::pair< int, int > > RegionType
Definition: DataTypes.h:43
Definition: AbstractContinuousDomain.cpp:22
virtual void trace(DataAbstract *ev, int axis_offset)
Computes the trace of a matrix.
Definition: DataExpanded.cpp:848
virtual void dump(const std::string fileName) const
dumps the object into a netCDF file
Definition: DataExpanded.cpp:1247
virtual void antihermitian(DataAbstract *ev)
Computes an antihermitian matrix (A - A*) / 2.
Definition: DataExpanded.cpp:819
DataConstant stores a single data point which represents the entire function space.
Definition: DataConstant.h:37
DataExpanded(const WrappedArray &value, const FunctionSpace &what)
Constructor for DataExpanded.
Definition: DataExpanded.cpp:63
virtual void eigenvalues(DataAbstract *ev)
solves the eigenvalue problem this*V=ev*V for the eigenvalues ev
Definition: DataExpanded.cpp:964
Give a short description of what DataExpanded does.
Definition: DataExpanded.h:43
virtual int matrixInverse(DataAbstract *out) const
invert square matricies
Definition: DataExpanded.cpp:1034
void complicate()
Definition: DataExpanded.cpp:553
std::vector< int > ShapeType
The shape of a single datapoint.
Definition: DataTypes.h:42
Simulates a full dataset accessible via sampleNo and dataPointNo.
Definition: DataTagged.h:44
bool actsExpanded() const
Return true if this Data is expanded or resolves to expanded. That is, if it has a separate value for...
Definition: DataExpanded.h:156
virtual void copyToDataPoint(const int sampleNo, const int dataPointNo, const DataTypes::real_t value)
Copy a double value to the data point dataPointNo of sample sampleNo in this object.
Definition: DataExpanded.cpp:625
const DataTypes::CplxVectorType & getVectorROC() const
Definition: DataExpanded.cpp:1433
virtual DataAbstract * getSlice(const DataTypes::RegionType &region) const
Factory method that returns a newly created DataExpanded. The caller is reponsible for managing the o...
Definition: DataExpanded.cpp:284
virtual void transpose(DataAbstract *ev, int axis_offset)
Transpose each data point of this Data object around the given axis.
Definition: DataExpanded.cpp:887
virtual std::string toString() const
Return a textual representation of the data.
Definition: DataExpanded.cpp:506
virtual void antisymmetric(DataAbstract *ev)
Computes a antisymmetric matrix (A - AT) / 2.
Definition: DataExpanded.cpp:752
const DataTypes::RealVectorType & getVectorRO() const
Definition: DataExpanded.cpp:1422
void copy(const DataConstant &value)
Copy the given data point value to all data points in this object.
Definition: DataExpanded.cpp:350
virtual DataTypes::RealVectorType::size_type getPointOffset(int sampleNo, int dataPointNo) const
Return the offset for the given given data point. This returns the offset in bytes for the given poin...
Definition: DataExpanded.cpp:534
bool hasNaN() const
Return true if any value in the data contains a NaN.
Definition: DataExpanded.cpp:423
virtual void hermitian(DataAbstract *ev)
Computes an hermitian matrix (A + A*) / 2.
Definition: DataExpanded.cpp:794
virtual void reorderByReferenceIDs(DataTypes::dim_t *reference_ids)
reorders data sample ordered by reference_ids to the ordering of the functions space ...
Definition: DataExpanded.cpp:1383
#define V(_K_, _I_)
Definition: ShapeFunctions.cpp:120
virtual DataAbstract * zeroedCopy() const
Return an object with the same type, domain (and tags if appropriate) as this, but all values are zer...
Definition: DataExpanded.cpp:270
std::complex< real_t > cplx_t
complex data type
Definition: DataTypes.h:53
#define ESCRIPT_DLL_API
Definition: escriptcore/src/system_dep.h:29
virtual const DataTypes::RealVectorType & getTypedVectorRO(DataTypes::real_t dummy) const
Definition: DataExpanded.cpp:1444
virtual void eigenvalues_and_eigenvectors(DataAbstract *ev, DataAbstract *V, const double tol=1.e-13)
solves the eigenvalue problem this*V=ev*V for the eigenvalues ev and eigenvectors V ...
Definition: DataExpanded.cpp:1003
Definition: DataAbstract.h:61
DataTypes::RealVectorType & getVectorRW()
Return a a reference to the underlying DataVector.
Definition: DataExpanded.cpp:1416
virtual ~DataExpanded()
Default destructor for DataExpanded.
Definition: DataExpanded.cpp:260
Definition: WrappedArray.h:31
virtual void setSlice(const DataAbstract *value, const DataTypes::RegionType &region)
Copy the specified region from the given value.
Definition: DataExpanded.cpp:289
bool isExpanded() const
Definition: DataExpanded.h:149
void replaceNaN(DataTypes::real_t value)
replaces all NaN values with value
Definition: DataExpanded.cpp:459
double real_t
type of all real-valued scalars in escript
Definition: DataTypes.h:50
index_t dim_t
Definition: DataTypes.h:64
DataTypes::CplxVectorType & getVectorRWC()
Definition: DataExpanded.cpp:1427
void initialise(int noSamples, int noDataPointsPerSample, bool cplx)
Common initialisation called from constructors.
Definition: DataExpanded.cpp:404
virtual DataTypes::RealVectorType::size_type getLength() const
Return the number of doubles stored for the Data.
Definition: DataExpanded.cpp:564