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

DataAbstract_ptr getPtr ()
 Return shared pointer managing this object.
const_DataAbstract_ptr getPtr () const
 DataAbstract (const FunctionSpace &what, const ShapeType &shape, bool isDataEmpty=false)
 Constructor for DataAbstract.
virtual ~DataAbstract ()
 Destructor for DataAbstract.
virtual std::string toString () const =0
 Write the data as a string.
virtual DataAbstractdeepCopy ()=0
 Return a deep copy of the current object.
virtual DataReady_ptr resolve ()=0
 Return a data object with all points resolved.
virtual void dump (const std::string fileName) const
 dumps the object into a netCDF file
int getNumDPPSample () const
 Return the number of data points per sample.
int getNumSamples () const
 Return the number of samples.
const DataTypes::ShapeTypegetShape () const
 Return the shape information for the point data.
unsigned int getRank () const
 Return the rank information for the point data.
virtual 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 ValueType::size_type getPointOffset (int sampleNo, int dataPointNo)=0
virtual ValueType::size_type getLength () const =0
 Return the number of doubles stored for this Data object.
virtual 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.
virtual size_t getSampleBufferSize () const =0
void operandCheck (const DataAbstract &right) const
 Check this and the given RHS operands are compatible. Throws an exception if they aren't.
bool validSamplePointNo (int samplePointNo) const
 Return true if a valid sample point number.
bool validSampleNo (int sampleNo) const
 Return true if a valid sample number.
const FunctionSpacegetFunctionSpace () const
 Return the function space associated with this Data object.
virtual DataAbstractgetSlice (const DataTypes::RegionType &region) const =0
 Return the given slice from this object.
virtual void setTaggedValue (int tagKey, const DataTypes::ShapeType &pointshape, const DataTypes::ValueType &value, int dataOffset=0)
 setTaggedValue
virtual 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 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 int getTagNumber (int dpno)
 Return the tag number associated with the given data-point number.
virtual void symmetric (DataAbstract *ev)
 Computes a symmetric matrix (A + AT) / 2.
virtual void nonsymmetric (DataAbstract *ev)
 Computes a nonsymmetric matrix (A - AT) / 2.
virtual void trace (DataAbstract *ev, int axis_offset)
 Computes the trace of a matrix.
virtual void transpose (DataAbstract *ev, int axis_offset)
 Transpose each data point of this Data object around the given axis.
virtual void swapaxes (DataAbstract *ev, int axis0, int axis1)
 swaps components axis0 and axis1
virtual void eigenvalues (DataAbstract *ev)
 solves the eigenvalue problem this*V=ev*V for the eigenvalues ev
virtual void setToZero ()
 sets values to zero
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
virtual void reorderByReferenceIDs (int *reference_ids)
 reorders data sample ordered by reference_ids to the ordering of the functions space
unsigned int getNoValues () const
 Return the number of values in the shape for this object.
bool isLazy () const
virtual bool isConstant () const
virtual bool isExpanded () const
virtual 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 bool isTagged () const
bool isEmpty () const
void addOwner (Data *)
void removeOwner (Data *)
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

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

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

Reimplemented in escript::DataLazy.


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

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::Data::setToZero(), and escript::Data::tag().

const_DataAbstract_ptr escript::DataAbstract::getPtr (  )  const

virtual std::string escript::DataAbstract::toString (  )  const [pure virtual]

virtual 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.

virtual 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::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.

int escript::DataAbstract::getNumDPPSample (  )  const [inline]

int escript::DataAbstract::getNumSamples (  )  const [inline]

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::nonsymmetric(), escript::DataExpanded::nonsymmetric(), escript::DataConstant::nonsymmetric(), operandCheck(), escript::DataLazy::resolveNodeNP1OUT(), escript::DataLazy::resolveNodeNP1OUT_2P(), escript::DataLazy::resolveNodeNP1OUT_P(), escript::DataLazy::resolveNodeTProd(), escript::DataLazy::resolveNodeWorker(), escript::DataLazy::resolveNP1OUT(), escript::DataLazy::resolveNP1OUT_2P(), escript::DataLazy::resolveNP1OUT_P(), escript::DataLazy::resolveTProd(), escript::DataLazy::resolveVectorWorker(), 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().

unsigned int escript::DataAbstract::getRank (  )  const [inline]

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

virtual ValueType::size_type escript::DataAbstract::getPointOffset ( int  sampleNo,
int  dataPointNo 
) [pure virtual]

virtual 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.

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.

virtual size_t escript::DataAbstract::getSampleBufferSize (  )  const [pure virtual]

This method is used primarily for LazyData.

Returns:
the size of the buffer required to evaulate a sample for this object.

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

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().

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

Return true if a valid sample point number.

References m_noDataPointsPerSample.

Referenced by escript::DataConstant::getPointOffset().

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

Return true if a valid sample number.

References m_noSamples.

Referenced by escript::DataConstant::getPointOffset().

const FunctionSpace & escript::DataAbstract::getFunctionSpace (  )  const [inline]

virtual 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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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::setToZero (  )  [virtual]

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.

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.

Referenced by escript::load().

unsigned int escript::DataAbstract::getNoValues (  )  const [inline]

bool escript::DataAbstract::isLazy (  )  const

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

Reimplemented in escript::DataConstant.

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

Reimplemented in escript::DataExpanded.

virtual 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.

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

Reimplemented in escript::DataTagged.

bool escript::DataAbstract::isEmpty (  )  const [inline]

void escript::DataAbstract::addOwner ( Data d  ) 

Warning:
should only be used in single threaded code (or inside a single/critical section)

References m_owners.

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.

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

Is this object owned by more than one Data object.

Referenced by removeOwner().

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::makeLazyShared (  )  [protected]

Marks this DataAbstract shared as LazyData For internal use only.

References m_lazyshared, and m_owners.


Friends And Related Function Documentation

friend class DataLazy [friend]


Member Data Documentation

Referenced by getNumSamples(), and validSampleNo().

Referenced by getFunctionSpace().

Referenced by getShape().

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

Referenced by getNoValues().

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

Referenced by DataAbstract(), and getRank().

Referenced by DataAbstract(), and isEmpty().

Referenced by checkNoSharing(), and makeLazyShared().


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

Generated on Mon Aug 10 10:04:44 2009 for ESYS13 by  doxygen 1.5.6