Public Types | Public Member Functions | Public Attributes | Protected Member Functions | Private Attributes | Friends

escript::DataAbstract Class Reference

#include <DataAbstract.h>

Inheritance diagram for escript::DataAbstract:
escript::DataLazy escript::DataReady escript::DataConstant escript::DataEmpty escript::DataExpanded escript::DataTagged

List of all members.

Public Types

typedef DataTypes::ValueType ValueType
typedef DataTypes::ShapeType ShapeType

Public Member Functions

ESCRIPT_DLL_API DataAbstract_ptr getPtr ()
 Return shared pointer managing this object.
ESCRIPT_DLL_API
const_DataAbstract_ptr 
getPtr () const
ESCRIPT_DLL_API DataAbstract (const FunctionSpace &what, const ShapeType &shape, bool isDataEmpty=false)
 Constructor for DataAbstract.
virtual ESCRIPT_DLL_API ~DataAbstract ()
 Destructor for DataAbstract.
virtual ESCRIPT_DLL_API std::string toString () const =0
 Write the data as a string.
virtual ESCRIPT_DLL_API
DataAbstract
deepCopy ()=0
 Return a deep copy of the current object.
virtual ESCRIPT_DLL_API
DataReady_ptr 
resolve ()=0
 Return a data object with all points resolved.
virtual ESCRIPT_DLL_API void dump (const std::string fileName) const
 dumps the object into a netCDF file
ESCRIPT_DLL_API int getNumDPPSample () const
 Return the number of data points per sample.
ESCRIPT_DLL_API int getNumSamples () const
 Return the number of samples.
ESCRIPT_DLL_API const
DataTypes::ShapeType
getShape () const
 Return the shape information for the point data.
ESCRIPT_DLL_API unsigned int getRank () const
 Return the rank information for the point data.
virtual ESCRIPT_DLL_API
ValueType::size_type 
getPointOffset (int sampleNo, int dataPointNo) const =0
 Return the offset for the given sample. This returns the offset for the given point into the container holding the point data.
virtual ESCRIPT_DLL_API
ValueType::size_type 
getPointOffset (int sampleNo, int dataPointNo)=0
virtual ESCRIPT_DLL_API
ValueType::size_type 
getLength () const =0
 Return the number of doubles stored for this Data object.
virtual ESCRIPT_DLL_API double * getSampleDataByTag (int tag)
 Return the sample data for the given tag key. NB: If the data isn't tagged an exception will be thrown.
ESCRIPT_DLL_API void operandCheck (const DataAbstract &right) const
 Check this and the given RHS operands are compatible. Throws an exception if they aren't.
ESCRIPT_DLL_API bool validSamplePointNo (int samplePointNo) const
 Return true if a valid sample point number.
ESCRIPT_DLL_API bool validSampleNo (int sampleNo) const
 Return true if a valid sample number.
ESCRIPT_DLL_API const
FunctionSpace
getFunctionSpace () const
 Return the function space associated with this Data object.
virtual ESCRIPT_DLL_API
DataAbstract
getSlice (const DataTypes::RegionType &region) const =0
 Return the given slice from this object.
virtual ESCRIPT_DLL_API void setTaggedValue (int tagKey, const DataTypes::ShapeType &pointshape, const DataTypes::ValueType &value, int dataOffset=0)
 setTaggedValue
virtual ESCRIPT_DLL_API void copyToDataPoint (const int sampleNo, const int dataPointNo, const double value)
 Copy a double value to the data point dataPointNo of sample sampleNo in this object.
virtual ESCRIPT_DLL_API void copyToDataPoint (const int sampleNo, const int dataPointNo, const WrappedArray &value)
 Copy the array object to the data point dataPointNo of sample sampleNo in this object.
virtual ESCRIPT_DLL_API int getTagNumber (int dpno)
 Return the tag number associated with the given data-point number.
virtual ESCRIPT_DLL_API void symmetric (DataAbstract *ev)
 Computes a symmetric matrix (A + AT) / 2.
