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

This class implements a 2D or 3D stretched grid. More...

#include <StretchedGrid.h>

Inheritance diagram for VAPoR::StretchedGrid:
VAPoR::StructuredGrid VAPoR::Grid

Classes

class  ConstCoordItrSG
 

Public Member Functions

 StretchedGrid (const DimsType &dims, const DimsType &bs, const std::vector< float * > &blks, const std::vector< double > &xcoords, const std::vector< double > &ycoords, const std::vector< double > &zcoords)
 
 StretchedGrid (const std::vector< size_t > &dims, const std::vector< size_t > &bs, const std::vector< float * > &blks, const std::vector< double > &xcoords, const std::vector< double > &ycoords, const std::vector< double > &zcoords)
 
 StretchedGrid ()=default
 
virtual ~StretchedGrid ()=default
 
virtual size_t GetGeometryDim () const override
 
virtual DimsType GetCoordDimensions (size_t dim) const override
 
std::string GetType () const override
 
virtual void GetBoundingBox (const DimsType &min, const DimsType &max, CoordType &minu, CoordType &maxu) const override
 
virtual void GetUserCoordinates (const DimsType &indices, CoordType &coords) const override
 
virtual bool GetIndicesCell (const CoordType &coords, DimsType &indices, double wgts[3]) const
 
virtual bool GetIndicesCell (const CoordType &coords, DimsType &indices) const override
 
virtual bool InsideGrid (const CoordType &coords) const override
 
const std::vector< double > & GetXCoords () const
 
const std::vector< double > & GetYCoords () const
 
const std::vector< double > & GetZCoords () const
 
virtual ConstCoordItr ConstCoordBegin () const override
 Return constant grid coordinate iterator.
 
virtual ConstCoordItr ConstCoordEnd () const override
 
- Public Member Functions inherited from VAPoR::StructuredGrid
 StructuredGrid (const std::vector< size_t > &dims, const std::vector< size_t > &bs, const std::vector< float * > &blks)
 
 StructuredGrid (const DimsType &dims, const DimsType &bs, const std::vector< float * > &blks)
 
 StructuredGrid ()=default
 
virtual ~StructuredGrid ()=default
 
std::string GetType () const override
 
const DimsTypeGetNodeDimensions () const override
 
const size_t GetNumNodeDimensions () const override
 
const DimsTypeGetCellDimensions () const override
 
const size_t GetNumCellDimensions () const override
 
virtual 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 &cindices, std::vector< DimsType > &cells) const override
 
virtual bool GetEnclosingRegion (const CoordType &minu, const CoordType &maxu, DimsType &min, DimsType &max) const override
 
size_t GetMaxVertexPerFace () const override
 
size_t GetMaxVertexPerCell () const override
 
virtual void ClampCoord (const CoordType &coords, CoordType &cCoords) const override
 
virtual void ClampCoord (const double coords[3], double cCoords[3]) const override
 
virtual bool HasInvertedCoordinateSystemHandiness () const override
 
virtual bool GetCellNodes (const DimsType &cindices, std::vector< DimsType > &nodes) const=0
 
virtual bool GetCellNodes (const size_t cindices[], std::vector< DimsType > &nodes) const
 
- 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::StructuredGrid
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 float GetValueNearestNeighbor (const CoordType &coords) const override
 
virtual float GetValueLinear (const CoordType &coords) const override
 
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
 

Additional Inherited Members

- 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
 

Detailed Description

This class implements a 2D or 3D stretched grid.

This class implements a 2D or 3D stretched grid: a specialization of StructuredGrid class where cells are quadrilaterals (2D), or cuboids (3D). Hence, stretched grids are topologically, but the location of each grid point is expressed by functions:

x = X(i)
y = Y(j)
z = Z(k)

Definition at line 26 of file StretchedGrid.h.

Constructor & Destructor Documentation

◆ StretchedGrid() [1/3]

VAPoR::StretchedGrid::StretchedGrid ( const DimsType dims,
const DimsType bs,
const std::vector< float * > &  blks,
const std::vector< double > &  xcoords,
const std::vector< double > &  ycoords,
const std::vector< double > &  zcoords 
)

