escript Revision_
DataExpanded.h
Go to the documentation of this file.
1
2/*****************************************************************************
3*
4* Copyright (c) 2003-2020 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-2017 by Centre for Geoscience Computing (GeoComp)
14* Development from 2019 by School of Earth and Environmental Sciences
15**
16*****************************************************************************/
17
18
19#if !defined escript_DataExpanded_20040323_H
20#define escript_DataExpanded_20040323_H
21#include "system_dep.h"
22
23#include "DataReady.h"
24
25namespace escript {
26
27//
28// Forward declarations of other Data types.
29class DataConstant;
30class DataTagged;
31
44class DataExpanded : public DataReady {
45
47
48 public:
49
65 explicit DataExpanded(const WrappedArray& value,
66 const FunctionSpace& what);
67
77 explicit DataExpanded(const DataExpanded& other,
78 const DataTypes::RegionType& region);
79
93 explicit DataExpanded(const FunctionSpace& what,
94 const DataTypes::ShapeType &shape,
95 const DataTypes::RealVectorType &data);
96
97
99 explicit DataExpanded(const FunctionSpace& what,
100 const DataTypes::ShapeType &shape,
101 const DataTypes::CplxVectorType &data);
102
103
104
106 explicit DataExpanded(const FunctionSpace& what,
107 const DataTypes::ShapeType &shape,
108 const DataTypes::real_t data);
109
111 explicit DataExpanded(const FunctionSpace& what,
112 const DataTypes::ShapeType &shape,
113 const DataTypes::cplx_t data);
114
115
122 DataExpanded(const DataExpanded& other);
123
130 explicit DataExpanded(const DataConstant& other);
131
138 explicit DataExpanded(const DataTagged& other);
139
145 virtual
147
149 bool
150 isExpanded() const
151 {
152 return true;
153 };
154
156 bool
158 {
159 return true;
160 }
161
166 bool
167 hasNaN() const;
168
173 void
175
177 void
179
184 virtual bool
185 hasInf() const;
186
191 virtual void
193
198 virtual void
200
201
207 virtual
208 std::string
209 toString() const;
210
215 virtual
217 deepCopy() const;
218
224 virtual
226 zeroedCopy() const;
227
228
234 virtual
235 void
236 dump(const std::string fileName) const;
237
238
245 virtual int
246 matrixInverse(DataAbstract* out) const;
247
253 virtual
254 void
255 setToZero();
256
267 virtual
269 getPointOffset(int sampleNo,
270 int dataPointNo) const;
271
272// ESCRIPT_DLL_API
273// virtual
274// DataTypes::RealVectorType::size_type
275// getPointOffset(int sampleNo,
276// int dataPointNo);
277
285 getVectorRW();
286
289 getVectorRO() const;
290
293 getVectorRWC();
294
297 getVectorROC() const;
298
301
302 virtual const DataTypes::RealVectorType&
304
307
308 virtual const DataTypes::CplxVectorType&
310
316 virtual
318 getLength() const;
319
328 virtual
330 getSlice(const DataTypes::RegionType& region) const;
331
340 virtual
341 void
342 setSlice(const DataAbstract* value,
343 const DataTypes::RegionType& region);
344
357 void
358 setTaggedValue(int tagKey,
359 const DataTypes::ShapeType& pointshape,
360 const DataTypes::RealVectorType& value,
361 int dataOffset=0);
362
363 void
364 setTaggedValue(int tagKey,
365 const DataTypes::ShapeType& pointshape,
366 const DataTypes::CplxVectorType& value,
367 int dataOffset=0);
368
377 virtual void
379
388 virtual void
390
399 virtual void
401
410 virtual void
412
413
414
424 virtual void
425 trace(DataAbstract* ev, int axis_offset);
426
435 virtual void
436 transpose(DataAbstract* ev, int axis_offset);
437
447 virtual void
448 swapaxes(DataAbstract* ev, int axis0, int axis1);
449
450
459 virtual void
461
474 virtual void
475 eigenvalues_and_eigenvectors(DataAbstract* ev,DataAbstract* V,const double tol=1.e-13);
476
484 virtual void
486
488 void
489 complicate();
490 protected:
491
492 private:
493
509 void
510 initialise(int noSamples,
511 int noDataPointsPerSample,
512 bool cplx
513 );
514
524 void
525 copy(const DataConstant& value);
526
527
528
536 void
537 copy(const WrappedArray& value);
538
539
552 virtual void
553 copyToDataPoint(const int sampleNo, const int dataPointNo, const DataTypes::real_t value);
554
556 virtual void
557 copyToDataPoint(const int sampleNo, const int dataPointNo, const DataTypes::cplx_t value);
558
559
569 virtual void
570 copyToDataPoint(const int sampleNo, const int dataPointNo, const WrappedArray& value);
571
572 //
573 // The main data storage array, a 2D array of data blocks.
574 // noSamples * noDataPointsPerSample
577};
578
579} // end of namespace
580
581#endif
#define V(_K_, _I_)
Definition ShapeFunctions.cpp:121
Definition DataAbstract.h:63
DataConstant stores a single data point which represents the entire function space.
Definition DataConstant.h:38
Give a short description of what DataExpanded does.
Definition DataExpanded.h:44
const DataTypes::RealVectorType & getVectorRO() const
Definition DataExpanded.cpp:1510
virtual void swapaxes(DataAbstract *ev, int axis0, int axis1)
swaps components axis0 and axis1
Definition DataExpanded.cpp:1013
DataTypes::CplxVectorType & getVectorRWC()
Definition DataExpanded.cpp:1515
DataExpanded(const WrappedArray &value, const FunctionSpace &what)
Constructor for DataExpanded.
Definition DataExpanded.cpp:64
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:713
bool hasNaN() const
Return true if any value in the data contains a NaN.
Definition DataExpanded.cpp:424
virtual void setSlice(const DataAbstract *value, const DataTypes::RegionType &region)
Copy the specified region from the given value.
Definition DataExpanded.cpp:290
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:285
void copy(const DataConstant &value)
Copy the given data point value to all data points in this object.
Definition DataExpanded.cpp:351
bool isExpanded() const
Definition DataExpanded.h:150
virtual void eigenvalues(DataAbstract *ev)
solves the eigenvalue problem this*V=ev*V for the eigenvalues ev
Definition DataExpanded.cpp:1052
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:622
DataReady parent
Definition DataExpanded.h:46
DataTypes::RealVectorType m_data_r
Definition DataExpanded.h:575
void replaceNaN(DataTypes::real_t value)
replaces all NaN values with value
Definition DataExpanded.cpp:460
virtual int matrixInverse(DataAbstract *out) const
invert square matricies
Definition DataExpanded.cpp:1122
virtual void antihermitian(DataAbstract *ev)
Computes an antihermitian matrix (A - A*) / 2.
Definition DataExpanded.cpp:907
virtual void dump(const std::string fileName) const
dumps the object into a netCDF file
Definition DataExpanded.cpp:1335
virtual void setToZero()
sets all values to zero
Definition DataExpanded.cpp:1160
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:157
virtual void symmetric(DataAbstract *ev)
Computes a symmetric matrix (A + AT) / 2.
Definition DataExpanded.cpp:802
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:1471
virtual ~DataExpanded()
Default destructor for DataExpanded.
Definition DataExpanded.cpp:261
virtual void hermitian(DataAbstract *ev)
Computes an hermitian matrix (A + A*) / 2.
Definition DataExpanded.cpp:882
void setTaggedValue(int tagKey, const DataTypes::ShapeType &pointshape, const DataTypes::RealVectorType &value, int dataOffset=0)
setTaggedValue
Definition DataExpanded.cpp:1406
DataTypes::RealVectorType & getVectorRW()
Return a a reference to the underlying DataVector.
Definition DataExpanded.cpp:1504
virtual bool hasInf() const
Return true if data contains Inf or -Inf.
Definition DataExpanded.cpp:509
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:271
void complicate()
Definition DataExpanded.cpp:641
virtual void trace(DataAbstract *ev, int axis_offset)
Computes the trace of a matrix.
Definition DataExpanded.cpp:936
virtual void antisymmetric(DataAbstract *ev)
Computes a antisymmetric matrix (A - AT) / 2.
Definition DataExpanded.cpp:840
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:1091
virtual void replaceInf(DataTypes::real_t value)
replaces all (+/-)Inf values with value
Definition DataExpanded.cpp:545
virtual const DataTypes::RealVectorType & getTypedVectorRO(DataTypes::real_t dummy) const
Definition DataExpanded.cpp:1532
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:1526
virtual void transpose(DataAbstract *ev, int axis_offset)
Transpose each data point of this Data object around the given axis.
Definition DataExpanded.cpp:975
DataTypes::CplxVectorType m_data_c
Definition DataExpanded.h:576
void initialise(int noSamples, int noDataPointsPerSample, bool cplx)
Common initialisation called from constructors.
Definition DataExpanded.cpp:405
virtual DataTypes::RealVectorType::size_type getLength() const
Return the number of doubles stored for the Data.
Definition DataExpanded.cpp:652
virtual DataAbstract * deepCopy() const
Return a deep copy of the current object.
Definition DataExpanded.cpp:265
const DataTypes::CplxVectorType & getVectorROC() const
Definition DataExpanded.cpp:1521
virtual std::string toString() const
Return a textual representation of the data.
Definition DataExpanded.cpp:594
Definition DataReady.h:37
Simulates a full dataset accessible via sampleNo and dataPointNo.
Definition DataTagged.h:46
DataTypes::vec_size_type size_type
Definition DataVectorAlt.h:50
Definition FunctionSpace.h:36
Definition WrappedArray.h:33
#define ESCRIPT_DLL_API
Definition escriptcore/src/system_dep.h:30
std::complex< real_t > cplx_t
complex data type
Definition DataTypes.h:55
std::vector< std::pair< int, int > > RegionType
Definition DataTypes.h:45
double real_t
type of all real-valued scalars in escript
Definition DataTypes.h:52
std::vector< int > ShapeType
The shape of a single datapoint.
Definition DataTypes.h:44
index_t dim_t
Definition DataTypes.h:66
Definition AbstractContinuousDomain.cpp:23