virtual ESCRIPT_DLL_API void nonsymmetric (DataAbstract *ev)
 Computes a nonsymmetric matrix (A - AT) / 2.
virtual ESCRIPT_DLL_API void trace (DataAbstract *ev, int axis_offset)
 Computes the trace of a matrix.
virtual ESCRIPT_DLL_API void transpose (DataAbstract *ev, int axis_offset)
 Transpose each data point of this Data object around the given axis.
virtual ESCRIPT_DLL_API void swapaxes (DataAbstract *ev, int axis0, int axis1)
 swaps components axis0 and axis1
virtual ESCRIPT_DLL_API void eigenvalues (DataAbstract *ev)
 solves the eigenvalue problem this*V=ev*V for the eigenvalues ev
virtual ESCRIPT_DLL_API int matrixInverse (DataAbstract *out) const
 invert square matricies
virtual ESCRIPT_DLL_API void setToZero ()
 sets values to zero
virtual ESCRIPT_DLL_API 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
virtual ESCRIPT_DLL_API void reorderByReferenceIDs (int *reference_ids)
 reorders data sample ordered by reference_ids to the ordering of the functions space
ESCRIPT_DLL_API unsigned int getNoValues () const
 Return the number of values in the shape for this object.
ESCRIPT_DLL_API bool isLazy () const
virtual ESCRIPT_DLL_API bool isConstant () const
virtual ESCRIPT_DLL_API bool isExpanded () const
virtual ESCRIPT_DLL_API bool actsExpanded () const
 Return true if this Data is expanded or resolves to expanded. That is, if it has a separate value for each datapoint in the sample.
virtual ESCRIPT_DLL_API bool isTagged () const
ESCRIPT_DLL_API bool isEmpty () const
void addOwner (Data *)
void removeOwner (Data *)
ESCRIPT_DLL_API bool isShared () const
 Is this object owned by more than one Data object.

Public Attributes

std::vector< Data * > m_owners
bool m_lazyshared

Protected Member Functions

ESCRIPT_DLL_API bool checkNoSharing () const
 Returns true if this object is not shared. For internal use only. - It may not be particularly fast.
void makeLazyShared ()
 Marks this DataAbstract shared as LazyData For internal use only.

Private Attributes

int m_noSamples
int m_noDataPointsPerSample
FunctionSpace m_functionSpace
DataTypes::ShapeType m_shape
unsigned int m_novalues
unsigned int m_rank
bool m_isempty

Friends

class DataLazy

Member Typedef Documentation


Constructor & Destructor Documentation

escript::DataAbstract::DataAbstract ( const FunctionSpace what,
const ShapeType shape,
bool  isDataEmpty = false 
)

Constructor for DataAbstract.

Parameters:
what - Input - The functionspace to use.
shape - Input - Shape of each data value.
isDataEmpty - Input - Is this an instance of DataEmpty (for internal use only)

References ESCRIPT_MAX_DATA_RANK, m_isempty, and m_rank.

escript::DataAbstract::~DataAbstract (  )  [virtual]

Destructor for DataAbstract.


Member Function Documentation

virtual ESCRIPT_DLL_API bool escript::DataAbstract::actsExpanded (  )  const [inline, virtual]

Return true if this Data is expanded or resolves to expanded. That is, if it has a separate value for each datapoint in the sample.

Reimplemented in escript::DataExpanded, and escript::DataLazy.

void escript::DataAbstract::addOwner ( Data d  ) 
Warning:
should only be used in single threaded code (or inside a single/critical section)

References m_owners.

bool escript::DataAbstract::checkNoSharing (  )  const [protected]

Returns true if this object is not shared. For internal use only. - It may not be particularly fast.

References m_lazyshared, and m_owners.

void escript::DataAbstract::copyToDataPoint ( const int  sampleNo,
const int  dataPointNo,
const WrappedArray value 
) [virtual]

Copy the array object to the data point dataPointNo of sample sampleNo in this object.

Parameters:
sampleNo Input - sample number
dataPointNo Input - data point of the sample
value Input - new values for the data point

Reimplemented in escript::DataExpanded.

