escript  Revision_
DataConstant.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_DataConstant_20040323_H
19 #define escript_DataConstant_20040323_H
20 #include "system_dep.h"
21 
22 #include "DataReady.h"
23 #include "WrappedArray.h"
24 
25 
26 namespace escript {
27 
37 class DataConstant : public DataReady {
38 typedef DataReady parent;
39  public:
40 
52  explicit DataConstant(const WrappedArray& value,
53  const FunctionSpace& what);
54 
55 
61  DataConstant(const DataConstant& other);
62 
63 
74  explicit DataConstant(const DataConstant& other,
75  const DataTypes::RegionType& region);
76 
88  explicit DataConstant(const FunctionSpace& what,
89  const DataTypes::ShapeType &shape,
90  const DataTypes::RealVectorType &data);
91 
92  explicit DataConstant(const FunctionSpace& what,
93  const DataTypes::ShapeType &shape,
94  const DataTypes::CplxVectorType &data);
95 
97  explicit DataConstant(const FunctionSpace& what,
98  const DataTypes::ShapeType &shape,
99  const DataTypes::real_t v);
100 
101  explicit DataConstant(const FunctionSpace& what,
102  const DataTypes::ShapeType &shape,
103  const DataTypes::cplx_t v);
104 
106  bool
107  isConstant() const
108  {
109  return true;
110  };
111 
116  bool
117  hasNaN() const;
118 
123  void
125 
127  void
129 
135  std::string
136  toString() const;
137 
142  virtual
143  DataAbstract*
144  deepCopy() const;
145 
151  virtual
152  DataAbstract*
153  zeroedCopy() const;
154 
155 
161  virtual
162  void
163  dump(const std::string fileName) const;
164 
170  virtual
171  void
172  setToZero();
173 
184  virtual
186  getPointOffset(int sampleNo,
187  int dataPointNo) const;
188 
190  virtual
192  getPointOffset(int sampleNo,
193  int dataPointNo);
194 
200  virtual
202  getLength() const;
203 
212  virtual
213  DataAbstract*
214  getSlice(const DataTypes::RegionType& region) const;
215 
223  virtual
224  void
225  setSlice(const DataAbstract* value,
226  const DataTypes::RegionType& region);
227 
228 
237  virtual void
238  symmetric(DataAbstract* ev);
239 
248  virtual void
250 
259  virtual void
260  hermitian(DataAbstract* ev);
261 
270  virtual void
272 
282  virtual void
283  trace(DataAbstract* ev, int axis_offset);
284 
293  virtual void
294  transpose(DataAbstract* ev, int axis_offset);
295 
305  virtual void
306  swapaxes(DataAbstract* ev, int axis0, int axis1);
307 
308 
317  virtual void
319 
332  virtual void
333  eigenvalues_and_eigenvectors(DataAbstract* ev,DataAbstract* V,const double tol=1.e-13);
334 
335 
342  virtual int
343  matrixInverse(DataAbstract* out) const;
344 
351  getVectorRW();
352 
353 
356  getVectorRO() const;
357 
360  getVectorRWC();
361 
362 
365  getVectorROC() const;
366 
367 
368 
372 
374  virtual const DataTypes::RealVectorType&
375  getTypedVectorRO(DataTypes::real_t dummy) const;
376 
380 
382  virtual const DataTypes::CplxVectorType&
383  getTypedVectorRO(DataTypes::cplx_t dummy) const;
384 
385 
386 
387 
392  void complicate();
393 
394  protected:
395 
396  private:
397  //
398  // the actual data
401 
402 };
403 
404 } // end of namespace
405 #endif
Definition: FunctionSpace.h:34
DataTypes::CplxVectorType & getVectorRWC()
Definition: DataConstant.cpp:766
DataTypes::RealVectorType m_data_r
Definition: DataConstant.h:399
virtual void trace(DataAbstract *ev, int axis_offset)
Computes the trace of a matrix.
Definition: DataConstant.cpp:412
virtual void hermitian(DataAbstract *ev)
Computes an hermitian matrix (A + A*) / 2.
Definition: DataConstant.cpp:383
virtual void symmetric(DataAbstract *ev)
Computes a symmetric matrix (A + AT) / 2.
Definition: DataConstant.cpp:349
virtual void swapaxes(DataAbstract *ev, int axis0, int axis1)
swaps components axis0 and axis1
Definition: DataConstant.cpp:430
Definition: DataReady.h:35
DataTypes::vec_size_type size_type
Definition: DataVectorAlt.h:49
const DataTypes::RealVectorType & getVectorRO() const
Definition: DataConstant.cpp:760
std::vector< std::pair< int, int > > RegionType
Definition: DataTypes.h:43
Definition: AbstractContinuousDomain.cpp:22
const DataTypes::CplxVectorType & getVectorROC() const
Definition: DataConstant.cpp:773
virtual void setToZero()
sets all values to zero
Definition: DataConstant.cpp:514
DataConstant stores a single data point which represents the entire function space.
Definition: DataConstant.h:37
virtual const DataTypes::RealVectorType & getTypedVectorRO(DataTypes::real_t dummy) const
Definition: DataConstant.cpp:786
std::vector< int > ShapeType
The shape of a single datapoint.
Definition: DataTypes.h:42
DataTypes::RealVectorType & getVectorRW()
Return a reference to the underlying DataVector.
Definition: DataConstant.cpp:753
DataConstant(const WrappedArray &value, const FunctionSpace &what)
Constructor for DataConstant objects.
Definition: DataConstant.cpp:64
bool hasNaN() const
Return true if the value contains a NaN.
Definition: DataConstant.cpp:152
virtual DataAbstract * zeroedCopy() const
Return an object with the same type, domain (and tags if appropriate) as this, but all values are zer...
Definition: DataConstant.cpp:251
bool isConstant() const
Definition: DataConstant.h:107
std::string toString() const
Write the data as a string.
Definition: DataConstant.cpp:236
DataTypes::CplxVectorType m_data_c
Definition: DataConstant.h:400
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: DataConstant.cpp:481
virtual DataTypes::RealVectorType & getTypedVectorRW(DataTypes::real_t dummy)
These versions use the type system rather than method name to determine return type.
Definition: DataConstant.cpp:779
virtual DataAbstract * deepCopy() const
Return a deep copy of the current object.
Definition: DataConstant.cpp:245
virtual void eigenvalues(DataAbstract *ev)
solves the eigenvalue problem this*V=ev*V for the eigenvalues ev
Definition: DataConstant.cpp:464
virtual void dump(const std::string fileName) const
dumps the object into a netCDF file
Definition: DataConstant.cpp:672
virtual int matrixInverse(DataAbstract *out) const
invert square matricies
Definition: DataConstant.cpp:497
#define V(_K_, _I_)
Definition: ShapeFunctions.cpp:120
std::complex< real_t > cplx_t
complex data type
Definition: DataTypes.h:53
#define ESCRIPT_DLL_API
Definition: escriptcore/src/system_dep.h:29
Definition: DataAbstract.h:61
virtual DataAbstract * getSlice(const DataTypes::RegionType &region) const
Factory method that returns a newly created DataConstant object sliced from the specified region of t...
Definition: DataConstant.cpp:304
void complicate()
Convert from real data to complex data.
Definition: DataConstant.cpp:804
Definition: WrappedArray.h:31
virtual DataTypes::RealVectorType::size_type getPointOffset(int sampleNo, int dataPointNo) const
Return the offset for the given sample. This is a somewhat artificial notion but returns the offset i...
Definition: DataConstant.cpp:268
virtual void transpose(DataAbstract *ev, int axis_offset)
Transpose each data point of this Data object around the given axis.
Definition: DataConstant.cpp:447
virtual void setSlice(const DataAbstract *value, const DataTypes::RegionType &region)
Copy the specified region from the given value.
Definition: DataConstant.cpp:310
double real_t
type of all real-valued scalars in escript
Definition: DataTypes.h:50
virtual DataTypes::RealVectorType::size_type getLength() const
Return the number of doubles stored for the Data object.
Definition: DataConstant.cpp:298
DataReady parent
Definition: DataConstant.h:38
virtual void antihermitian(DataAbstract *ev)
Computes an anti-hermitian matrix (A - A*) / 2.
Definition: DataConstant.cpp:397
virtual void antisymmetric(DataAbstract *ev)
Computes a nonsymmetric matrix (A - AT) / 2.
Definition: DataConstant.cpp:366
void replaceNaN(DataTypes::real_t value)
replaces all NaN values with value
Definition: DataConstant.cpp:187