VAPOR3 3.9.4
Classes | Public Member Functions | Static Public Member Functions | Protected Member Functions | Friends | List of all members
VAPoR::UnstructuredGrid3D Class Reference

class for a Layered unstructured grid. More...

#include <UnstructuredGrid3D.h>

Inheritance diagram for VAPoR::UnstructuredGrid3D:
VAPoR::UnstructuredGrid VAPoR::Grid

Classes

class  ConstCoordItrU3D
 

Public Member Functions

 UnstructuredGrid3D (const DimsType &vertexDims, const DimsType &faceDims, const DimsType &edgeDims, const DimsType &bs, const std::vector< float * > &blks, const int *vertexOnFace, const int *faceOnVertex, const int *faceOnFace, Location location, size_t maxVertexPerFace, size_t maxFacePerVertex, long nodeOffset, long cellOffset, const UnstructuredGridCoordless &xug, const UnstructuredGridCoordless &yug, const UnstructuredGridCoordless &zug)
 
 UnstructuredGrid3D (const std::vector< size_t > &vertexDims, const std::vector< size_t > &faceDims, const std::vector< size_t > &edgeDims, const std::vector< size_t > &bs, const std::vector< float * > &blks, const int *vertexOnFace, const int *faceOnVertex, const int *faceOnFace, Location location, size_t maxVertexPerFace, size_t maxFacePerVertex, long nodeOffset, long cellOffset, const UnstructuredGridCoordless &xug, const UnstructuredGridCoordless &yug, const UnstructuredGridCoordless &zug)
 
 UnstructuredGrid3D ()=default
 
virtual ~UnstructuredGrid3D ()=default
 
virtual DimsType GetCoordDimensions (size_t dim) const override
 
virtual size_t GetGeometryDim () const override
 
std::string GetType () const override
 
virtual void GetBoundingBox (const DimsType &min, const DimsType &max, CoordType &minu, CoordType &maxu) const override
 
bool GetEnclosingRegion (const CoordType &minu, const CoordType &maxu, DimsType &min, DimsType &max) const override
 
virtual void GetUserCoordinates (const DimsType &indices, CoordType &coords) const override
 
bool GetIndicesCell (const CoordType &coords, DimsType &indices) const override
 
bool InsideGrid (const CoordType &coords) const override
 
float GetValueNearestNeighbor (const CoordType &coords) const override
 
float GetValueLinear (const CoordType &coords) const override
 
virtual ConstCoordItr ConstCoordBegin () const override
 Return constant grid coordinate iterator.
 
virtual ConstCoordItr ConstCoordEnd () const override
 
- Public Member Functions inherited from VAPoR::UnstructuredGrid
 UnstructuredGrid (const DimsType &vertexDims, const DimsType &faceDims, const DimsType &edgeDims, const DimsType &bs, const std::vector< float * > &blks, size_t topology_dimension, const int *vertexOnFace, const int *faceOnVertex, const int *faceOnFace, Location location, size_t maxVertexPerFace, size_t maxFacePerVertex, long nodeOffset, long cellOffset)
 
 UnstructuredGrid (const std::vector< size_t > &vertexDims, const std::vector< size_t > &faceDims, const std::vector< size_t > &edgeDims, const std::vector< size_t > &bs, const std::vector< float * > &blks, size_t topology_dimension, const int *vertexOnFace, const int *faceOnVertex, const int *faceOnFace, Location location, size_t maxVertexPerFace, size_t maxFacePerVertex, long nodeOffset, long cellOffset)
 
 UnstructuredGrid ()=default
 
virtual ~UnstructuredGrid ()=default
 
std::string GetType () const override
 
bool GetCellNodes (const DimsType &cindices, std::vector< DimsType > &nodes) const override
 
virtual bool GetCellNeighbors (const DimsType &cindices, std::vector< DimsType > &cells) const override
 
virtual bool GetNodeCells (const DimsType &indices, std::vector< DimsType > &cells) const override
 
size_t GetMaxVertexPerFace () const override
 
size_t GetMaxVertexPerCell () const override
 
const VAPoR::DimsTypeGetNodeDimensions () const override
 
const size_t GetNumNodeDimensions () const override
 
const DimsTypeGetCellDimensions () const override
 
virtual const size_t GetNumCellDimensions () const override
 
const DimsTypeGetEdgeDimensions () const
 
size_t GetMissingID () const
 
void SetMissingID (size_t v)
 
size_t GetBoundaryID () const
 
void SetBoundaryID (size_t v)
 
virtual void ClampCoord (const CoordType &coords, CoordType &cCoords) const override
 
virtual void ClampCoord (const double coords[3], double cCoords[3]) const override
 
virtual void SetNodeOffset (long offset) override
 
virtual void SetCellOffset (long offset) override
 
- Public Member Functions inherited from VAPoR::Grid
 Grid (const std::vector< size_t > &dims, const std::vector< size_t > &bs, const std::vector< float * > &blks, size_t topology_dimension)
 
 Grid (const DimsType &dims, const DimsType &bs, const std::vector< float * > &blks, size_t topology_dimension)
 
 Grid ()
 
virtual ~Grid ()=default
 
const DimsTypeGetDimensions () const
 
size_t GetNumDimensions () const
 
virtual DimsType GetCoordDimensions (size_t dim) const =0
 
virtual std::string GetType () const =0
 
virtual size_t GetGeometryDim () const =0
 
virtual const DimsTypeGetNodeDimensions () const =0
 
virtual const size_t GetNumNodeDimensions () const =0
 
virtual const DimsTypeGetCellDimensions () const =0
 
virtual const size_t GetNumCellDimensions () const =0
 
const std::vector< size_t > GetDimensionInBlks () const
 
const std::vector< size_t > & GetBlockSize () const
 
const std::vector< float * > & GetBlks () const
 
virtual float GetValueAtIndex (const DimsType &indices) const
 
virtual float GetValueAtIndex (const std::vector< size_t > &indices) const
 
virtual void SetValue (const DimsType &indices, float value)
 
virtual void SetValue (const size_t indices[3], float value)
 
virtual float AccessIJK (size_t i, size_t j=0, size_t k=0) const
 
void SetValueIJK (size_t i, size_t j, size_t k, float v)
 
void SetValueIJK (size_t i, size_t j, float v)
 
void SetValueIJK (size_t i, float v)
 
virtual float GetValue (const CoordType &coords) const
 
virtual float GetValue (const std::vector< double > &coords) const
 
virtual float GetValue (const double coords[]) const
 
virtual float GetValue (double x, double y) const
 
virtual float GetValue (double x, double y, double z) const
 
virtual void GetUserExtents (CoordType &minu, CoordType &maxu) const
 
virtual void GetUserExtents (double minu[3], double maxu[3]) const
 
virtual void GetUserExtents (std::vector< double > &minu, std::vector< double > &maxu) const
 
virtual void GetBoundingBox (const DimsType &min, const DimsType &max, CoordType &minu, CoordType &maxu) const =0
 
virtual void GetBoundingBox (const std::vector< size_t > &min, const std::vector< size_t > &max, std::vector< double > &minu, std::vector< double > &maxu) const
 
virtual bool GetEnclosingRegion (const CoordType &minu, const CoordType &maxu, DimsType &min, DimsType &max) const =0
 
virtual float GetMissingValue () const
 
void SetMissingValue (float missing_value)
 
void SetHasMissingValues (bool flag)
 
bool HasMissingData () const
 
virtual bool HasInvertedCoordinateSystemHandiness () const
 
virtual int GetInterpolationOrder () const
 
virtual void SetInterpolationOrder (int order)
 
virtual void GetUserCoordinates (const DimsType &indices, CoordType &coords) const =0
 
virtual void GetUserCoordinates (const size_t indices[], double coords[]) const
 
virtual void GetUserCoordinates (const std::vector< size_t > &indices, std::vector< double > &coords) const
 
virtual void GetUserCoordinates (size_t i, double &x, double &y, double &z) const
 
virtual void GetUserCoordinates (size_t i, size_t j, double &x, double &y, double &z) const
 
virtual void GetUserCoordinates (size_t i, size_t j, size_t k, double &x, double &y, double &z) const
 
virtual bool GetIndicesCell (const CoordType &coords, DimsType &indices) const =0
 
virtual bool GetIndicesCell (const double coords[3], size_t indices[3]) const
 
virtual bool GetIndicesCell (const std::vector< double > &coords, std::vector< size_t > &indices) const
 
virtual void GetRange (float range[2]) const
 
virtual void GetRange (const DimsType &min, const DimsType &max, float range[2]) const
 
virtual void GetRange (std::vector< size_t > min, std::vector< size_t > max, float range[2]) const
 
virtual bool InsideGrid (const CoordType &coords) const =0
 
virtual bool InsideGrid (const double coords[3]) const
 
virtual bool InsideGrid (const std::vector< double > &coords) const
 
virtual bool GetCellNodes (const DimsType &cindices, std::vector< DimsType > &nodes) const =0
 
virtual bool GetCellNodes (const size_t cindices[], std::vector< DimsType > &nodes) const
 
virtual bool GetCellNeighbors (const DimsType &cindices, std::vector< DimsType > &cells) const =0
 
virtual bool GetNodeCells (const DimsType &indices, std::vector< DimsType > &cells) const =0
 
virtual size_t GetMaxVertexPerFace () const =0
 
virtual size_t GetMaxVertexPerCell () const =0
 
virtual void ClampCoord (const CoordType &coords, CoordType &cCoords) const =0
 
virtual void ClampCoord (const double coords[3], double cCoords[3]) const
 
virtual void ClampIndex (const DimsType &indices, DimsType &cIndices) const
 
virtual void ClampCellIndex (const DimsType &indices, DimsType &cIndices) const
 
virtual void SetPeriodic (const std::vector< bool > &periodic)
 
virtual const std::vector< bool > & GetPeriodic () const
 
virtual size_t GetTopologyDim () const
 
virtual long GetNodeOffset () const
 
virtual void SetNodeOffset (long offset)
 
virtual long GetCellOffset () const
 
virtual void SetCellOffset (long offset)
 
virtual DimsType GetMinAbs () const
 
virtual void SetMinAbs (const DimsType &minAbs)
 
virtual ConstCoordItr ConstCoordBegin () const =0
 Return constant grid coordinate iterator.
 
virtual ConstCoordItr ConstCoordEnd () const =0
 
virtual ConstNodeIterator ConstNodeBegin () const
 
virtual ConstNodeIterator ConstNodeBegin (const CoordType &minu, const CoordType &maxu) const
 
virtual ConstNodeIterator ConstNodeBegin (const std::vector< double > &minu, const std::vector< double > &maxu) const
 
virtual ConstNodeIterator ConstNodeEnd () const
 
virtual ConstCellIterator ConstCellBegin () const
 
virtual ConstCellIterator ConstCellBegin (const CoordType &minu, const CoordType &maxu) const
 
virtual ConstCellIterator ConstCellBegin (const std::vector< double > &minu, const std::vector< double > &maxu) const
 
virtual ConstCellIterator ConstCellEnd () const
 
Iterator begin (const CoordType &minu, const CoordType &maxu)
 
Iterator begin (const std::vector< double > &minu, const std::vector< double > &maxu)
 
Iterator begin ()
 
Iterator end ()
 
ConstIterator cbegin (const CoordType &minu, const CoordType &maxu) const
 
ConstIterator cbegin (const std::vector< double > &minu, const std::vector< double > &maxu)
 
ConstIterator cbegin () const
 
ConstIterator cend () const
 

Static Public Member Functions

static std::string GetClassType ()
 
- Static Public Member Functions inherited from VAPoR::UnstructuredGrid
static std::string GetClassType ()
 
- Static Public Member Functions inherited from VAPoR::Grid
static size_t GetNumDimensions (DimsType dims)
 
static DimsType Dims (const DimsType &min, const DimsType &max)
 
static bool PointInsideBoundingRectangle (const double pt[], const double verts[], int n)
 
template<typename T >
static void CopyToArr3 (const std::vector< T > &src, std::array< T, 3 > &dst)
 
template<typename T >
static void CopyToArr3 (const T *src, size_t n, std::array< T, 3 > &dst)
 
template<typename T >
static void CopyFromArr3 (const std::array< T, 3 > &src, std::vector< T > &dst)
 
template<typename T >
static void CopyFromArr3 (const std::array< T, 3 > &src, T *dst)
 

Protected Member Functions

virtual void GetUserExtentsHelper (CoordType &minu, CoordType &maxu) const override
 
- Protected Member Functions inherited from VAPoR::Grid
virtual float GetValueNearestNeighbor (const CoordType &coords) const =0
 
virtual float GetValueLinear (const CoordType &coords) const =0
 
virtual void GetUserExtentsHelper (CoordType &minu, CoordType &maxu) const =0
 
virtual float * GetValuePtrAtIndex (const std::vector< float * > &blks, const DimsType &indices) const
 
virtual void ClampIndex (const std::vector< size_t > &dims, const DimsType indices, DimsType &cIndices) const
 
virtual void ClampIndex (const DimsType &dims, const DimsType indices, DimsType &cIndices) const
 
float BilinearInterpolate (size_t i, size_t j, size_t k, const double xwgt, const double ywgt) const
 
float TrilinearInterpolate (size_t i, size_t j, size_t k, const double xwgt, const double ywgt, const double zwgt) const
 

Friends

VDF_API friend std::ostream & operator<< (std::ostream &o, const UnstructuredGrid3D &sg)
 

Additional Inherited Members

- Public Types inherited from VAPoR::UnstructuredGrid
enum  Location { NODE , CELL , EDGE }
 