Construct a regular grid sampling a 3D or 2D scalar function.

This constructor instantiates a stretched grid where the x,y,z user coordinates are expressed as follows:

x = X(i)
y = Y(j)
z = Z(k)

The X, Y, and Z user coordinates are specified with xcoords, xcoords, and zcoords (if 3D), respectively.

Adds new parameters:

Parameters
[in]xcoordsA 1D vector whose size matches that of the I dimension of this class, and whose values specify the X user coordinates.
[in]ycoordsA 1D vector whose size matches that of the J dimension of this class, and whose values specify the Y user coordinates.
[in]zcoordsA 1D vector whose size matches that of the K dimension of this class, and whose values specify the Z user coordinates.
See also
RegularGrid()

◆ StretchedGrid() [2/3]

VAPoR::StretchedGrid::StretchedGrid ( const std::vector< size_t > &  dims,
const std::vector< size_t > &  bs,
const std::vector< float * > &  blks,
const std::vector< double > &  xcoords,
const std::vector< double > &  ycoords,
const std::vector< double > &  zcoords 
)

◆ StretchedGrid() [3/3]

VAPoR::StretchedGrid::StretchedGrid ( )
default

◆ ~StretchedGrid()

virtual VAPoR::StretchedGrid::~StretchedGrid ( )
virtualdefault

Member Function Documentation

◆ ConstCoordBegin()

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

Return constant grid coordinate iterator.

Implements VAPoR::Grid.

Definition at line 145 of file StretchedGrid.h.

◆ ConstCoordEnd()

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

Implements VAPoR::Grid.

Definition at line 146 of file StretchedGrid.h.

◆ GetBoundingBox()

virtual void VAPoR::StretchedGrid::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::StretchedGrid::GetClassType ( )
inlinestatic

Definition at line 67 of file StretchedGrid.h.

◆ GetCoordDimensions()

virtual DimsType VAPoR::StretchedGrid::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.

◆ GetGeometryDim()

virtual size_t VAPoR::StretchedGrid::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() [1/2]

virtual bool VAPoR::StretchedGrid::GetIndicesCell ( const CoordType coords,
DimsType indices 
) const
inlineoverridevirtual

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.

Definition at line 86 of file StretchedGrid.h.

◆ GetIndicesCell() [2/2]

virtual bool VAPoR::StretchedGrid::GetIndicesCell ( const CoordType coords,
DimsType indices,
double  wgts[3] 
) const
virtual

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.

Returns resampling weights if point is found

◆ GetType()

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

Implements VAPoR::Grid.

Definition at line 68 of file StretchedGrid.h.

◆ GetUserCoordinates()

virtual void VAPoR::StretchedGrid::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()

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

Implements VAPoR::Grid.

◆ GetValueLinear()

virtual float VAPoR::StretchedGrid::GetValueLinear ( const CoordType coords) const
overrideprotectedvirtual

Implements VAPoR::Grid.

◆ GetValueNearestNeighbor()

virtual float VAPoR::StretchedGrid::GetValueNearestNeighbor ( const CoordType coords) const
overrideprotectedvirtual

Implements VAPoR::Grid.

◆ GetXCoords()

const std::vector< double > & VAPoR::StretchedGrid::GetXCoords ( ) const
inline

Returns reference to vector containing X user coordinates

Returns reference to vector passed to constructor containing X user coordinates

Definition at line 101 of file StretchedGrid.h.

◆ GetYCoords()

const std::vector< double > & VAPoR::StretchedGrid::GetYCoords ( ) const
inline

Returns reference to vector containing Y user coordinates

Returns reference to vector passed to constructor containing Y user coordinates

Definition at line 108 of file StretchedGrid.h.

◆ GetZCoords()

const std::vector< double > & VAPoR::StretchedGrid::GetZCoords ( ) const
inline

Returns reference to vector containing Z user coordinates

Returns reference to vector passed to constructor containing Z user coordinates

Definition at line 115 of file StretchedGrid.h.

◆ InsideGrid()

virtual bool VAPoR::StretchedGrid::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.


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