MDAL
Public Types | Public Member Functions | List of all members
MDAL::XdmfFunctionDataset Class Reference

The XdmfFunctionDataset is a function that references two or three scalar XdmfDatasets to create a vector or scalar dataset based on referenced datasets. More...

#include <mdal_xdmf.hpp>

Inheritance diagram for MDAL::XdmfFunctionDataset:
MDAL::Dataset2D MDAL::Dataset

Public Types

enum  FunctionType { Join = 1 , Subtract , Flow }
 

Public Member Functions

 XdmfFunctionDataset (DatasetGroup *grp, FunctionType type, const RelativeTimestamp &time)
 
void addReferenceDataset (const HyperSlab &slab, const HdfDataset &hdfDataset, const RelativeTimestamp &time)
 Adds reference XMDF dataset.
 
void swap ()
 Swaps first and second reference dataset.
 
size_t scalarData (size_t indexStart, size_t count, double *buffer) override
 For DataOnVertices or DataOnFaces.
 
size_t vectorData (size_t indexStart, size_t count, double *buffer) override
 For DataOnVertices or DataOnFaces.
 
- Public Member Functions inherited from MDAL::Dataset2D
 Dataset2D (DatasetGroup *parent)
 
size_t verticalLevelCountData (size_t indexStart, size_t count, int *buffer) override
 For DataOnVolumes.
 
size_t verticalLevelData (size_t indexStart, size_t count, double *buffer) override
 For DataOnVolumes.
 
size_t faceToVolumeData (size_t indexStart, size_t count, int *buffer) override
 For DataOnVolumes.
 
size_t scalarVolumesData (size_t indexStart, size_t count, double *buffer) override
 For DataOnVolumes.
 
size_t vectorVolumesData (size_t indexStart, size_t count, double *buffer) override
 For DataOnVolumes.
 
size_t volumesCount () const override
 
size_t maximumVerticalLevelsCount () const override
 
- Public Member Functions inherited from MDAL::Dataset
 Dataset (DatasetGroup *parent)
 
size_t valuesCount () const
 
virtual size_t activeData (size_t indexStart, size_t count, int *buffer)
 For drivers that supports it, see supportsActiveFlag()
 
Statistics statistics () const
 
void setStatistics (const Statistics &statistics)
 
bool isValid () const
 
DatasetGroupgroup () const
 
Meshmesh () const
 
double time (RelativeTimestamp::Unit unit) const
 
RelativeTimestamp timestamp () const
 
void setTime (double time, RelativeTimestamp::Unit unit=RelativeTimestamp::hours)
 
void setTime (const RelativeTimestamp &time)
 
bool supportsActiveFlag () const
 
void setSupportsActiveFlag (bool value)
 

Detailed Description

The XdmfFunctionDataset is a function that references two or three scalar XdmfDatasets to create a vector or scalar dataset based on referenced datasets.

Active flag is always ON.

Currently we do not use any fancy bison/flex based expression parsing, just supporting few types of most common function types:

The definition is stored in XML file in format:

<Attribute Name="..." AttributeType="Scalar" Center="Cell"> <DataItem ItemType="Function" Function="$0 - $1" Dimensions="9" > <DataItem ItemType="HyperSlab" Type="HyperSlab">...</DataItem> <DataItem ItemType="HyperSlab" Type="HyperSlab">...</DataItem> </DataItem> </Attribute>

Member Enumeration Documentation

◆ FunctionType

Enumerator
Join 

vector: [$0, $1] from 2 scalars

Subtract 

scalar: $1 - $0, e.g. calculate relative depth

Flow 

scalar: flow velocity (abs) = sqrt($0/($2-$3)*$0/($2-$3) + $1/($2-$3)*$1/($2-$3))


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