void escript::DataAbstract::copyToDataPoint ( const int  sampleNo,
const int  dataPointNo,
const double  value 
) [virtual]

Copy a double value to the data point dataPointNo of sample sampleNo in this object.

Description: Copy a double value to the data point dataPointNo of sample sampleNo in this object.

Parameters:
sampleNo Input - sample number
dataPointNo Input - data point of the sample
value Input - new values for the data point

Reimplemented in escript::DataExpanded.

virtual ESCRIPT_DLL_API DataAbstract* escript::DataAbstract::deepCopy (  )  [pure virtual]

Return a deep copy of the current object.

Implemented in escript::DataConstant, escript::DataEmpty, escript::DataExpanded, escript::DataLazy, and escript::DataTagged.

void escript::DataAbstract::dump ( const std::string  fileName  )  const [virtual]

dumps the object into a netCDF file

Reimplemented in escript::DataConstant, escript::DataEmpty, escript::DataExpanded, and escript::DataTagged.

void escript::DataAbstract::eigenvalues ( DataAbstract ev  )  [virtual]

solves the eigenvalue problem this*V=ev*V for the eigenvalues ev

Parameters:
ev - Output - eigenvalues in increasing order at each data point

Reimplemented in escript::DataConstant, escript::DataExpanded, and escript::DataTagged.

void escript::DataAbstract::eigenvalues_and_eigenvectors ( DataAbstract ev,
DataAbstract V,
const double  tol = 1.e-13 
) [virtual]

solves the eigenvalue problem this*V=ev*V for the eigenvalues ev and eigenvectors V

Parameters:
ev - Output - eigenvalues in increasing order at each data point
V - Output - corresponding eigenvectors. They are normalized such that their length is one and the first nonzero component is positive.
tol - Input - eigenvalue with relative distance tol are treated as equal.

Reimplemented in escript::DataConstant, escript::DataExpanded, and escript::DataTagged.

virtual ESCRIPT_DLL_API ValueType::size_type escript::DataAbstract::getLength (  )  const [pure virtual]

Return the number of doubles stored for this Data object.

Implemented in escript::DataConstant, escript::DataEmpty, escript::DataExpanded, escript::DataLazy, and escript::DataTagged.

virtual ESCRIPT_DLL_API ValueType::size_type escript::DataAbstract::getPointOffset ( int  sampleNo,
int  dataPointNo 
) const [pure virtual]
virtual ESCRIPT_DLL_API ValueType::size_type escript::DataAbstract::getPointOffset ( int  sampleNo,
int  dataPointNo 
) [pure virtual]
const_DataAbstract_ptr escript::DataAbstract::getPtr (  )  const
DataAbstract_ptr escript::DataAbstract::getPtr (  ) 

Return shared pointer managing this object.

If there is not already a shared pointer managing this object then create one. Once a shared pointer is created for an object, the deallocation of the object must be handled by shared_ptr.

Warning:
So, do not call this on an automatic object. Do not call this in a method where you do not pass the shared_pointer out and you need the object to outlast the method.

Note: This is _not_ equivalent to weak_ptr::lock.

Referenced by escript::Data::copy(), escript::Data::Data(), escript::Data::expand(), escript::Data::initialise(), escript::DataReady::resolve(), escript::DataLazy::resolveGroupWorker(), escript::Data::setToZero(), and escript::Data::tag().

DataAbstract::ValueType::value_type * escript::DataAbstract::getSampleDataByTag ( int  tag  )  [virtual]

Return the sample data for the given tag key. NB: If the data isn't tagged an exception will be thrown.

Reimplemented in escript::DataTagged.

const DataTypes::ShapeType & escript::DataAbstract::getShape (  )  const [inline]

Return the shape information for the point data.

The omission of a non-constant form is deliberate.

References isEmpty(), and m_shape.

