VAPOR3 3.9.4
|
This class implements a 2D or 3D regular grid. More...
#include <RegularGrid.h>
Classes | |
class | ConstCoordItrRG |
Public Member Functions | |
RegularGrid (const DimsType &dims, const DimsType &bs, const std::vector< float * > &blks, const CoordType &minu, const CoordType &maxu) | |
RegularGrid (const std::vector< size_t > &dims, const std::vector< size_t > &bs, const std::vector< float * > &blks, const std::vector< double > &minu, const std::vector< double > &maxu) | |
RegularGrid ()=default | |
virtual | ~RegularGrid ()=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) const override |
virtual bool | InsideGrid (const CoordType &coords) const override |
virtual ConstCoordItr | ConstCoordBegin () const override |
Return constant grid coordinate iterator. | |
virtual ConstCoordItr | ConstCoordEnd () const override |
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 |
![]() | |
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 DimsType & | GetNodeDimensions () const override |
const size_t | GetNumNodeDimensions () const override |
const DimsType & | GetCellDimensions () 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 |
![]() | |
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 DimsType & | GetDimensions () 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 DimsType & | GetNodeDimensions () const =0 |
virtual const size_t | GetNumNodeDimensions () const =0 |
virtual const DimsType & | GetCellDimensions () 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 std::string | GetClassType () |
![]() | |
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 |
virtual void | GetUserExtentsHelper (CoordType &minu, CoordType &maxu) const override |
![]() | |
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 RegularGrid &rg) |
Additional Inherited Members | |
![]() | |
typedef const CoordType | ConstCoordType |
typedef Grid::PolyIterator< ConstCoordType > | ConstCoordItr |
typedef Grid::AbstractIterator< ConstCoordType > | ConstCoordItrAbstract |
typedef const DimsType | ConstIndexType |
typedef Grid::PolyIterator< ConstIndexType > | ConstNodeIterator |
typedef Grid::AbstractIterator< ConstIndexType > | ConstNodeIteratorAbstract |
typedef Grid::PolyIterator< ConstIndexType > | ConstCellIterator |
Cell index iterator. Iterates over grid cell indices. | |
typedef Grid::AbstractIterator< ConstIndexType > | ConstCellIteratorAbstract |
typedef Grid::ForwardIterator< Grid > | Iterator |
typedef Grid::ForwardIterator< Grid const > | ConstIterator |
This class implements a 2D or 3D regular grid.
This class implements a 2D or 3D regular grid: a tessellation of Euculidean space by rectangles (2D) or parallelpipeds (3D). Each grid point can be addressed by an index(i,j,k), where i, a
and k range from 0 to dim - 1, where dim is the dimension of the I, J, or K axis, respectively. Moreover, each grid point has a coordinate in a user-defined coordinate system given by (i * dx, j * dy, k * dz) for some real numbers dx, dy, and dz representing the grid spacing.
Definition at line 25 of file RegularGrid.h.
VAPoR::RegularGrid::RegularGrid | ( | const DimsType & | dims, |
const DimsType & | bs, | ||
const std::vector< float * > & | blks, | ||
const CoordType & | minu, | ||
const CoordType & | maxu | ||
) |
Construct a regular grid sampling a 3D or 2D scalar function.
Adds new parameters:
[in] | minu | A vector provding the user coordinates of the first point in the grid. |
[in] | maxu | A vector provding the user coordinates of the last point in the grid. All elements of maxu must be greater than or equal to corresponding elements in minu . |
VAPoR::RegularGrid::RegularGrid | ( | const std::vector< size_t > & | dims, |
const std::vector< size_t > & | bs, | ||
const std::vector< float * > & | blks, | ||
const std::vector< double > & | minu, | ||
const std::vector< double > & | maxu | ||
) |
|
default |
|
virtualdefault |
|
inlineoverridevirtual |
Return constant grid coordinate iterator.
Implements VAPoR::Grid.
Definition at line 107 of file RegularGrid.h.
|
inlineoverridevirtual |
Implements VAPoR::Grid.
Definition at line 108 of file RegularGrid.h.
|
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
.
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()
[in] | min | An array containing the minimum grid indices (offsets). |
[in] | max | An array containing the maximum grid indices (offsets). |
[out] | minu | A two-to-three element array containing the minimum user coordinates. |
[out] | maxu | A two-to-three element array containing the maximum user coordinates. |
Implements VAPoR::Grid.
|
inlinestatic |
Definition at line 53 of file RegularGrid.h.
|
overridevirtual |
Return the dimensions of the specified coordinate variable
[in] | dim | An 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.
|
inlineoverridevirtual |
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.
Implements VAPoR::Grid.
Definition at line 49 of file RegularGrid.h.
|
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.
status | true on success, false if the point is not contained by any cell. |
Implements VAPoR::Grid.
|
inlineoverridevirtual |
Implements VAPoR::Grid.
Definition at line 54 of file RegularGrid.h.
|
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.
[in] | index | Logical 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] | coord | User coordinates of grid point with indices given by indices . coord must have space for the number of elements returned by GetGeometryDim(). |
Implements VAPoR::Grid.
Reimplemented in VAPoR::ArbitrarilyOrientedRegularGrid.
|
virtual |
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.
[in] | index | Logical 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] | coord | User coordinates of grid point with indices given by indices . coord must have space for the number of elements returned by GetGeometryDim(). |
Implements VAPoR::Grid.
|
inlinevirtual |
Reimplemented from VAPoR::Grid.
|
inlinevirtual |
Reimplemented from VAPoR::Grid.
|
virtual |
Reimplemented from VAPoR::Grid.
|
virtual |
Reimplemented from VAPoR::Grid.
|
virtual |
Reimplemented from VAPoR::Grid.
|
overrideprotectedvirtual |
Return the extents of the user coordinate system
This pure virtual method returns min and max extents of the user coordinate system defined on the grid. The extents of the returned box are guaranteed to contain all points in the grid.
[out] | minu | A two or three element array containing the minimum user coordinates. |
[out] | maxu | A two or three element array containing the maximum user coordinates. |
Implements VAPoR::Grid.
|
overrideprotectedvirtual |
Implements VAPoR::Grid.
|
overrideprotectedvirtual |
Implements VAPoR::Grid.
|
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
[in] | coords | User coordinates of point in space |
bool | True if point is inside the grid |
Implements VAPoR::Grid.
|
friend |