VAPOR3 3.9.4
|
This class implements a 2D or 3D layered grid. More...
#include <LayeredGrid.h>
Classes | |
class | ConstCoordItrLayered |
Public Member Functions | |
LayeredGrid (const DimsType &dims, const DimsType &bs, const std::vector< float * > &blks, const std::vector< double > &xcoords, const std::vector< double > &ycoords, const RegularGrid &rg) | |
LayeredGrid (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 RegularGrid &rg) | |
LayeredGrid ()=default | |
virtual | ~LayeredGrid ()=default |
virtual size_t | GetGeometryDim () const override |
virtual DimsType | GetCoordDimensions (size_t dim) const override |
std::string | GetType () const override |
float | GetValue (const CoordType &coords) const override |
virtual int | GetInterpolationOrder () const override |
virtual void | SetInterpolationOrder (int order) 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 |
bool | InsideGrid (const CoordType &coords) const override |
virtual void | SetPeriodic (const std::vector< bool > &periodic) override |
const RegularGrid & | GetZRG () const |
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 |
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 |
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 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 |
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 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 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 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< 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 layered grid.
This class implements a 3D layered grid: a generalization of a stretched grid where the spacing of grid points along the K dimension varies at each grid point. The spacing along the remaining I and J dimensions is invariant between grid points. I.e. z coordinate is given by some function f(i,j,k):
z = f(i,j,k)
where f() is monotonically increasing (or decreasing) with k. The remaining x and y coordinates are givey by (i*dx, j*dy) for some real dx and dy .
Definition at line 27 of file LayeredGrid.h.
VAPoR::LayeredGrid::LayeredGrid | ( | const DimsType & | dims, |
const DimsType & | bs, | ||
const std::vector< float * > & | blks, | ||
const std::vector< double > & | xcoords, | ||
const std::vector< double > & | ycoords, | ||
const RegularGrid & | rg | ||
) |
Construct a layered grid sampling a 3D or 2D scalar function
Adds or changes parameters:
[in] | xcoords | A 1D vector whose size matches that of the I dimension of this class, and whose values specify the X user coordinates. |
[in] | ycoords | A 1D vector whose size matches that of the J of the last grid point. |
[in] | rg | A RegularGrid instance with the same dimensionality and min/max offsets as specified by bs , min , and max . The data values of rg provide the user coordinates for the Z dinmension. |
VAPoR::LayeredGrid::LayeredGrid | ( | 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 RegularGrid & | rg | ||
) |
|
default |
|
virtualdefault |
|
inlineoverridevirtual |
Return constant grid coordinate iterator.
Implements VAPoR::Grid.
Definition at line 157 of file LayeredGrid.h.
|
inlineoverridevirtual |
Implements VAPoR::Grid.
Definition at line 158 of file LayeredGrid.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 57 of file LayeredGrid.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 53 of file LayeredGrid.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.
|
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.
status | true on success, false if the point is not contained by any cell. |
Implements VAPoR::Grid.
|
inlinevirtual |
|
inlinevirtual |
|
inlineoverridevirtual |
Return the interpolation order to be used during function reconstruction
This method returns the order of the interpolation method that will be used when reconstructing the sampled scalar function
Reimplemented from VAPoR::Grid.
Definition at line 66 of file LayeredGrid.h.
|
inlineoverridevirtual |
Implements VAPoR::Grid.
Definition at line 58 of file LayeredGrid.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.
|
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.
|
overridevirtual |
Get the reconstructed value of the sampled scalar function
This method reconstructs the scalar field at an arbitrary point in space. If the point's coordinates are outside of the grid's coordinate extents as returned by GetUserExtents(), and the grid is not periodic along the out-of-bounds axis, the value returned will be the missing_value.
If the value of any of the grid point samples used in the reconstruction is the missing_value then the result returned is the missing_value.
The reconstruction method used is determined by interpolation order returned by GetInterpolationOrder()
[in] | coords | A vector of size matching the topology dimension of the mesh whose contents specify the coordinates of a point in space. |
Reimplemented from VAPoR::Grid.
|
inline |
Return the internal data structure containing a copy of the coordinate blocks passed in by the constructor
Definition at line 124 of file LayeredGrid.h.
|
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.
|
overridevirtual |
Set the interpolation order to be used during function reconstruction
This method sets the order of the interpolation method that will be used when reconstructing the sampled scalar function. Valid values of order
are 0, 1, and 2, corresponding to nearest-neighbor,linear, and quadratic interpolation, respectively. If order
is invalid it will be silently set to 2. The default interpolation order is 1
[in] | order | interpolation order |
Reimplemented from VAPoR::Grid.
|
inlineoverridevirtual |
Check for periodic boundaries
Only horizonal dimensions can be periodic. Layered (third) dimension is ignored if set to periodic
Reimplemented from VAPoR::Grid.
Definition at line 113 of file LayeredGrid.h.
References VAssert.