Referenced by escript::DataTagged::addTaggedValue(), escript::algorithm(), escript::binaryOp(), escript::DataExpanded::copy(), escript::DataExpanded::copyToDataPoint(), escript::DataConstant::DataConstant(), escript::DataExpanded::DataExpanded(), escript::DataTagged::DataTagged(), escript::dp_algorithm(), escript::DataTagged::dump(), escript::DataExpanded::dump(), escript::DataConstant::dump(), escript::DataTagged::eigenvalues(), escript::DataExpanded::eigenvalues(), escript::DataConstant::eigenvalues(), escript::DataTagged::eigenvalues_and_eigenvectors(), escript::DataExpanded::eigenvalues_and_eigenvectors(), escript::DataConstant::eigenvalues_and_eigenvectors(), escript::DataTagged::matrixInverse(), escript::DataExpanded::matrixInverse(), escript::DataConstant::matrixInverse(), escript::DataTagged::nonsymmetric(), escript::DataExpanded::nonsymmetric(), escript::DataConstant::nonsymmetric(), operandCheck(), escript::DataLazy::resolveGroupWorker(), escript::DataLazy::resolveNodeNP1OUT(), escript::DataLazy::resolveNodeNP1OUT_2P(), escript::DataLazy::resolveNodeNP1OUT_P(), escript::DataLazy::resolveNodeReduction(), escript::DataLazy::resolveNodeTProd(), escript::DataLazy::resolveNodeWorker(), escript::DataTagged::setSlice(), escript::DataExpanded::setSlice(), escript::DataConstant::setSlice(), escript::DataTagged::setTaggedValue(), escript::DataTagged::swapaxes(), escript::DataExpanded::swapaxes(), escript::DataConstant::swapaxes(), escript::DataTagged::symmetric(), escript::DataExpanded::symmetric(), escript::DataConstant::symmetric(), escript::DataTagged::toString(), escript::DataExpanded::toString(), escript::DataConstant::toString(), escript::DataTagged::trace(), escript::DataExpanded::trace(), escript::DataConstant::trace(), escript::DataTagged::transpose(), escript::DataExpanded::transpose(), escript::DataConstant::transpose(), and escript::unaryOp().

virtual ESCRIPT_DLL_API DataAbstract* escript::DataAbstract::getSlice ( const DataTypes::RegionType region  )  const [pure virtual]

Return the given slice from this object.

NB: The caller is responsible for managing the object created.

Implemented in escript::DataConstant, escript::DataEmpty, escript::DataExpanded, escript::DataLazy, and escript::DataTagged.

int escript::DataAbstract::getTagNumber ( int  dpno  )  [virtual]

Return the tag number associated with the given data-point number.

If the object cannot be referenced by tag numbers, an exception will be thrown.

Reimplemented in escript::DataTagged.

virtual ESCRIPT_DLL_API bool escript::DataAbstract::isConstant (  )  const [inline, virtual]

Reimplemented in escript::DataConstant.

bool escript::DataAbstract::isEmpty (  )  const [inline]
virtual ESCRIPT_DLL_API bool escript::DataAbstract::isExpanded (  )  const [inline, virtual]

Reimplemented in escript::DataExpanded.

bool escript::DataAbstract::isLazy (  )  const
ESCRIPT_DLL_API bool escript::DataAbstract::isShared (  )  const [inline]

Is this object owned by more than one Data object.

Referenced by removeOwner().

virtual ESCRIPT_DLL_API bool escript::DataAbstract::isTagged (  )  const [inline, virtual]

Reimplemented in escript::DataTagged.

void escript::DataAbstract::makeLazyShared (  )  [protected]

Marks this DataAbstract shared as LazyData For internal use only.

References m_lazyshared, and m_owners.

int escript::DataAbstract::matrixInverse ( DataAbstract out  )  const [virtual]

invert square matricies

Parameters:
out - Where to store the results
Returns:
errorcode (0 indicates success)

Reimplemented in escript::DataConstant, escript::DataEmpty, escript::DataExpanded, and escript::DataTagged.

void escript::DataAbstract::nonsymmetric ( DataAbstract ev  )  [virtual]

Computes a nonsymmetric matrix (A - AT) / 2.

Parameters:
ev - Output - a nonsymmetric matrix

Reimplemented in escript::DataConstant, escript::DataExpanded, and escript::DataTagged.

