escript  Revision_
DataLazy.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 #ifndef __ESCRIPT_DATALAZY_H__
19 #define __ESCRIPT_DATALAZY_H__
20 
21 #include "system_dep.h"
22 #include "DataAbstract.h"
23 #include "ArrayOps.h" // for tensor_binary_op
24 #include "DataVector.h" // for ElementType
25 #include "ES_optype.h"
26 
27 #include <string>
28 
29 //#define LAZY_NODE_STORAGE
30 
31 namespace escript {
32 
33 
43 class DataLazy;
44 
45 typedef POINTER_WRAPPER_CLASS(DataLazy) DataLazy_ptr;
46 typedef POINTER_WRAPPER_CLASS(const DataLazy) const_DataLazy_ptr;
47 
48 class DataLazy : public DataAbstract
49 {
50 
51 typedef DataAbstract parent;
53 
54 public:
62 
63 
73 
83  DataLazy(DataAbstract_ptr left, ES_optype op, double tol);
84 
94  DataLazy(DataAbstract_ptr left, ES_optype op, int axis_offset);
95 
96 
106 
117  DataLazy(DataAbstract_ptr left, DataAbstract_ptr right, ES_optype op, int axis_offset, int transpose);
118 
129  DataLazy(DataAbstract_ptr left, ES_optype op, const int axis0, const int axis1);
130 
138  DataLazy(DataAbstract_ptr mask, DataAbstract_ptr left, DataAbstract_ptr right/*, double tol*/);
139 
141  ~DataLazy();
142 
149  resolve();
150 
152  std::string
153  toString() const;
154 
156  DataAbstract*
157  deepCopy() const;
158 
160  DataAbstract*
161  zeroedCopy() const;
162 
169  getLength() const;
170 
171 
173  DataAbstract*
174  getSlice(const DataTypes::RegionType& region) const;
175 
176 
178  getPointOffset(int sampleNo,
179  int dataPointNo) const;
180 
182  getPointOffset(int sampleNo,
183  int dataPointNo);
184 
189  size_t
190  getMaxSampleSize() const;
191 
202  resolveSample(int sampleNo, size_t& roffset) const;
203 
206  resolveTypedSample(int sampleNo, size_t& roffset, DataTypes::cplx_t dummy) const;
207 
210  resolveTypedSample(int sampleNo, size_t& roffset, DataTypes::real_t dummy) const;
211 
212 
217  bool
218  actsExpanded() const;
219 
225  virtual void
226  setToZero();
227 
228 
230  void
231  resolveGroupWorker(std::vector<DataLazy*>& dats);
232 
233 
234 private:
235  int* m_sampleids; // may be NULL
238 
239  mutable DataReady_ptr m_id; // For IDENTITY nodes, stores a wrapped value.
240  mutable DataLazy_ptr m_left, m_right, m_mask; // operands for operation.
241  mutable ES_optype m_op; // operation to perform.
242  mutable ES_opgroup m_opgroup; // type of operation to perform
243 
244  size_t m_samplesize; // number of values required to store a sample
245 
246  char m_readytype; // E for expanded, T for tagged, C for constant
247 
248  int m_axis_offset; // required extra info for general tensor product
249  int m_transpose; // offset and transpose are used for swapaxes as well
250  int m_SL, m_SM, m_SR; // computed properties used in general tensor product
251 
252 
253  double m_tol; // required extra info for <>0 and ==0
254 
255  mutable size_t m_children;
256  mutable size_t m_height;
257 
258 
259 
263  void LazyNodeSetup();
264 
265 
267  resolveNodeUnary(int tid, int sampleNo, size_t& roffset) const;
268 
270  resolveNodeUnaryCplx(int tid, int sampleNo, size_t& roffset) const;
271 
272 
274  resolveNodeReduction(int tid, int sampleNo, size_t& roffset) const;
275 
277  resolveNodeReductionCplx(int tid, int sampleNo, size_t& roffset) const;
278 
280  resolveNodeSample(int tid, int sampleNo, size_t& roffset) const;
281 
283  resolveNodeSampleCplx(int tid, int sampleNo, size_t& roffset) const;
284 
286  resolveNodeBinary(int tid, int sampleNo, size_t& roffset) const;
287 
289  resolveNodeBinaryCplx(int tid, int sampleNo, size_t& roffset) const;
290 
291 
293  resolveNodeNP1OUT(int tid, int sampleNo, size_t& roffset) const;
294 
296  resolveNodeNP1OUTCplx(int tid, int sampleNo, size_t& roffset) const;
297 
299  resolveNodeNP1OUT_P(int tid, int sampleNo, size_t& roffset) const;
300 
302  resolveNodeNP1OUT_PCplx(int tid, int sampleNo, size_t& roffset) const;
303 
304 
306  resolveNodeTProd(int tid, int sampleNo, size_t& roffset) const;
307 
309  resolveNodeTProdCplx(int tid, int sampleNo, size_t& roffset) const;
310 
311 
313  resolveNodeNP1OUT_2P(int tid, int sampleNo, size_t& roffset) const;
314 
316  resolveNodeNP1OUT_2PCplx(int tid, int sampleNo, size_t& roffset) const;
317 
319  resolveNodeCondEval(int tid, int sampleNo, size_t& roffset) const;
320 
322  resolveNodeCondEvalCplx(int tid, int sampleNo, size_t& roffset) const;
323 
324 
326  resolveNodeUnary_C(int tid, int sampleNo, size_t& roffset) const;
327 
331  void
332  intoString(std::ostringstream& oss) const;
333 
337  void
338  intoTreeString(std::ostringstream& oss,std::string indent) const;
339 
346  void
347  collapse() const; // converts the node into an IDENTITY node
348 
349 
356  collapseToReady() const;
357 
362  void
364 
368  void
369  makeIdentity(const DataReady_ptr& p);
370 
371 
377 
380 
381 };
382 
383 // If an expression is already complex, return the same expression.
384 // Otherwise, return the old expression with a promote operation
385 // above it
387 
388 }
389 
390 #endif // __ESCRIPT_DATALAZY_H__
391 
escript::tensor_unary_array_operation_real
void tensor_unary_array_operation_real(const size_t size, const IN *arg1, DataTypes::real_t *argRes, escript::ES_optype operation, DataTypes::real_t tol=0)
Definition: ArrayOps.h:683
escript::DataLazy::resolveNodeNP1OUT
const DataTypes::RealVectorType * resolveNodeNP1OUT(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1391
escript::IDENTITY
Definition: ES_optype.h:55
ESCRIPT_DLL_API
#define ESCRIPT_DLL_API
Definition: escriptcore/src/system_dep.h:29
escript::MINVAL
Definition: ES_optype.h:95
escript::FMin
Return the minimum value of the two given values.
Definition: ArrayOps.h:72
escript::SIGN
Definition: ES_optype.h:76
escript::Data::erf
Data erf() const
Return the error function erf of each data point of this Data object.
Definition: Data.cpp:2115
escript::DataLazy::m_op
ES_optype m_op
Definition: DataLazy.h:253
escript::DataLazy::resolveNodeSampleCplx
const DataTypes::CplxVectorType * resolveNodeSampleCplx(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1175
escript::Data::sign
Data sign() const
Return the sign of each data point of this Data object. -1 for negative values, zero for zero values,...
Definition: Data.cpp:2161
escript::DataTypes::shapeToString
std::string shapeToString(const DataTypes::ShapeType &shape)
Return the given shape as a string.
Definition: DataTypes.cpp:116
escript::Data::oneOver
Data oneOver() const
Returns 1./ Data object.
Definition: Data.cpp:1250
escript::DataLazy::resolveNodeUnaryCplx
const DataTypes::CplxVectorType * resolveNodeUnaryCplx(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1274
escript::DataTypes::real_t
double real_t
type of all real-valued scalars in escript
Definition: DataTypes.h:76
escript::Data::atanh
Data atanh() const
Return the atanh of each data point of this Data object.
Definition: Data.cpp:2140
escript::Data::atan
Data atan() const
Return the atan of each data point of this Data object.
Definition: Data.cpp:2086
escript::LZ
Definition: ES_optype.h:84
escript::DataLazy::resolveNodeBinary
const DataTypes::RealVectorType * resolveNodeBinary(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1774
escript::Data::antihermitian
Data antihermitian() const
Return the anti-hermitian part of a matrix which is half the matrix minus its hermitian.
Definition: Data.cpp:2812
POINTER_WRAPPER_CLASS
#define POINTER_WRAPPER_CLASS(x)
Definition: Pointers.h:32
escript::Data::cos
Data cos() const
Return the cos of each data point of this Data object.
Definition: Data.cpp:2057
escript::DataTypes::DataVectorAlt< real_t >::ElementType
real_t ElementType
Definition: DataVectorAlt.h:81
escript::DataLazy::m_height
size_t m_height
Definition: DataLazy.h:268
escript::COSH
Definition: ES_optype.h:68
escript::DataLazy::resolveSample
const DataTypes::RealVectorType * resolveSample(int sampleNo, size_t &roffset) const
Compute the value of the expression for the given sample.
Definition: DataLazy.cpp:2336
escript::DataLazy::resolveNodeNP1OUTCplx
const DataTypes::CplxVectorType * resolveNodeNP1OUTCplx(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1466
escript::FMax
Return the maximum value of the two given values.
Definition: ArrayOps.h:57
escript::Data::whereNonNegative
Data whereNonNegative() const
Return a Data with a 1 for +ive or 0 values and a 0 for -ive values.
Definition: Data.cpp:1279
escript::Data::tan
Data tan() const
Return the tan of each data point of this Data object.
Definition: Data.cpp:2064
escript::DataLazy::m_readytype
char m_readytype
Definition: DataLazy.h:258
escript::antihermitian
void antihermitian(const DataTypes::CplxVectorType &in, const DataTypes::ShapeType &inShape, typename DataTypes::CplxVectorType::size_type inOffset, DataTypes::CplxVectorType &ev, const DataTypes::ShapeType &evShape, typename DataTypes::CplxVectorType::size_type evOffset)
computes a antihermitian matrix from your square matrix A: (A - adjoint(A)) / 2
Definition: DataVectorOps.cpp:962
escript::POS
Definition: ES_optype.h:79
escript::DataLazy::getMaxSampleSize
size_t getMaxSampleSize() const
escript::DataLazy::m_tol
double m_tol
Definition: DataLazy.h:265
escript::DataLazy::resolveNodeNP1OUT_2PCplx
const DataTypes::CplxVectorType * resolveNodeNP1OUT_2PCplx(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1658
escript::DataLazy::resolveNodeTProd
const DataTypes::RealVectorType * resolveNodeTProd(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:2224
escript::Data::borrowDataPtr
DataAbstract_ptr borrowDataPtr(void) const
Definition: Data.cpp:4632
escript::DataLazy::m_SL
int m_SL
Definition: DataLazy.h:262
escript::DataAbstract::getPtr
DataAbstract_ptr getPtr()
Return shared pointer managing this object.
Definition: DataAbstract.cpp:38
escript::DataLazy::setToZero
virtual void setToZero()
Produces an IDENTITY DataLazy containing zero. The result will have the same shape and functionspace ...
Definition: DataLazy.cpp:2986
escript::Data::sinh
Data sinh() const
Return the sinh of each data point of this Data object.
Definition: Data.cpp:2093
escript::Data::abs
Data abs() const
Return the absolute value of each data point of this Data object.
Definition: Data.cpp:2169
escript::PROM
Definition: ES_optype.h:108
escript::SQRT
Definition: ES_optype.h:81
escript::G_UNARY_R
Definition: ES_optype.h:108
escript::DataLazy::m_sampleids
int * m_sampleids
Definition: DataLazy.h:247
escript::DataAbstract_ptr
boost::shared_ptr< DataAbstract > DataAbstract_ptr
Definition: DataAbstract.h:64
escript::SWAP
Definition: ES_optype.h:94
escript::EXP
Definition: ES_optype.h:80
escript::NSYM
Definition: ES_optype.h:90
escript::Data::swapaxes
Data swapaxes(const int axis0, const int axis1) const
swaps the components axis0 and axis1
Definition: Data.cpp:2669
escript::DataLazy::resolveNodeNP1OUT_PCplx
const DataTypes::CplxVectorType * resolveNodeNP1OUT_PCplx(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1574
escript::DataLazy::resolveNodeReductionCplx
const DataTypes::CplxVectorType * resolveNodeReductionCplx(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1372
escript::DataLazy::m_id
DataReady_ptr m_id
Definition: DataLazy.h:251
escript::Data::exp
Data exp() const
Return the exponential function of each data point of this Data object.
Definition: Data.cpp:2195
escript::DataTypes::DataVectorAlt< real_t >::size_type
DataTypes::vec_size_type size_type
Definition: DataVectorAlt.h:88
escript::symmetric
void symmetric(const VEC &in, const DataTypes::ShapeType &inShape, typename VEC::size_type inOffset, VEC &ev, const DataTypes::ShapeType &evShape, typename VEC::size_type evOffset)
computes a symmetric matrix from your square matrix A: (A + transpose(A)) / 2
Definition: DataVectorOps.h:102
escript::DataTypes::DataVectorAlt< real_t >
escript::NHER
Definition: ES_optype.h:99
escript::G_UNARY_C
Definition: ES_optype.h:115
escript::DataLazy::getLength
DataTypes::RealVectorType::size_type getLength() const
This method throws an exception. It does not really make sense to ask this question of lazy data.
Definition: DataLazy.cpp:2915
escript::SINH
Definition: ES_optype.h:67
escript::transpose
void transpose(const VEC &in, const DataTypes::ShapeType &inShape, typename VEC::size_type inOffset, VEC &ev, const DataTypes::ShapeType &evShape, typename VEC::size_type evOffset, int axis_offset)
Transpose each data point of this Data object around the given axis.
Definition: DataVectorOps.h:342
escript::opToString
const std::string & opToString(ES_optype op)
Definition: ES_optype.cpp:88
escript::DataLazy::resolveNodeWorker
DataReady_ptr resolveNodeWorker()
resolve to a ReadyData object using storage at nodes
Definition: DataLazy.cpp:2544
escript::G_NP1OUT_P
Definition: ES_optype.h:110
escript::TRANS
Definition: ES_optype.h:92
escript::DataLazy::m_opgroup
ES_opgroup m_opgroup
Definition: DataLazy.h:254
escript::G_BINARY
Definition: ES_optype.h:105
escript::ATANH
Definition: ES_optype.h:73
ESCRIPT_MAX_DATA_RANK
#define ESCRIPT_MAX_DATA_RANK
Definition: Data.h:38
escript::LOG
Definition: ES_optype.h:75
DataLazy.h
escript::G_UNARY_P
Definition: ES_optype.h:107
escript::DataLazy::resolveNodeNP1OUT_P
const DataTypes::RealVectorType * resolveNodeNP1OUT_P(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1527
escript::DataLazy::resolveNodeUnary_C
const DataTypes::CplxVectorType * resolveNodeUnary_C(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1437
escript::SUB
Definition: ES_optype.h:57
escript::FunctionSpace
Definition: FunctionSpace.h:47
escript::Data::tanh
Data tanh() const
Return the tanh of each data point of this Data object.
Definition: Data.cpp:2107
escript::ACOS
Definition: ES_optype.h:65
escript::DataLazy::resolveNodeCondEvalCplx
const DataTypes::CplxVectorType * resolveNodeCondEvalCplx(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1729
escript::makePromote
DataLazy_ptr makePromote(DataLazy_ptr p)
Definition: DataLazy.cpp:115
escript::Data::complicate
void complicate()
Definition: Data.cpp:6061
escript::G_CONDEVAL
Definition: ES_optype.h:114
escript::G_NP1OUT_2P
Definition: ES_optype.h:112
escript::TANH
Definition: ES_optype.h:69
escript::Data::whereZero
Data whereZero(DataTypes::real_t tol=0.0) const
Return a Data with a 1 for 0 values and a 0 for +ive or -ive values.
Definition: Data.cpp:1301
escript::C_GeneralTensorProduct
Data C_GeneralTensorProduct(Data &arg_0, Data &arg_1, int axis_offset=0, int transpose=0)
Compute a tensor product of two Data objects.
Definition: Data.cpp:3694
escript::DataLazy::~DataLazy
~DataLazy()
Definition: DataLazy.cpp:919
system_dep.h
escript::ERF
Definition: ES_optype.h:70
escript::getNumberOfThreads
int getNumberOfThreads()
returns the number of threads
Definition: Utils.cpp:85
escript::DataLazy::resolveNodeTProdCplx
const DataTypes::CplxVectorType * resolveNodeTProdCplx(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:2278
escript::NEG
Definition: ES_optype.h:78
escript::G_IDENTITY
Definition: ES_optype.h:104
escript::Data::powD
Data powD(const Data &right) const
Return the given power of each data point of this Data object.
Definition: Data.cpp:3341
escript::DataLazy::collapseToReady
DataReady_ptr collapseToReady() const
Evaluates the expression using methods on Data. This does the work for the collapse method....
Definition: DataLazy.cpp:931
escript::DataLazy::getPointOffset
DataTypes::RealVectorType::size_type getPointOffset(int sampleNo, int dataPointNo) const
Return the offset for the given sample. This returns the offset for the given point into the containe...
Definition: DataLazy.cpp:2956
escript::GZ
Definition: ES_optype.h:83
ArrayOps.h
escript::DataAbstract::getNumDPPSample
int getNumDPPSample() const
Return the number of data points per sample.
Definition: DataAbstract.h:624
escript::DataLazy::resolveGroupWorker
void resolveGroupWorker(std::vector< DataLazy * > &dats)
Definition: DataLazy.cpp:2464
Utils.h
escript::Data
Data represents a collection of datapoints.
Definition: Data.h:63
escript::DataException
Definition: DataException.h:39
escript::DataAbstract::DataAbstract
DataAbstract(const FunctionSpace &what, const ShapeType &shape, bool isDataEmpty=false, bool isCplx=false)
Constructor for DataAbstract.
Definition: DataAbstract.cpp:75
escript::Data::whereNonPositive
Data whereNonPositive() const
Return a Data with a 1 for -ive or 0 values and a 0 for +ive values.
Definition: Data.cpp:1290
escript::DataLazy::resolveNodeWorkerCplx
DataReady_ptr resolveNodeWorkerCplx()
Definition: DataLazy.cpp:2602
escript::hermitian
void hermitian(const DataTypes::CplxVectorType &in, const DataTypes::ShapeType &inShape, DataTypes::CplxVectorType::size_type inOffset, DataTypes::CplxVectorType &ev, const DataTypes::ShapeType &evShape, DataTypes::CplxVectorType::size_type evOffset)
computes an hermitian matrix from your square matrix A: (A + adjoint(A)) / 2
Definition: DataVectorOps.cpp:915
escript::DataTypes::ShapeType
std::vector< int > ShapeType
The shape of a single datapoint.
Definition: DataTypes.h:68
escript::DataTypes
Contains the types to represent Shapes, Regions, RegionLoop ranges and vectors of data as well as the...
Definition: DataTypes.cpp:86
escript::ABS
Definition: ES_optype.h:77
escript::Data::symmetric
Data symmetric() const
Return the symmetric part of a matrix which is half the matrix plus its transpose.
Definition: Data.cpp:2726
EscriptParams.h
escript::DataLazy::getSlice
DataAbstract * getSlice(const DataTypes::RegionType &region) const
Return the given slice from this object.
Definition: DataLazy.cpp:2922
escript::DataExpanded::getPointOffset
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:621
escript::matrix_matrix_product
void matrix_matrix_product(const int SL, const int SM, const int SR, const LEFT *A, const RIGHT *B, RES *C, int transpose)
Definition: ArrayOps.h:563
escript::DataTypes::RegionType
std::vector< std::pair< int, int > > RegionType
Definition: DataTypes.h:69
DataAbstract.h
escript::Data::sin
Data sin() const
Return the sin of each data point of this Data object.
Definition: Data.cpp:2050
SIZELIMIT
#define SIZELIMIT
Definition: DataLazy.cpp:47
escript::DataTypes::noValues
int noValues(const ShapeType &shape)
Calculate the number of values in a datapoint with the given shape.
Definition: DataTypes.cpp:90
escript::DataAbstract::getShape
const DataTypes::ShapeType & getShape() const
Return the shape information for the point data.
Definition: DataAbstract.h:654
escript::G_UNARY
Definition: ES_optype.h:106
escript::DataLazy::ShapeType
DataTypes::ShapeType ShapeType
Definition: DataLazy.h:64
escript::G_REDUCTION
Definition: ES_optype.h:113
escript::Data::acosh
Data acosh() const
Return the acosh of each data point of this Data object.
Definition: Data.cpp:2133
escript::DataAbstract::getNumSamples
int getNumSamples() const
Return the number of samples.
Definition: DataAbstract.h:635
escript::ACOSH
Definition: ES_optype.h:72
escript::Data::cosh
Data cosh() const
Return the cosh of each data point of this Data object.
Definition: Data.cpp:2100
escript::MUL
Definition: ES_optype.h:58
escript::DataLazy::LazyNodeSetup
void LazyNodeSetup()
Definition: DataLazy.cpp:408
escript::Data::trace
Data trace(int axis_offset) const
Return the trace of a matrix.
Definition: Data.cpp:2852
escript::DataLazy::parent
DataAbstract parent
Definition: DataLazy.h:63
escript::DataLazy::m_SR
int m_SR
Definition: DataLazy.h:262
escript::ADD
Definition: ES_optype.h:56
escript::GEZ
Definition: ES_optype.h:85
escript::DataLazy::resolveNodeNP1OUT_2P
const DataTypes::RealVectorType * resolveNodeNP1OUT_2P(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1621
escript::DataExpanded
Give a short description of what DataExpanded does.
Definition: DataExpanded.h:56
escript::DataLazy::m_right
DataLazy_ptr m_right
Definition: DataLazy.h:252
escript::DataLazy::resolveNodeBinaryCplx
const DataTypes::CplxVectorType * resolveNodeBinaryCplx(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1997
escript::ES_opgroup
ES_opgroup
Definition: ES_optype.h:101
escript::DataLazy::m_left
DataLazy_ptr m_left
Definition: DataLazy.h:252
escript::TRACE
Definition: ES_optype.h:93
escript::DataLazy::intoString
void intoString(std::ostringstream &oss) const
Definition: DataLazy.cpp:2681
escript::LEZ
Definition: ES_optype.h:86
escript::CONDEVAL
Definition: ES_optype.h:97
escript::groupToString
const std::string & groupToString(ES_opgroup g)
Definition: ES_optype.cpp:104
escript::DIV
Definition: ES_optype.h:59
escript::escriptParams
EscriptParams escriptParams
Definition: EscriptParams.cpp:41
escript::DataLazy::DataLazy
DataLazy(DataAbstract_ptr p)
Create an IDENTITY DataLazy for the given DataAbstract.
Definition: DataLazy.cpp:441
escript::DataLazy::m_samples_c
DataTypes::CplxVectorType m_samples_c
Definition: DataLazy.h:249
escript::DataAbstract::m_iscompl
bool m_iscompl
Definition: DataAbstract.h:576
escript::DataLazy::m_mask
DataLazy_ptr m_mask
Definition: DataLazy.h:252
escript::getOpgroup
ES_opgroup getOpgroup(ES_optype op)
Definition: ES_optype.cpp:98
escript::DataLazy::m_samplesize
size_t m_samplesize
Definition: DataLazy.h:256
escript::swapaxes
void swapaxes(const VEC &in, const DataTypes::ShapeType &inShape, typename VEC::size_type inOffset, VEC &ev, const DataTypes::ShapeType &evShape, typename VEC::size_type evOffset, int axis0, int axis1)
swaps the components axis0 and axis1.
Definition: DataVectorOps.h:487
escript::DataLazy::m_samples_r
DataTypes::RealVectorType m_samples_r
Definition: DataLazy.h:248
escript::RECIP
Definition: ES_optype.h:82
escript::G_NP1OUT
Definition: ES_optype.h:109
escript::EscriptParams::getLazyStrFmt
int getLazyStrFmt() const
Definition: EscriptParams.h:66
escript::ES_optype
ES_optype
Definition: ES_optype.h:39
escript::Data::transpose
Data transpose(int axis_offset) const
Transpose each data point of this Data object around the given axis.
Definition: Data.cpp:2907
escript::DataTypes::RealVectorType
escript::DataTypes::DataVectorAlt< real_t > RealVectorType
Vector to store underlying data.
Definition: DataVector.h:43
escript::Data::hermitian
Data hermitian() const
Return the hermitian part of a matrix which is half the matrix plus its adjoint.
Definition: Data.cpp:2785
escript::DataLazy::deepCopy
DataAbstract * deepCopy() const
Return a deep copy of the current object.
Definition: DataLazy.cpp:2879
escript::DataAbstract::transpose
virtual void transpose(DataAbstract *ev, int axis_offset)
Transpose each data point of this Data object around the given axis.
Definition: DataAbstract.cpp:245
escript::DataLazy::actsExpanded
bool actsExpanded() const
if resolve() was called would it produce expanded data.
Definition: DataLazy.cpp:3001
escript::Data::whereNegative
Data whereNegative() const
Return a Data with a 1 for -ive values and a 0 for +ive or 0 values.
Definition: Data.cpp:1268
escript::Data::minval
Data minval() const
Return the minimum value of each data point of this Data object.
Definition: Data.cpp:2660
escript::Data::log
Data log() const
Return the natural log of each data point of this Data object.
Definition: Data.cpp:2154
escript::DataLazy::resolveToIdentity
void resolveToIdentity()
resolve the expression can store it in the current node The current node will be converted to an iden...
Definition: DataLazy.cpp:2418
escript::const_DataLazy_ptr
boost::shared_ptr< const DataLazy > const_DataLazy_ptr
Definition: DataLazy.h:58
escript::Data::borrowReadyPtr
DataReady_ptr borrowReadyPtr(void) const
Definition: Data.cpp:4639
escript::DataLazy::m_children
size_t m_children
Definition: DataLazy.h:267
escript
Definition: AbstractContinuousDomain.cpp:23
DataVector.h
escript::Data::wherePositive
Data wherePositive() const
Return a Data with a 1 for +ive values and a 0 for 0 or -ive values.
Definition: Data.cpp:1257
escript::DataLazy::m_axis_offset
int m_axis_offset
Definition: DataLazy.h:260
escript::PROD
Definition: ES_optype.h:91
escript::DataTypes::pointToString
std::string pointToString(const RealVectorType &data, const ShapeType &shape, int offset, const std::string &prefix)
Display a single value (with the specified shape) from the data.
escript::LOG10
Definition: ES_optype.h:74
DataTypes.h
escript::DataExpanded::getVectorRW
DataTypes::RealVectorType & getVectorRW()
Return a a reference to the underlying DataVector.
Definition: DataExpanded.cpp:1503
escript::DataLazy::collapse
void collapse() const
Converts the DataLazy into an IDENTITY storing the value of the expression. This method uses the orig...
Definition: DataLazy.cpp:1100
escript::DataLazy::intoTreeString
void intoTreeString(std::ostringstream &oss, std::string indent) const
Definition: DataLazy.cpp:2789
escript::Data::antisymmetric
Data antisymmetric() const
Return the antisymmetric part of a matrix which is half the matrix minus its transpose.
Definition: Data.cpp:2749
escript::DataAbstract
Definition: DataAbstract.h:74
escript::SYM
Definition: ES_optype.h:89
DataVectorOps.h
Describes binary operations performed on DataVector.
escript::Data::asinh
Data asinh() const
Return the asinh of each data point of this Data object.
Definition: Data.cpp:2126
escript::DataLazy::m_transpose
int m_transpose
Definition: DataLazy.h:261
escript::SIN
Definition: ES_optype.h:61
escript::EZ
Definition: ES_optype.h:88
escript::Data::whereNonZero
Data whereNonZero(DataTypes::real_t tol=0.0) const
Return a Data with a 0 for 0 values and a 1 for +ive or -ive values.
Definition: Data.cpp:1308
escript::DataLazy::resolveNodeReduction
const DataTypes::RealVectorType * resolveNodeReduction(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1320
ES_optype.h
escript::DataLazy::makeIdentity
void makeIdentity(const DataReady_ptr &p)
helper method for resolveToIdentity and the identity constructor
Definition: DataLazy.cpp:2434
escript::DataAbstract::isComplex
bool isComplex() const
true if the components of datapoints are complex
Definition: DataAbstract.cpp:69
escript::Data::log10
Data log10() const
Return the log to base 10 of each data point of this Data object.
Definition: Data.cpp:2147
escript::DataAbstract::getNoValues
unsigned int getNoValues() const
Return the number of values in the shape for this object.
Definition: DataAbstract.h:676
escript::reductionOpVector
DataTypes::real_t reductionOpVector(const DataTypes::RealVectorType &left, const DataTypes::ShapeType &leftShape, DataTypes::RealVectorType::size_type offset, BinaryFunction operation, DataTypes::real_t initial_value)
Perform the given data point reduction operation on the data point specified by the given offset into...
Definition: DataVectorOps.h:1396
Data.h
escript::Data::copy
void copy(const Data &other)
Make this object a deep copy of "other".
Definition: Data.cpp:781
escript::antisymmetric
void antisymmetric(const VEC &in, const DataTypes::ShapeType &inShape, typename VEC::size_type inOffset, VEC &ev, const DataTypes::ShapeType &evShape, typename VEC::size_type evOffset)
computes a antisymmetric matrix from your square matrix A: (A - transpose(A)) / 2
Definition: DataVectorOps.h:151
escript::POW
Definition: ES_optype.h:60
escript::DataLazy::resolveTypedSample
const DataTypes::CplxVectorType * resolveTypedSample(int sampleNo, size_t &roffset, DataTypes::cplx_t dummy) const
Definition: DataLazy.cpp:2389
escript::Data::neg
Data neg() const
Return the negation of each data point of this Data object.
Definition: Data.cpp:2176
escript::DataAbstract::getFunctionSpace
const FunctionSpace & getFunctionSpace() const
Return the function space associated with this Data object.
Definition: DataAbstract.h:647
escript::DataLazy::resolveNodeUnary
const DataTypes::RealVectorType * resolveNodeUnary(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1225
escript::TAN
Definition: ES_optype.h:63
escript::DataLazy::m_SM
int m_SM
Definition: DataLazy.h:262
escript::DataTypes::cplx_t
std::complex< real_t > cplx_t
complex data type
Definition: DataTypes.h:79
escript::Data::acos
Data acos() const
Return the acos of each data point of this Data object.
Definition: Data.cpp:2078
escript::G_TENSORPROD
Definition: ES_optype.h:111
escript::DataReady_ptr
boost::shared_ptr< DataReady > DataReady_ptr
Definition: DataAbstract.h:69
escript::DataLazy::resolve
DataReady_ptr resolve()
Evaluate the lazy expression.
Definition: DataLazy.cpp:2455
escript::DataLazy::resolveNodeCondEval
const DataTypes::RealVectorType * resolveNodeCondEval(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1694
escript::DataExpanded::getVectorRWC
DataTypes::CplxVectorType & getVectorRWC()
Definition: DataExpanded.cpp:1514
escript::DataLazy_ptr
boost::shared_ptr< DataLazy > DataLazy_ptr
Definition: DataLazy.h:55
escript::tensor_unary_array_operation
void tensor_unary_array_operation(const size_t size, const IN *arg1, OUT *argRes, escript::ES_optype operation, DataTypes::real_t tol=0)
Definition: ArrayOps.h:761
escript::DataLazy::toString
std::string toString() const
Write the data as a string.
Definition: DataLazy.cpp:2660
escript::Data::asin
Data asin() const
Return the asin of each data point of this Data object.
Definition: Data.cpp:2071
escript::ASIN
Definition: ES_optype.h:64
escript::Data::sqrt
Data sqrt() const
Return the square root of each data point of this Data object.
Definition: Data.cpp:2202
escript::trace
void trace(const VEC &in, const DataTypes::ShapeType &inShape, typename VEC::size_type inOffset, VEC &ev, const DataTypes::ShapeType &evShape, typename VEC::size_type evOffset, int axis_offset)
computes the trace of a matrix
Definition: DataVectorOps.h:241
escript::DataLazy::resolveNodeSample
const DataTypes::RealVectorType * resolveNodeSample(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1119
escript::G_UNARY_PR
Definition: ES_optype.h:116
escript::COS
Definition: ES_optype.h:62
escript::ASINH
Definition: ES_optype.h:71
escript::tensor_unary_promote
void tensor_unary_promote(const size_t size, const DataTypes::real_t *arg1, DataTypes::cplx_t *argRes)
Definition: ArrayOps.h:747
escript::DataTypes::CplxVectorType
escript::DataTypes::DataVectorAlt< cplx_t > CplxVectorType
Definition: DataVector.h:44
escript::ATAN
Definition: ES_optype.h:66
escript::MAXVAL
Definition: ES_optype.h:96
escript::DataTypes::scalarShape
static const ShapeType scalarShape
Use this instead of creating empty shape objects for scalars.
Definition: DataTypes.h:72
escript::DataAbstract::m_rank
unsigned int m_rank
Definition: DataAbstract.h:594
escript::DataLazy::zeroedCopy
DataAbstract * zeroedCopy() const
Return an object with the same type, domain (and tags if appropriate) as this, but all values are zer...
Definition: DataLazy.cpp:2903
escript::NEZ
Definition: ES_optype.h:87
FunctionSpace.h
escript::HER
Definition: ES_optype.h:98
LAZYDEBUG
#define LAZYDEBUG(X)
Definition: DataLazy.cpp:33
escript::DataLazy
Wraps an expression tree of other DataObjects. The data will be evaluated when required.
Definition: DataLazy.h:60