- Public Types inherited from VAPoR::Grid
typedef const CoordType ConstCoordType
 
typedef Grid::PolyIterator< ConstCoordTypeConstCoordItr
 
typedef Grid::AbstractIterator< ConstCoordTypeConstCoordItrAbstract
 
typedef const DimsType ConstIndexType
 
typedef Grid::PolyIterator< ConstIndexTypeConstNodeIterator
 
typedef Grid::AbstractIterator< ConstIndexTypeConstNodeIteratorAbstract
 
typedef Grid::PolyIterator< ConstIndexTypeConstCellIterator
 Cell index iterator. Iterates over grid cell indices.
 
typedef Grid::AbstractIterator< ConstIndexTypeConstCellIteratorAbstract
 
typedef Grid::ForwardIterator< GridIterator
 
typedef Grid::ForwardIterator< Grid const > ConstIterator
 
- Protected Attributes inherited from VAPoR::UnstructuredGrid
const int * _vertexOnFace
 
const int * _faceOnVertex
 
const int * _faceOnFace
 
size_t _maxVertexPerFace
 
size_t _maxFacePerVertex
 
Location _location
 

Detailed Description

class for a Layered unstructured grid.

Definition at line 21 of file UnstructuredGrid3D.h.

Constructor & Destructor Documentation

◆ UnstructuredGrid3D() [1/3]

VAPoR::UnstructuredGrid3D::UnstructuredGrid3D ( const DimsType vertexDims,
const DimsType faceDims,
const DimsType edgeDims,
const DimsType bs,
const std::vector< float * > &  blks,
const int *  vertexOnFace,
const int *  faceOnVertex,
const int *  faceOnFace,
Location  location,
size_t  maxVertexPerFace,
size_t  maxFacePerVertex,
long  nodeOffset,
long  cellOffset,
const UnstructuredGridCoordless xug,
const UnstructuredGridCoordless yug,
const UnstructuredGridCoordless zug 
)

Construct a unstructured grid sampling Layered scalar function

◆ UnstructuredGrid3D() [2/3]

VAPoR::UnstructuredGrid3D::UnstructuredGrid3D ( const std::vector< size_t > &  vertexDims,
const std::vector< size_t > &  faceDims,
const std::vector< size_t > &  edgeDims,
const std::vector< size_t > &  bs,
const std::vector< float * > &  blks,
const int *  vertexOnFace,
const int *  faceOnVertex,
const int *  faceOnFace,
Location  location,
size_t  maxVertexPerFace,
size_t  maxFacePerVertex,
long  nodeOffset,
long  cellOffset,
const UnstructuredGridCoordless xug,
const UnstructuredGridCoordless yug,
const UnstructuredGridCoordless zug 
)

◆ UnstructuredGrid3D() [3/3]

VAPoR::UnstructuredGrid3D::UnstructuredGrid3D ( )
default

◆ ~UnstructuredGrid3D()

virtual VAPoR::UnstructuredGrid3D::~UnstructuredGrid3D ( )
virtualdefault

Member Function Documentation

◆ ConstCoordBegin()

virtual ConstCoordItr VAPoR::UnstructuredGrid3D::ConstCoordBegin ( ) const
inlineoverridevirtual

Return constant grid coordinate iterator.

Implements VAPoR::Grid.

Definition at line 95 of file UnstructuredGrid3D.h.

◆ ConstCoordEnd()

virtual ConstCoordItr VAPoR::UnstructuredGrid3D::ConstCoordEnd ( ) const
inlineoverridevirtual

Implements VAPoR::Grid.

Definition at line 96 of file UnstructuredGrid3D.h.

◆ GetBoundingBox()

virtual void VAPoR::UnstructuredGrid3D::GetBoundingBox ( const DimsType min,
const DimsType max,
CoordType minu,
CoordType maxu 
) const
overridevirtual

Return the extents of the axis-aligned bounding box enclosign a region

This pure virtual method returns min and max extents, in user coordinates, of the smallest axis-aligned box enclosing the region defined by the grid indices, min and max. Every grid point in the range min to max will be contained in, or reside on, the box (rectangle) whose extents are given by minu and maxu.

Note
The results are undefined if any index of min is greater than the coresponding coordinate of max, or if max is outside of the valid dimension range (See GetDimension()).

The size of min and max must match the grid's dimension as returned by GetDimension()

Parameters
[in]minAn array containing the minimum grid indices (offsets).
[in]maxAn array containing the maximum grid indices (offsets).
[out]minuA two-to-three element array containing the minimum user coordinates.
[out]maxuA two-to-three element array containing the maximum user coordinates.
See also
GetDimensions(), Grid()