Referenced by escript::DataLazy::resolveNodeNP1OUT().

void escript::DataAbstract::operandCheck ( const DataAbstract right  )  const

Check this and the given RHS operands are compatible. Throws an exception if they aren't.

Parameters:
right - Input - The right hand side.

References getFunctionSpace(), getNumDPPSample(), getNumSamples(), getRank(), getShape(), escript::DataTypes::shapeToString(), and escript::FunctionSpace::toString().

void escript::DataAbstract::removeOwner ( Data d  ) 
Warning:
should only be used in single threaded code (or inside a single/critical section)

References isShared(), and m_owners.

void escript::DataAbstract::reorderByReferenceIDs ( int *  reference_ids  )  [virtual]

reorders data sample ordered by reference_ids to the ordering of the functions space

Parameters:
reference_ids - Input - reference_ids used for current ordering

Reimplemented in escript::DataExpanded.

virtual ESCRIPT_DLL_API DataReady_ptr escript::DataAbstract::resolve (  )  [pure virtual]

Return a data object with all points resolved.

Implemented in escript::DataLazy, and escript::DataReady.

void escript::DataAbstract::setTaggedValue ( int  tagKey,
const DataTypes::ShapeType pointshape,
const DataTypes::ValueType value,
int  dataOffset = 0 
) [virtual]

setTaggedValue

Description: Assign the given value to the given tag.

NB: If the data isn't tagged an exception will be thrown.

Parameters:
tagKey - Input - Integer key.
pointshape - Input - the shape of the value parameter.
value - Input - vector to copy data value from
dataOffset - Input - Offset within value to begin copying from

The final parameter is to allow for the case whete the vector contains multiple data values.

Reimplemented in escript::DataExpanded, and escript::DataTagged.

void escript::DataAbstract::setToZero (  )  [virtual]
void escript::DataAbstract::swapaxes ( DataAbstract ev,
int  axis0,
int  axis1 
) [virtual]

swaps components axis0 and axis1

Parameters:
ev - Output - swapped components
axis0 
axis1 

Reimplemented in escript::DataConstant, escript::DataExpanded, and escript::DataTagged.

Referenced by escript::DataLazy::resolveNodeNP1OUT_2P().

void escript::DataAbstract::symmetric ( DataAbstract ev  )  [virtual]

Computes a symmetric matrix (A + AT) / 2.

Parameters:
ev - Output - a symmetric matrix

Reimplemented in escript::DataConstant, escript::DataExpanded, and escript::DataTagged.

Referenced by escript::DataLazy::resolveNodeNP1OUT().

virtual ESCRIPT_DLL_API std::string escript::DataAbstract::toString (  )  const [pure virtual]
void escript::DataAbstract::trace ( DataAbstract ev,
int  axis_offset 
) [virtual]

Computes the trace of a matrix.

Parameters:
ev - Output - the trace of a matrix
axis_offset 

Reimplemented in escript::DataConstant, escript::DataExpanded, and escript::DataTagged.

Referenced by escript::DataLazy::resolveNodeNP1OUT_P().

void escript::DataAbstract::transpose ( DataAbstract ev,
int  axis_offset 
) [virtual]

Transpose each data point of this Data object around the given axis.

Parameters:
ev - Output - the transpose of a matrix
axis_offset 

Reimplemented in escript::DataConstant, escript::DataExpanded, and escript::DataTagged.

Referenced by escript::DataLazy::resolveNodeNP1OUT_P().

bool escript::DataAbstract::validSampleNo ( int  sampleNo  )  const [inline]

Return true if a valid sample number.

References m_noSamples.

bool escript::DataAbstract::validSamplePointNo ( int  samplePointNo  )  const [inline]

Return true if a valid sample point number.

References m_noDataPointsPerSample.


Friends And Related Function Documentation

friend class DataLazy [friend]

Member Data Documentation

Referenced by DataAbstract(), and isEmpty().

unsigned int escript::DataAbstract::m_novalues [private]

Referenced by getNoValues().


The documentation for this class was generated from the following files: