escript  Revision_
DataLazy.h
Go to the documentation of this file.
1 
2 /*****************************************************************************
3 *
4 * Copyright (c) 2003-2018 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 #ifndef __ESCRIPT_DATALAZY_H__
18 #define __ESCRIPT_DATALAZY_H__
19 
20 #include "system_dep.h"
21 #include "DataAbstract.h"
22 #include "ArrayOps.h" // for tensor_binary_op
23 #include "DataVector.h" // for ElementType
24 #include "ES_optype.h"
25 
26 #include <string>
27 
28 //#define LAZY_NODE_STORAGE
29 
30 namespace escript {
31 
32 
42 class DataLazy;
43 
44 typedef POINTER_WRAPPER_CLASS(DataLazy) DataLazy_ptr;
45 typedef POINTER_WRAPPER_CLASS(const DataLazy) const_DataLazy_ptr;
46 
47 class DataLazy : public DataAbstract
48 {
49 
50 typedef DataAbstract parent;
52 
53 public:
61 
62 
72 
82  DataLazy(DataAbstract_ptr left, ES_optype op, double tol);
83 
93  DataLazy(DataAbstract_ptr left, ES_optype op, int axis_offset);
94 
95 
105 
116  DataLazy(DataAbstract_ptr left, DataAbstract_ptr right, ES_optype op, int axis_offset, int transpose);
117 
128  DataLazy(DataAbstract_ptr left, ES_optype op, const int axis0, const int axis1);
129 
137  DataLazy(DataAbstract_ptr mask, DataAbstract_ptr left, DataAbstract_ptr right/*, double tol*/);
138 
140  ~DataLazy();
141 
148  resolve();
149 
151  std::string
152  toString() const;
153 
155  DataAbstract*
156  deepCopy() const;
157 
159  DataAbstract*
160  zeroedCopy() const;
161 
168  getLength() const;
169 
170 
172  DataAbstract*
173  getSlice(const DataTypes::RegionType& region) const;
174 
175 
177  getPointOffset(int sampleNo,
178  int dataPointNo) const;
179 
181  getPointOffset(int sampleNo,
182  int dataPointNo);
183 
188  size_t
189  getMaxSampleSize() const;
190 
201  resolveSample(int sampleNo, size_t& roffset) const;
202 
205  resolveTypedSample(int sampleNo, size_t& roffset, DataTypes::cplx_t dummy) const;
206 
209  resolveTypedSample(int sampleNo, size_t& roffset, DataTypes::real_t dummy) const;
210 
211 
216  bool
217  actsExpanded() const;
218 
224  virtual void
225  setToZero();
226 
227 
229  void
230  resolveGroupWorker(std::vector<DataLazy*>& dats);
231 
232 
233 private:
234  int* m_sampleids; // may be NULL
237 
238  mutable DataReady_ptr m_id; // For IDENTITY nodes, stores a wrapped value.
239  mutable DataLazy_ptr m_left, m_right, m_mask; // operands for operation.
240  mutable ES_optype m_op; // operation to perform.
241  mutable ES_opgroup m_opgroup; // type of operation to perform
242 
243  size_t m_samplesize; // number of values required to store a sample
244 
245  char m_readytype; // E for expanded, T for tagged, C for constant
246 
247  int m_axis_offset; // required extra info for general tensor product
248  int m_transpose; // offset and transpose are used for swapaxes as well
249  int m_SL, m_SM, m_SR; // computed properties used in general tensor product
250 
251 
252  double m_tol; // required extra info for <>0 and ==0
253 
254  mutable size_t m_children;
255  mutable size_t m_height;
256 
257 
258 
262  void LazyNodeSetup();
263 
264 
266  resolveNodeUnary(int tid, int sampleNo, size_t& roffset) const;
267 
269  resolveNodeUnaryCplx(int tid, int sampleNo, size_t& roffset) const;
270 
271 
273  resolveNodeReduction(int tid, int sampleNo, size_t& roffset) const;
274 
276  resolveNodeReductionCplx(int tid, int sampleNo, size_t& roffset) const;
277 
279  resolveNodeSample(int tid, int sampleNo, size_t& roffset) const;
280 
282  resolveNodeSampleCplx(int tid, int sampleNo, size_t& roffset) const;
283 
285  resolveNodeBinary(int tid, int sampleNo, size_t& roffset) const;
286 
288  resolveNodeBinaryCplx(int tid, int sampleNo, size_t& roffset) const;
289 
290 
292  resolveNodeNP1OUT(int tid, int sampleNo, size_t& roffset) const;
293 
295  resolveNodeNP1OUTCplx(int tid, int sampleNo, size_t& roffset) const;
296 
298  resolveNodeNP1OUT_P(int tid, int sampleNo, size_t& roffset) const;
299 
301  resolveNodeNP1OUT_PCplx(int tid, int sampleNo, size_t& roffset) const;
302 
303 
305  resolveNodeTProd(int tid, int sampleNo, size_t& roffset) const;
306 
308  resolveNodeTProdCplx(int tid, int sampleNo, size_t& roffset) const;
309 
310 
312  resolveNodeNP1OUT_2P(int tid, int sampleNo, size_t& roffset) const;
313 
315  resolveNodeNP1OUT_2PCplx(int tid, int sampleNo, size_t& roffset) const;
316 
318  resolveNodeCondEval(int tid, int sampleNo, size_t& roffset) const;
319 
321  resolveNodeCondEvalCplx(int tid, int sampleNo, size_t& roffset) const;
322 
323 
325  resolveNodeUnary_C(int tid, int sampleNo, size_t& roffset) const;
326 
330  void
331  intoString(std::ostringstream& oss) const;
332 
336  void
337  intoTreeString(std::ostringstream& oss,std::string indent) const;
338 
345  void
346  collapse() const; // converts the node into an IDENTITY node
347 
348 
355  collapseToReady() const;
356 
361  void
363 
367  void
368  makeIdentity(const DataReady_ptr& p);
369 
370 
376 
379 
380 };
381 
382 // If an expression is already complex, return the same expression.
383 // Otherwise, return the old expression with a promote operation
384 // above it
386 
387 }
388 
389 #endif // __ESCRIPT_DATALAZY_H__
390 
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:682
escript::DataLazy::resolveNodeNP1OUT
const DataTypes::RealVectorType * resolveNodeNP1OUT(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1390
escript::IDENTITY
Definition: ES_optype.h:52
ESCRIPT_DLL_API
#define ESCRIPT_DLL_API
Definition: escriptcore/src/system_dep.h:28
escript::MINVAL
Definition: ES_optype.h:92
escript::FMin
Return the minimum value of the two given values.
Definition: ArrayOps.h:71
escript::SIGN
Definition: ES_optype.h:73
escript::Data::erf
Data erf() const
Return the error function erf of each data point of this Data object.
Definition: Data.cpp:2114
escript::DataLazy::m_op
ES_optype m_op
Definition: DataLazy.h:251
escript::DataLazy::resolveNodeSampleCplx
const DataTypes::CplxVectorType * resolveNodeSampleCplx(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1174
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:2160
escript::DataTypes::shapeToString
std::string shapeToString(const DataTypes::ShapeType &shape)
Return the given shape as a string.
Definition: DataTypes.cpp:115
escript::Data::oneOver
Data oneOver() const
Returns 1./ Data object.
Definition: Data.cpp:1249
escript::DataLazy::resolveNodeUnaryCplx
const DataTypes::CplxVectorType * resolveNodeUnaryCplx(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1273
escript::DataTypes::real_t
double real_t
type of all real-valued scalars in escript
Definition: DataTypes.h:73
escript::Data::atanh
Data atanh() const
Return the atanh of each data point of this Data object.
Definition: Data.cpp:2139
escript::Data::atan
Data atan() const
Return the atan of each data point of this Data object.
Definition: Data.cpp:2085
escript::LZ
Definition: ES_optype.h:81
escript::DataLazy::resolveNodeBinary
const DataTypes::RealVectorType * resolveNodeBinary(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1773
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:2811
POINTER_WRAPPER_CLASS
#define POINTER_WRAPPER_CLASS(x)
Definition: Pointers.h:31
escript::Data::cos
Data cos() const
Return the cos of each data point of this Data object.
Definition: Data.cpp:2056
escript::DataTypes::DataVectorAlt< real_t >::ElementType
real_t ElementType
Definition: DataVectorAlt.h:77
escript::DataLazy::m_height
size_t m_height
Definition: DataLazy.h:266
escript::COSH
Definition: ES_optype.h:65
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:2335
escript::DataLazy::resolveNodeNP1OUTCplx
const DataTypes::CplxVectorType * resolveNodeNP1OUTCplx(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1465
escript::FMax
Return the maximum value of the two given values.
Definition: ArrayOps.h:56
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:1278
escript::Data::tan
Data tan() const
Return the tan of each data point of this Data object.
Definition: Data.cpp:2063
escript::DataLazy::m_readytype
char m_readytype
Definition: DataLazy.h:256
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:961
escript::POS
Definition: ES_optype.h:76
escript::DataLazy::getMaxSampleSize
size_t getMaxSampleSize() const
escript::DataLazy::m_tol
double m_tol
Definition: DataLazy.h:263
escript::DataLazy::resolveNodeNP1OUT_2PCplx
const DataTypes::CplxVectorType * resolveNodeNP1OUT_2PCplx(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1657
escript::DataLazy::resolveNodeTProd
const DataTypes::RealVectorType * resolveNodeTProd(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:2223
escript::Data::borrowDataPtr
DataAbstract_ptr borrowDataPtr(void) const
Definition: Data.cpp:4631
escript::DataLazy::m_SL
int m_SL
Definition: DataLazy.h:260
escript::DataAbstract::getPtr
DataAbstract_ptr getPtr()
Return shared pointer managing this object.
Definition: DataAbstract.cpp:37
escript::DataLazy::setToZero
virtual void setToZero()
Produces an IDENTITY DataLazy containing zero. The result will have the same shape and functionspace ...
Definition: DataLazy.cpp:2985
escript::Data::sinh
Data sinh() const
Return the sinh of each data point of this Data object.
Definition: Data.cpp:2092
escript::Data::abs
Data abs() const
Return the absolute value of each data point of this Data object.
Definition: Data.cpp:2168
escript::PROM
Definition: ES_optype.h:105
escript::SQRT
Definition: ES_optype.h:78
escript::G_UNARY_R
Definition: ES_optype.h:106
escript::DataLazy::m_sampleids
int * m_sampleids
Definition: DataLazy.h:245
escript::DataAbstract_ptr
boost::shared_ptr< DataAbstract > DataAbstract_ptr
Definition: DataAbstract.h:62
escript::SWAP
Definition: ES_optype.h:91
escript::EXP
Definition: ES_optype.h:77
escript::NSYM
Definition: ES_optype.h:87
escript::Data::swapaxes
Data swapaxes(const int axis0, const int axis1) const
swaps the components axis0 and axis1
Definition: Data.cpp:2668
escript::DataLazy::resolveNodeNP1OUT_PCplx
const DataTypes::CplxVectorType * resolveNodeNP1OUT_PCplx(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1573
escript::DataLazy::resolveNodeReductionCplx
const DataTypes::CplxVectorType * resolveNodeReductionCplx(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1371
escript::DataLazy::m_id
DataReady_ptr m_id
Definition: DataLazy.h:249
escript::Data::exp
Data exp() const
Return the exponential function of each data point of this Data object.
Definition: Data.cpp:2194
escript::DataTypes::DataVectorAlt< real_t >::size_type
DataTypes::vec_size_type size_type
Definition: DataVectorAlt.h:84
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:101
escript::DataTypes::DataVectorAlt< real_t >
escript::NHER
Definition: ES_optype.h:96
escript::G_UNARY_C
Definition: ES_optype.h:113
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:2914
escript::SINH
Definition: ES_optype.h:64
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:341
escript::opToString
const std::string & opToString(ES_optype op)
Definition: ES_optype.cpp:87
escript::DataLazy::resolveNodeWorker
DataReady_ptr resolveNodeWorker()
resolve to a ReadyData object using storage at nodes
Definition: DataLazy.cpp:2543
escript::G_NP1OUT_P
Definition: ES_optype.h:108
escript::TRANS
Definition: ES_optype.h:89
escript::DataLazy::m_opgroup
ES_opgroup m_opgroup
Definition: DataLazy.h:252
escript::G_BINARY
Definition: ES_optype.h:103
escript::ATANH
Definition: ES_optype.h:70
ESCRIPT_MAX_DATA_RANK
#define ESCRIPT_MAX_DATA_RANK
Definition: Data.h:37
escript::LOG
Definition: ES_optype.h:72
DataLazy.h
escript::G_UNARY_P
Definition: ES_optype.h:105
escript::DataLazy::resolveNodeNP1OUT_P
const DataTypes::RealVectorType * resolveNodeNP1OUT_P(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1526
escript::DataLazy::resolveNodeUnary_C
const DataTypes::CplxVectorType * resolveNodeUnary_C(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1436
escript::SUB
Definition: ES_optype.h:54
escript::FunctionSpace
Definition: FunctionSpace.h:45
escript::Data::tanh
Data tanh() const
Return the tanh of each data point of this Data object.
Definition: Data.cpp:2106
escript::ACOS
Definition: ES_optype.h:62
escript::DataLazy::resolveNodeCondEvalCplx
const DataTypes::CplxVectorType * resolveNodeCondEvalCplx(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1728
escript::makePromote
DataLazy_ptr makePromote(DataLazy_ptr p)
Definition: DataLazy.cpp:114
escript::Data::complicate
void complicate()
Definition: Data.cpp:6060
escript::G_CONDEVAL
Definition: ES_optype.h:112
escript::G_NP1OUT_2P
Definition: ES_optype.h:110
escript::TANH
Definition: ES_optype.h:66
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:1300
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:3693
escript::DataLazy::~DataLazy
~DataLazy()
Definition: DataLazy.cpp:918
system_dep.h
escript::ERF
Definition: ES_optype.h:67
escript::getNumberOfThreads
int getNumberOfThreads()
returns the number of threads
Definition: Utils.cpp:84
escript::DataLazy::resolveNodeTProdCplx
const DataTypes::CplxVectorType * resolveNodeTProdCplx(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:2277
escript::NEG
Definition: ES_optype.h:75
escript::G_IDENTITY
Definition: ES_optype.h:102
escript::Data::powD
Data powD(const Data &right) const
Return the given power of each data point of this Data object.
Definition: Data.cpp:3340
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:930
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:2955
escript::GZ
Definition: ES_optype.h:80
ArrayOps.h
escript::DataAbstract::getNumDPPSample
int getNumDPPSample() const
Return the number of data points per sample.
Definition: DataAbstract.h:622
escript::DataLazy::resolveGroupWorker
void resolveGroupWorker(std::vector< DataLazy * > &dats)
Definition: DataLazy.cpp:2463
Utils.h
escript::Data
Data represents a collection of datapoints.
Definition: Data.h:62
escript::DataException
Definition: DataException.h:37
escript::DataAbstract::DataAbstract
DataAbstract(const FunctionSpace &what, const ShapeType &shape, bool isDataEmpty=false, bool isCplx=false)
Constructor for DataAbstract.
Definition: DataAbstract.cpp:74
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:1289
escript::DataLazy::resolveNodeWorkerCplx
DataReady_ptr resolveNodeWorkerCplx()
Definition: DataLazy.cpp:2601
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:914
escript::DataTypes::ShapeType
std::vector< int > ShapeType
The shape of a single datapoint.
Definition: DataTypes.h:65
escript::DataTypes
Contains the types to represent Shapes, Regions, RegionLoop ranges and vectors of data as well as the...
Definition: DataTypes.cpp:85
escript::ABS
Definition: ES_optype.h:74
escript::Data::symmetric
Data symmetric() const
Return the symmetric part of a matrix which is half the matrix plus its transpose.
Definition: Data.cpp:2725
EscriptParams.h
escript::DataLazy::getSlice
DataAbstract * getSlice(const DataTypes::RegionType &region) const
Return the given slice from this object.
Definition: DataLazy.cpp:2921
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:620
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:562
escript::DataTypes::RegionType
std::vector< std::pair< int, int > > RegionType
Definition: DataTypes.h:66
DataAbstract.h
escript::Data::sin
Data sin() const
Return the sin of each data point of this Data object.
Definition: Data.cpp:2049
SIZELIMIT
#define SIZELIMIT
Definition: DataLazy.cpp:46
escript::DataTypes::noValues
int noValues(const ShapeType &shape)
Calculate the number of values in a datapoint with the given shape.
Definition: DataTypes.cpp:89
escript::DataAbstract::getShape
const DataTypes::ShapeType & getShape() const
Return the shape information for the point data.
Definition: DataAbstract.h:652
escript::G_UNARY
Definition: ES_optype.h:104
escript::DataLazy::ShapeType
DataTypes::ShapeType ShapeType
Definition: DataLazy.h:62
escript::G_REDUCTION
Definition: ES_optype.h:111
escript::Data::acosh
Data acosh() const
Return the acosh of each data point of this Data object.
Definition: Data.cpp:2132
escript::DataAbstract::getNumSamples
int getNumSamples() const
Return the number of samples.
Definition: DataAbstract.h:633
escript::ACOSH
Definition: ES_optype.h:69
escript::Data::cosh
Data cosh() const
Return the cosh of each data point of this Data object.
Definition: Data.cpp:2099
escript::MUL
Definition: ES_optype.h:55
escript::DataLazy::LazyNodeSetup
void LazyNodeSetup()
Definition: DataLazy.cpp:407
escript::Data::trace
Data trace(int axis_offset) const
Return the trace of a matrix.
Definition: Data.cpp:2851
escript::DataLazy::parent
DataAbstract parent
Definition: DataLazy.h:61
escript::DataLazy::m_SR
int m_SR
Definition: DataLazy.h:260
escript::ADD
Definition: ES_optype.h:53
escript::GEZ
Definition: ES_optype.h:82
escript::DataLazy::resolveNodeNP1OUT_2P
const DataTypes::RealVectorType * resolveNodeNP1OUT_2P(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1620
escript::DataExpanded
Give a short description of what DataExpanded does.
Definition: DataExpanded.h:54
escript::DataLazy::m_right
DataLazy_ptr m_right
Definition: DataLazy.h:250
escript::DataLazy::resolveNodeBinaryCplx
const DataTypes::CplxVectorType * resolveNodeBinaryCplx(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1996
escript::ES_opgroup
ES_opgroup
Definition: ES_optype.h:99
escript::DataLazy::m_left
DataLazy_ptr m_left
Definition: DataLazy.h:250
escript::TRACE
Definition: ES_optype.h:90
escript::DataLazy::intoString
void intoString(std::ostringstream &oss) const
Definition: DataLazy.cpp:2680
escript::LEZ
Definition: ES_optype.h:83
escript::CONDEVAL
Definition: ES_optype.h:94
escript::groupToString
const std::string & groupToString(ES_opgroup g)
Definition: ES_optype.cpp:103
escript::DIV
Definition: ES_optype.h:56
escript::escriptParams
EscriptParams escriptParams
Definition: EscriptParams.cpp:39
escript::DataLazy::DataLazy
DataLazy(DataAbstract_ptr p)
Create an IDENTITY DataLazy for the given DataAbstract.
Definition: DataLazy.cpp:440
escript::DataLazy::m_samples_c
DataTypes::CplxVectorType m_samples_c
Definition: DataLazy.h:247
escript::DataAbstract::m_iscompl
bool m_iscompl
Definition: DataAbstract.h:574
escript::DataLazy::m_mask
DataLazy_ptr m_mask
Definition: DataLazy.h:250
escript::getOpgroup
ES_opgroup getOpgroup(ES_optype op)
Definition: ES_optype.cpp:97
escript::DataLazy::m_samplesize
size_t m_samplesize
Definition: DataLazy.h:254
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:486
escript::DataLazy::m_samples_r
DataTypes::RealVectorType m_samples_r
Definition: DataLazy.h:246
escript::RECIP
Definition: ES_optype.h:79
escript::G_NP1OUT
Definition: ES_optype.h:107
escript::EscriptParams::getLazyStrFmt
int getLazyStrFmt() const
Definition: EscriptParams.h:63
escript::ES_optype
ES_optype
Definition: ES_optype.h:37
escript::Data::transpose
Data transpose(int axis_offset) const
Transpose each data point of this Data object around the given axis.
Definition: Data.cpp:2906
escript::DataTypes::RealVectorType
escript::DataTypes::DataVectorAlt< real_t > RealVectorType
Vector to store underlying data.
Definition: DataVector.h:42
escript::Data::hermitian
Data hermitian() const
Return the hermitian part of a matrix which is half the matrix plus its adjoint.
Definition: Data.cpp:2784
escript::DataLazy::deepCopy
DataAbstract * deepCopy() const
Return a deep copy of the current object.
Definition: DataLazy.cpp:2878
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:244
escript::DataLazy::actsExpanded
bool actsExpanded() const
if resolve() was called would it produce expanded data.
Definition: DataLazy.cpp:3000
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:1267
escript::Data::minval
Data minval() const
Return the minimum value of each data point of this Data object.
Definition: Data.cpp:2659
escript::Data::log
Data log() const
Return the natural log of each data point of this Data object.
Definition: Data.cpp:2153
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:2417
escript::const_DataLazy_ptr
boost::shared_ptr< const DataLazy > const_DataLazy_ptr
Definition: DataLazy.h:56
escript::Data::borrowReadyPtr
DataReady_ptr borrowReadyPtr(void) const
Definition: Data.cpp:4638
escript::DataLazy::m_children
size_t m_children
Definition: DataLazy.h:265
escript
Definition: AbstractContinuousDomain.cpp:22
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:1256
escript::DataLazy::m_axis_offset
int m_axis_offset
Definition: DataLazy.h:258
escript::PROD
Definition: ES_optype.h:88
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:71
DataTypes.h
escript::DataExpanded::getVectorRW
DataTypes::RealVectorType & getVectorRW()
Return a a reference to the underlying DataVector.
Definition: DataExpanded.cpp:1502
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:1099
escript::DataLazy::intoTreeString
void intoTreeString(std::ostringstream &oss, std::string indent) const
Definition: DataLazy.cpp:2788
escript::Data::antisymmetric
Data antisymmetric() const
Return the antisymmetric part of a matrix which is half the matrix minus its transpose.
Definition: Data.cpp:2748
escript::DataAbstract
Definition: DataAbstract.h:72
escript::SYM
Definition: ES_optype.h:86
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:2125
escript::DataLazy::m_transpose
int m_transpose
Definition: DataLazy.h:259
escript::SIN
Definition: ES_optype.h:58
escript::EZ
Definition: ES_optype.h:85
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:1307
escript::DataLazy::resolveNodeReduction
const DataTypes::RealVectorType * resolveNodeReduction(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1319
ES_optype.h
escript::DataLazy::makeIdentity
void makeIdentity(const DataReady_ptr &p)
helper method for resolveToIdentity and the identity constructor
Definition: DataLazy.cpp:2433
escript::DataAbstract::isComplex
bool isComplex() const
true if the components of datapoints are complex
Definition: DataAbstract.cpp:68
escript::Data::log10
Data log10() const
Return the log to base 10 of each data point of this Data object.
Definition: Data.cpp:2146
escript::DataAbstract::getNoValues
unsigned int getNoValues() const
Return the number of values in the shape for this object.
Definition: DataAbstract.h:674
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:1395
Data.h
escript::Data::copy
void copy(const Data &other)
Make this object a deep copy of "other".
Definition: Data.cpp:780
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:150
escript::POW
Definition: ES_optype.h:57
escript::DataLazy::resolveTypedSample
const DataTypes::CplxVectorType * resolveTypedSample(int sampleNo, size_t &roffset, DataTypes::cplx_t dummy) const
Definition: DataLazy.cpp:2388
escript::Data::neg
Data neg() const
Return the negation of each data point of this Data object.
Definition: Data.cpp:2175
escript::DataAbstract::getFunctionSpace
const FunctionSpace & getFunctionSpace() const
Return the function space associated with this Data object.
Definition: DataAbstract.h:645
escript::DataLazy::resolveNodeUnary
const DataTypes::RealVectorType * resolveNodeUnary(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1224
escript::TAN
Definition: ES_optype.h:60
escript::DataLazy::m_SM
int m_SM
Definition: DataLazy.h:260
escript::DataTypes::cplx_t
std::complex< real_t > cplx_t
complex data type
Definition: DataTypes.h:76
escript::Data::acos
Data acos() const
Return the acos of each data point of this Data object.
Definition: Data.cpp:2077
escript::G_TENSORPROD
Definition: ES_optype.h:109
escript::DataReady_ptr
boost::shared_ptr< DataReady > DataReady_ptr
Definition: DataAbstract.h:67
escript::DataLazy::resolve
DataReady_ptr resolve()
Evaluate the lazy expression.
Definition: DataLazy.cpp:2454
escript::DataLazy::resolveNodeCondEval
const DataTypes::RealVectorType * resolveNodeCondEval(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1693
escript::DataExpanded::getVectorRWC
DataTypes::CplxVectorType & getVectorRWC()
Definition: DataExpanded.cpp:1513
escript::DataLazy_ptr
boost::shared_ptr< DataLazy > DataLazy_ptr
Definition: DataLazy.h:53
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:760
escript::DataLazy::toString
std::string toString() const
Write the data as a string.
Definition: DataLazy.cpp:2659
escript::Data::asin
Data asin() const
Return the asin of each data point of this Data object.
Definition: Data.cpp:2070
escript::ASIN
Definition: ES_optype.h:61
escript::Data::sqrt
Data sqrt() const
Return the square root of each data point of this Data object.
Definition: Data.cpp:2201
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:240
escript::DataLazy::resolveNodeSample
const DataTypes::RealVectorType * resolveNodeSample(int tid, int sampleNo, size_t &roffset) const
Definition: DataLazy.cpp:1118
escript::G_UNARY_PR
Definition: ES_optype.h:114
escript::COS
Definition: ES_optype.h:59
escript::ASINH
Definition: ES_optype.h:68
escript::tensor_unary_promote
void tensor_unary_promote(const size_t size, const DataTypes::real_t *arg1, DataTypes::cplx_t *argRes)
Definition: ArrayOps.h:746
escript::DataTypes::CplxVectorType
escript::DataTypes::DataVectorAlt< cplx_t > CplxVectorType
Definition: DataVector.h:43
escript::ATAN
Definition: ES_optype.h:63
escript::MAXVAL
Definition: ES_optype.h:93
escript::DataTypes::scalarShape
static const ShapeType scalarShape
Use this instead of creating empty shape objects for scalars.
Definition: DataTypes.h:69
escript::DataAbstract::m_rank
unsigned int m_rank
Definition: DataAbstract.h:592
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:2902
escript::NEZ
Definition: ES_optype.h:84
FunctionSpace.h
escript::HER
Definition: ES_optype.h:95
LAZYDEBUG
#define LAZYDEBUG(X)
Definition: DataLazy.cpp:32
escript::DataLazy
Wraps an expression tree of other DataObjects. The data will be evaluated when required.
Definition: DataLazy.h:58