Implements VAPoR::Grid.

◆ GetClassType()

static std::string VAPoR::UnstructuredGrid3D::GetClassType ( )
inlinestatic

Definition at line 45 of file UnstructuredGrid3D.h.

◆ GetCoordDimensions()

virtual DimsType VAPoR::UnstructuredGrid3D::GetCoordDimensions ( size_t  dim) const
overridevirtual

Return the dimensions of the specified coordinate variable

Parameters
[in]dimAn integer between 0 and the return value of GetGeometryDim() - 1, indicating which coordinate dimensions are to be returned.

if dim is greater than or equal to GetGeometryDim() - 1 a vector of length one with its single component equal to one is returned.

Implements VAPoR::Grid.

◆ GetEnclosingRegion()

bool VAPoR::UnstructuredGrid3D::GetEnclosingRegion ( const CoordType minu,
const CoordType maxu,
DimsType min,
DimsType max 
) const
overridevirtual

Get bounding indices of grid containing a region

Calculates the starting and ending grid indices of the smallest grid completely containing the rectangular region defined by the user coordinates minu and maxu If rectangluar region defined by minu and maxu can not be contained the minimum and maximum indices are returned in min and max, respectively

Parameters
[in]minuUser coordinates of minimum coorner
[in]maxuUser coordinates of maximum coorner
[out]minInteger coordinates of minimum coorner
[out]maxInteger coordinates of maximum coorner

Implements VAPoR::Grid.

◆ GetGeometryDim()

virtual size_t VAPoR::UnstructuredGrid3D::GetGeometryDim ( ) const
overridevirtual

Get geometric dimension of cells

Returns the geometric dimension of the cells in the mesh. I.e. the number of spatial coordinates for each grid point. Valid values are 0..3. The geometric dimension must be equal to or greater than the topology dimension.

See also
GetTopologyDim()

Implements VAPoR::Grid.

◆ GetIndicesCell()

bool VAPoR::UnstructuredGrid3D::GetIndicesCell ( const CoordType coords,
DimsType indices 
) const
overridevirtual

Return the indices of the cell containing the specified user coordinates

This method returns the cell ID (index) of the cell containing the specified user coordinates. If any of the input coordinates correspond to periodic dimensions the the coordinate(s) are first re-mapped to lie inside the grid extents as returned by GetUserExtents()

If the specified coordinates lie outside of the grid (are not contained by any cell) the method returns false, otherwise true is returned.

Return values
statustrue on success, false if the point is not contained by any cell.

Implements VAPoR::Grid.

◆ GetType()

std::string VAPoR::UnstructuredGrid3D::GetType ( ) const
inlineoverridevirtual

Reimplemented from VAPoR::UnstructuredGrid.

Definition at line 46 of file UnstructuredGrid3D.h.

◆ GetUserCoordinates()

virtual void VAPoR::UnstructuredGrid3D::GetUserCoordinates ( const DimsType indices,
CoordType coords 
) const
overridevirtual

Return the user coordinates of a grid point

This method returns the user coordinates of the grid point specified by indices

Results are undefined if indices is out of range.

Parameters
[in]indexLogical index into coordinate array. The dimensionality and range of component values are given by GetNodeDimensions(). The starting value for each component of index is zero. index must contain GetNodeDimensions().size() elements.
[out]coordUser coordinates of grid point with indices given by indices. coord must have space for the number of elements returned by GetGeometryDim().

Implements VAPoR::Grid.

◆ GetUserExtentsHelper()

virtual void VAPoR::UnstructuredGrid3D::GetUserExtentsHelper ( CoordType minu,
CoordType maxu 
) const
overrideprotectedvirtual

Implements VAPoR::Grid.

◆ GetValueLinear()

float VAPoR::UnstructuredGrid3D::GetValueLinear ( const CoordType coords) const
overridevirtual

Implements VAPoR::Grid.

◆ GetValueNearestNeighbor()

float VAPoR::UnstructuredGrid3D::GetValueNearestNeighbor ( const CoordType coords) const
overridevirtual

Implements VAPoR::Grid.

◆ InsideGrid()

bool VAPoR::UnstructuredGrid3D::InsideGrid ( const CoordType coords) const
overridevirtual

Return true if the specified point lies inside the grid

This method can be used to determine if a point expressed in user coordinates reside inside or outside the grid

Parameters
[in]coordsUser coordinates of point in space
Return values
boolTrue if point is inside the grid

Implements VAPoR::Grid.

Friends And Related Function Documentation

◆ operator<<

VDF_API friend std::ostream & operator<< ( std::ostream &  o,
const UnstructuredGrid3D sg 
)
friend

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