VAPOR3 3.9.4
|
This class implements a 2D or 3D curvilinear grid. More...
#include <CurvilinearGrid.h>
Classes | |
class | ConstCoordItrCG |
Public Member Functions | |
CurvilinearGrid (const DimsType &dims, const DimsType &bs, const std::vector< float * > &blks, const RegularGrid &xrg, const RegularGrid &yrg, const std::vector< double > &zcoords, std::shared_ptr< const QuadTreeRectangleP > qtr) | |
CurvilinearGrid (const std::vector< size_t > &dims, const std::vector< size_t > &bs, const std::vector< float * > &blks, const RegularGrid &xrg, const RegularGrid &yrg, const std::vector< double > &zcoords, std::shared_ptr< const QuadTreeRectangleP > qtr) | |
CurvilinearGrid (const DimsType &dims, const DimsType &bs, const std::vector< float * > &blks, const RegularGrid &xrg, const RegularGrid &yrg, const RegularGrid &zrg, std::shared_ptr< const QuadTreeRectangleP > qtr) | |
CurvilinearGrid (const std::vector< size_t > &dims, const std::vector< size_t > &bs, const std::vector< float * > &blks, const RegularGrid &xrg, const RegularGrid &yrg, const RegularGrid &zrg, std::shared_ptr< const QuadTreeRectangleP > qtr) | |
CurvilinearGrid (const DimsType &dims, const DimsType &bs, const std::vector< float * > &blks, const RegularGrid &xrg, const RegularGrid &yrg, std::shared_ptr< const QuadTreeRectangleP > qtr) | |
CurvilinearGrid (const std::vector< size_t > &dims, const std::vector< size_t > &bs, const std::vector< float * > &blks, const RegularGrid &xrg, const RegularGrid &yrg, std::shared_ptr< const QuadTreeRectangleP > qtr) | |
CurvilinearGrid ()=default | |
virtual | ~CurvilinearGrid () |
std::shared_ptr< const QuadTreeRectangleP > | GetQuadTreeRectangle () const |
std::string | GetType () const override |
virtual DimsType | GetCoordDimensions (size_t dim) const override |
virtual size_t | GetGeometryDim () 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 |
const RegularGrid & | GetXRG () const |
const RegularGrid & | GetYRG () 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 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 float | GetValueNearestNeighbor (const CoordType &coords) const override |
virtual float | GetValueLinear (const CoordType &coords) const override |
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 curvilinear grid.
This class implements a 2D or 3D curvilinear grid: a specialization of StructuredGrid class where cells are quadrilaterals (2D), or cuboids (3D). Hence, curvlinear grids are topologically, but the location of each grid point is expressed by functions:
or
Definition at line 34 of file CurvilinearGrid.h.
VAPoR::CurvilinearGrid::CurvilinearGrid | ( | const DimsType & | dims, |
const DimsType & | bs, | ||
const std::vector< float * > & | blks, | ||
const RegularGrid & | xrg, | ||
const RegularGrid & | yrg, | ||
const std::vector< double > & | zcoords, | ||
std::shared_ptr< const QuadTreeRectangleP > | qtr | ||
) |
Construct a vetically stretched, horizontally curvlinear 3D grid
This constructor instantiates a curvilinear grid where the x,y,z user coordinates are expressed as follows:
The X and Y user coordinates are specified with xrg
and yrg
, respectively, and the Z coordinates are specified by the vector zcoords
.
Adds new parameters:
[in] | xrg | A 2D RegularGrid instance whose I and J dimensionality matches that of this class instance, and whose values specify the X user coordinates. |
[in] | yrg | A 2D RegularGrid instance whose I and J dimensionality matches that of this class instance, and whose values specify the Y user coordinates. |
[in] | zcoords | A 1D vector whose size matches that of the K dimension of this class, and whose values specify the Z user coordinates. |
[in] | qtr | A QuadTreeRectangleP instance that contains a quad tree that may be used to find the cell(s) containing a given point expressed in user coordintes. if qtr is NULL the class will generate its own QuadTreeRectangleP instance. |
VAPoR::CurvilinearGrid::CurvilinearGrid | ( | const std::vector< size_t > & | dims, |
const std::vector< size_t > & | bs, | ||
const std::vector< float * > & | blks, | ||
const RegularGrid & | xrg, | ||
const RegularGrid & | yrg, | ||
const std::vector< double > & | zcoords, | ||
std::shared_ptr< const QuadTreeRectangleP > | qtr | ||
) |
VAPoR::CurvilinearGrid::CurvilinearGrid | ( | const DimsType & | dims, |
const DimsType & | bs, | ||
const std::vector< float * > & | blks, | ||
const RegularGrid & | xrg, | ||
const RegularGrid & | yrg, | ||
const RegularGrid & | zrg, | ||
std::shared_ptr< const QuadTreeRectangleP > | qtr | ||
) |
Construct a layered, horizontally curvlinear 3D grid
This constructor instantiates a curvilinear grid where the x,y,z user coordinates are expressed as follows:
The X and Y user coordinates are specified with xrg
and yrg
, respectively, and the Z coordinates are specified by the zrg
Adds new parameters:
[in] | xrg | A 2D RegularGrid instance whose I and J dimensionality matches that of this class instance, and whose values specify the X user coordinates. |
[in] | yrg | A 2D RegularGrid instance whose I and J dimensionality matches that of this class instance, and whose values specify the Y user coordinates. |
[in] | zrg | A 3D RegularGrid instance whose I, J, K dimensionality matches that of this class instance, and whose values specify the Z user coordinates. |
[in] | qtr | A QuadTreeRectangleP instance that contains a quad tree that may be used to find the cell(s) containing a given point expressed in user coordintes. if qtr is NULL the class will generate its own QuadTreeRectangleP instance. |
VAPoR::CurvilinearGrid::CurvilinearGrid | ( | const std::vector< size_t > & | dims, |
const std::vector< size_t > & | bs, | ||
const std::vector< float * > & | blks, | ||
const RegularGrid & | xrg, | ||
const RegularGrid & | yrg, | ||
const RegularGrid & | zrg, | ||
std::shared_ptr< const QuadTreeRectangleP > | qtr | ||
) |
VAPoR::CurvilinearGrid::CurvilinearGrid | ( | const DimsType & | dims, |
const DimsType & | bs, | ||
const std::vector< float * > & | blks, | ||
const RegularGrid & | xrg, | ||
const RegularGrid & | yrg, | ||
std::shared_ptr< const QuadTreeRectangleP > | qtr | ||
) |
Construct a curvlinear 2D grid
This constructor instantiates a curvilinear grid where the x,y user coordinates are expressed as follows:
The X and Y user coordinates are specified with xrg
and yrg
, respectively.
Adds new parameters:
[in] | xrg | A 2D RegularGrid instance whose I and J dimensionality matches that of this class instance, and whose values specify the X user coordinates. |
[in] | yrg | A 2D RegularGrid instance whose I and J dimensionality matches that of this class instance, and whose values specify the Y user coordinates. |
[in] | qtr | A QuadTreeRectangleP instance that contains a quad tree that may be used to find the cell(s) containing a given point expressed in user coordintes. if qtr is NULL the class will generate its own QuadTreeRectangleP instance. |
VAPoR::CurvilinearGrid::CurvilinearGrid | ( | const std::vector< size_t > & | dims, |
const std::vector< size_t > & | bs, | ||
const std::vector< float * > & | blks, | ||
const RegularGrid & | xrg, | ||
const RegularGrid & | yrg, | ||
std::shared_ptr< const QuadTreeRectangleP > | qtr | ||
) |
|
default |
|
inlinevirtual |
Definition at line 153 of file CurvilinearGrid.h.
|
inlineoverridevirtual |
Return constant grid coordinate iterator.
Implements VAPoR::Grid.
Definition at line 238 of file CurvilinearGrid.h.
|
inlineoverridevirtual |
Implements VAPoR::Grid.
Definition at line 239 of file CurvilinearGrid.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 162 of file CurvilinearGrid.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 167 of file CurvilinearGrid.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.
|
inline |
Definition at line 160 of file CurvilinearGrid.h.
|
inlineoverridevirtual |
Implements VAPoR::Grid.
Definition at line 163 of file CurvilinearGrid.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.
|
overrideprotectedvirtual |
Implements VAPoR::Grid.
|
overrideprotectedvirtual |
Implements VAPoR::Grid.
|
overrideprotectedvirtual |
Implements VAPoR::Grid.
|
inline |
Returns reference to RegularGrid instance containing X user coordinates
Returns reference to RegularGrid instance passed to constructor containing X user coordinates
Definition at line 190 of file CurvilinearGrid.h.
|
inline |
Returns reference to RegularGrid instance containing Y user coordinates
Returns reference to RegularGrid instance passed to constructor containing Y user coordinates
Definition at line 197 of file CurvilinearGrid.h.
|
inline |
Returns reference to vector containing Z user coordinates
Returns reference to vector passed to constructor containing Z user coordinates
Definition at line 204 of file CurvilinearGrid.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.