DVS::IMeshChunk Class Reference
Last update: 17.04.2023Mesh Chunk Interface for DVS Reader API. More...
#include <dvs_mesh_chunk_interface.h>
Public Types | |
enum | MeshType { UNKNOWN = 0 , UNSTRUCTURED = 1 , PARALLELEPIPED = 2 , CURVILINEAR = 3 } |
The different mesh types allowed. More... | |
enum | Axis { X = 0 , Y = 1 , Z = 2 } |
The AXIS or IJK component to request. More... | |
Public Member Functions | |
IMeshChunk ()=default | |
default | |
virtual | ~IMeshChunk ()=default |
default | |
IMeshChunk (IMeshChunk &&)=default | |
default | |
IMeshChunk & | operator= (IMeshChunk &&)=default |
default | |
IMeshChunk (const IMeshChunk &)=default | |
support copying | |
IMeshChunk & | operator= (const IMeshChunk &)=default |
default | |
virtual MeshType | get_type () const =0 |
Get the type of mesh chunk. More... | |
virtual const DVS::IObject * | get_object () const =0 |
Get the object definiton this mesh chunk is associated with. More... | |
virtual float | get_time () const =0 |
Get the time for this mesh chunk. More... | |
virtual uint32_t | get_rank () const =0 |
Get the rank for the mesh chunk. More... | |
virtual uint32_t | get_chunk () const =0 |
Get the chunk for this mesh chunk. More... | |
virtual dvs_ret | get_coords_size (uint32_t &component_size)=0 |
Get the size of each coordinate component for unstructured meshes. More... | |
virtual dvs_ret | get_coords (float *x_coords, float *y_coords, float *z_coords)=0 |
Get the coordinates for an unstructured mesh. More... | |
virtual dvs_ret | get_coords_interleaved (float *coords)=0 |
Get the coords for a unstructured meshes interleaved in a single array. More... | |
virtual dvs_ret | get_coords_curv_size (uint32_t &component_size)=0 |
Get the size of each coordinate component for structured curvilinear meshes. More... | |
virtual dvs_ret | get_coords_curv (float local_ijk_min[3], float local_ijk_max[3], float global_ijk_max[3], float *x_coords, float *y_coords, float *z_coords)=0 |
Get coordinate data for a structured curvilinear mesh. More... | |
virtual dvs_ret | get_coords_curv_interleaved (float local_ijk_min[3], float local_ijk_max[3], float global_ijk_max[3], float *coords)=0 |
Get the coords for structured curvilinear meshes interleaved in a single array. More... | |
virtual dvs_ret | get_coords_parallele_size (uint32_t &i_vals_size, uint32_t &j_vals_size, uint32_t &k_vals_size)=0 |
Get the size of each ijk component for structured parallelpiped meshes. More... | |
virtual dvs_ret | get_coords_parallele (float origin[3], float dir_vec_i[3], float dir_vec_j[3], float dir_vec_k[3], float local_ijk_min[3], float local_ijk_max[3], float global_ijk_max[3], float *i_vals, float *j_vals, float *k_vals)=0 |
Get the ijk mesh information for structured parallelepiped mesh chunks. More... | |
virtual dvs_ret | get_num_variables (uint32_t &num_vars) const =0 |
Get the number of nodal variables this mesh chunk has data for. More... | |
virtual const DVS::IVar * | get_variable (uint32_t index) const =0 |
Get the variable definition associates with the nodal variable for this index. More... | |
virtual dvs_ret | get_variable_data (uint32_t index, uint32_t *num_values, float *array)=0 |
Get the variable data by index. More... | |
virtual dvs_ret | get_variable_data (const IVar *var, uint32_t *num_values, float *array)=0 |
Get the variable data by variable. More... | |
virtual dvs_ret | get_num_element_blocks (uint32_t &num_elem_blocks) const =0 |
Get the number of element blocks for this mesh chunk. More... | |
virtual dvs_ret | get_element_block_types (dvs_element_type *element_types) const =0 |
Get an array of the element block types for this mesh chunk. More... | |
virtual DVS::IElementBlock * | get_element_block (uint32_t index)=0 |
Get the element block by index. More... | |
virtual DVS::IElementBlock * | get_element_block_by_type (dvs_element_type type)=0 |
Get the element block by element type. More... | |
Public Member Functions inherited from DVS::IHash | |
IHash ()=default | |
default | |
virtual | ~IHash ()=default |
default | |
IHash (IHash &&)=default | |
default | |
IHash & | operator= (IHash &&)=default |
default | |
IHash (const IHash &)=default | |
support copying | |
IHash & | operator= (const IHash &)=default |
default | |
virtual uint32_t | get_hash_size () const =0 |
Get the size of the hash to use with IHash::get_hash() More... | |
virtual dvs_ret | get_hash (char *hash) const =0 |
Get the hash of the data. More... | |
Public Member Functions inherited from DVS::IVarHash | |
IVarHash ()=default | |
default | |
virtual | ~IVarHash ()=default |
default | |
IVarHash (IVarHash &&)=default | |
default | |
IVarHash & | operator= (IVarHash &&)=default |
default | |
IVarHash (const IVarHash &)=default | |
support copying | |
IVarHash & | operator= (const IVarHash &)=default |
default | |
virtual uint32_t | get_var_hash_size (uint32_t index) const =0 |
Get the size of the hash to use with IVarHash::get_var_hash() More... | |
virtual uint32_t | get_var_hash_size (const IVar *var) const =0 |
Get the size of the hash to use with IVarHash::get_var_hash() More... | |
virtual dvs_ret | get_var_hash (uint32_t index, char *hash) const =0 |
Get the hash of the variable data. More... | |
virtual dvs_ret | get_var_hash (const IVar *var, char *hash) const =0 |
Get the hash of the variable data. More... | |
Detailed Description
Mesh Chunk Interface for DVS Reader API.
A mesh chunk in DVS contains the underlying mesh coordinates and nodal variable information for a specific timestep/rank/chunk. It also is the parent object for IElementBlock objects which contain the element / connectivity information. Mesh chucks can be unstructured or structured (paralellepiped or curvilinear). See DVS::IHash and DVS::IVarHash for the hash object interface.
Definition at line 48 of file dvs_mesh_chunk_interface.h.
Member Enumeration Documentation
◆ Axis
The AXIS or IJK component to request.
Enumerator | |
---|---|
X | The X axis (or i component for structured parts) |
Y | The X axis (or j component for structured parts) |
Z | The Z axis (or k component for structured parts) |
Definition at line 75 of file dvs_mesh_chunk_interface.h.
◆ MeshType
The different mesh types allowed.
Enumerator | |
---|---|
UNKNOWN | Unknown, a problem occurred. |
UNSTRUCTURED | Unstructured mesh data. |
PARALLELEPIPED | Parallelepiped structured mesh data. |
CURVILINEAR | Curvilinear structured mesh data. |
Definition at line 63 of file dvs_mesh_chunk_interface.h.
Member Function Documentation
◆ get_chunk()
|
pure virtual |
Get the chunk for this mesh chunk.
- Returns
- uint32_t the chunk this mesh chunk is associated with (zero based)
◆ get_coords()
|
pure virtual |
Get the coordinates for an unstructured mesh.
Retrieves the coordinates for an unstructured mesh. To get the coordinates interleaved in a single array call get_coords_interleaved().
Errors:
- DVS_NO_DATA: No data for this mesh, not an error
- DVS_PARAM_NULL: nullptr passed into method, method did nothing
- DVS_INVALID_MESH_TYPE: Mesh type is not DVS::IMeshChunk::MeshType::UNSTRUCTURED
- DVS_INVALID_CACHE: Loading cache failed, possibly invalid cache or invalid permissions
- DVS_DATA_FAILED_LOAD: There was a failure loading data, data is either empty or missing
- DVS_INVALID_HASH: Hash of variable data is invalid. There is a problem with the data.
- Parameters
-
[out] x_coords output array for x coordinates (must not be nullptr) size to allocate from get_coords_size() [out] y_coords output array for y coordinates (must not be nullptr) size to allocate from get_coords_size() [out] z_coords output array for z coordiantes (must not be nullptr) size to allocate from get_coords_size()
- Returns
- dvs_ret DVS_NONE on success, see method documentation for errors
◆ get_coords_curv()
|
pure virtual |
Get coordinate data for a structured curvilinear mesh.
Structured curvilinear meshes have the XYZ information for every node in the IJK array for flexibility in defining the nodes. The connectivity for the mesh is implied so there are no connectivity arrays in the DVS::IElemBlock. If you'd like the XYZ coordinates interleaved in a single array call get_coords_curv_interleaved().
Errors:
- DVS_NO_DATA: No data for this mesh, not an error
- DVS_PARAM_NULL: nullptr passed into method, method did nothing
- DVS_INVALID_MESH_TYPE: Mesh type is not DVS::IMeshChunk::MeshType::CURVILINEAR
- DVS_INVALID_CACHE: Loading cache failed, possibly invalid cache or invalid permissions
- DVS_DATA_FAILED_LOAD: There was a failure loading data, data is either empty or missing
- DVS_INVALID_HASH: Hash of variable data is invalid. There is a problem with the data.
- DVS_INVALID_STRUCTURED_DATA: Invalid structured data. There is a problem with the data.
- Parameters
-
[out] local_ijk_min array of size 3, returns 0 based ijk min for this chunk [out] local_ijk_max array of size 3, returns 0 based ijk max for this chunk [out] global_ijk_max array of size 3, returns 1 based global ijk max, this is the total ijk dimension across all mesh chunks [out] x_coords output array for x coordinates (must not be nullptr) size to allocate from get_coords_curv_size() [out] y_coords output array for y coordinates (must not be nullptr) size to allocate from get_coords_curv_size() [out] z_coords output array for z coordinates (must not be nullptr) size to allocate from get_coords_curv_size()
- Returns
- dvs_ret DVS_NONE on success, see method documentation for errors
◆ get_coords_curv_interleaved()
|
pure virtual |
Get the coords for structured curvilinear meshes interleaved in a single array.
Structured curvilinear meshes have the XYZ information for every node in the IJK array for flexibility in defining the nodes. The connectivity for the mesh is implied so there are no connectivity arrays in the DVS::IElemBlock. This method returns the XYZ coordinates interleaved in a single array of the format [X0 Y0 Z0 X1 Y1 Z1]. If you'd like the XYZ coordinates in separate x,y,z arrays call get_coords_curv().
Errors:
- DVS_NO_DATA: No data for this mesh, not an error
- DVS_PARAM_NULL: nullptr passed into method, method did nothing
- DVS_INVALID_MESH_TYPE: Mesh type is not DVS::IMeshChunk::MeshType::CURVILINEAR
- DVS_INVALID_CACHE: Loading cache failed, possibly invalid cache or invalid permissions
- DVS_DATA_FAILED_LOAD: There was a failure loading data, data is either empty or missing
- DVS_INVALID_HASH: Hash of variable data is invalid. There is a problem with the data.
- DVS_INVALID_STRUCTURED_DATA: Invalid structured data. There is a problem with the data.
- Parameters
-
[out] local_ijk_min array of size 3, returns 0 based ijk min for this chunk [out] local_ijk_max array of size 3, returns 0 based ijk max for this chunk [out] global_ijk_max array of size 3, returns 1 based global ijk max, this is the total ijk dimension across all mesh chunks [out] coords output array of interleaved coords for form [X0 Y0 Z0 X1 Y0 Z0] size to allocate component_size*3 from get_coords_size()
- Returns
- dvs_ret DVS_NONE on success, see method documentation for errors
◆ get_coords_curv_size()
|
pure virtual |
Get the size of each coordinate component for structured curvilinear meshes.
Returns the size of each component of a curvilinear mesh. This is used with the method get_coords_curv(). For get_coords_curv_interleaved() use the size component_size*3 to allocate the array.
Errors:
- DVS_NO_DATA: No data for this mesh, not an error
- DVS_INVALID_MESH_TYPE: Mesh type is not DVS::IMeshChunk::MeshType::CURVILINEAR
- DVS_INVALID_STRUCTURED_DATA: Structured data is invalid, should not happen
- Parameters
-
[out] component_size the size of each x/y/z coordinate components
- Returns
- dvs_ret DVS_NONE on success, see method documentation for errors
◆ get_coords_interleaved()
|
pure virtual |
Get the coords for a unstructured meshes interleaved in a single array.
Retrieves the coordinates for an unstructured mesh interleaved ([X0 Y0 Z0 X1 Y1 Z1]) instead of as separate X Y Z arrays as the method get_coords() returns. The coords array should be of size component_size*3 returned from get_coords_size().
Errors:
- DVS_NO_DATA: No data for this mesh, not an error
- DVS_PARAM_NULL: nullptr passed into method, method did nothing
- DVS_INVALID_MESH_TYPE: Mesh type is not DVS::IMeshChunk::MeshType::UNSTRUCTURED
- DVS_INVALID_CACHE: Loading cache failed, possibly invalid cache or invalid permissions
- DVS_DATA_FAILED_LOAD: There was a failure loading data, data is either empty or missing
- DVS_INVALID_HASH: Hash of variable data is invalid. There is a problem with the data.
- Parameters
-
[out] coords output array of interleaved coords for form [X0 Y0 Z0 X1 Y0 Z0] size to allocate component_size*3 from get_coords_size()
- Returns
- dvs_ret DVS_NONE on success, see method documentation for errors
◆ get_coords_parallele()
|
pure virtual |
Get the ijk mesh information for structured parallelepiped mesh chunks.
Retrieves the mesh information for a structured parallelepiped mush chunk. Parallelepiped structured meshes are described by an origin, XYZ direction vectors for each dimension and the amount of distance between the origin at each I, K and K increment. To get the size to allocate for i_vals, j_vals, and k_vals call get_coords_parallele_size().
Errors:
- DVS_NO_DATA: No data for this mesh, not an error
- DVS_PARAM_NULL: nullptr passed into method, method did nothing
- DVS_INVALID_MESH_TYPE: Mesh type is not DVS::IMeshChunk::MeshType::CURVILINEAR
- DVS_INVALID_CACHE: Loading cache failed, possibly invalid cache or invalid permissions
- DVS_DATA_FAILED_LOAD: There was a failure loading data, data is either empty or missing
- DVS_INVALID_HASH: Hash of variable data is invalid. There is a problem with the data.
- DVS_INVALID_STRUCTURED_DATA: Invalid structured data. There is a problem with the data.
- Parameters
-
[out] origin The XYZ origin of the mesh [out] dir_vec_i array of size 3, returns the XYZ direction vector for I dimension [out] dir_vec_j array of size 3, returns the XYZ direction vector for J dimension [out] dir_vec_k array of size 3, returns the XYZ direction vector for K dimension [out] local_ijk_min array of size 3, returns 0 based ijk min for this chunk [out] local_ijk_max array of size 3, returns 0 based ijk max for this chunk [out] global_ijk_max array of size 3, returns 1 based global ijk max, this is the total ijk dimension across all mesh chunks [out] i_vals the distance at each I increment from the origin size to allocate from get_coords_parallele_size() [out] j_vals the distance at each J increment from the origin size to allocate from get_coords_parallele_size() [out] k_vals the distance at each K increment from the origin size to allocate from get_coords_parallele_size()
- Returns
- dvs_ret DVS_NONE on success, see method documentation for errors
◆ get_coords_parallele_size()
|
pure virtual |
Get the size of each ijk component for structured parallelpiped meshes.
Returns the size of each component of a parallelpiped mesh. This is used with the method get_coords_parallele(). Use the sizes returned to allocate the arrays for get_coords_parallele().
Errors:
- DVS_NO_DATA: No data for this mesh, not an error
- DVS_INVALID_MESH_TYPE: Mesh type is not DVS::IMeshChunk::MeshType::CURVILINEAR
- DVS_INVALID_STRUCTURED_DATA: Structured data is invalid, There is a problem with the data.
- Parameters
-
i_vals_size size of the i dimension array to allocate for get_coords_parallele() j_vals_size size of the j dimension array to allocate for get_coords_parallele() k_vals_size size of the k dimension array to allocate for get_coords_parallele()
- Returns
- dvs_ret DVS_NONE on success, see method documentation for errors
◆ get_coords_size()
|
pure virtual |
Get the size of each coordinate component for unstructured meshes.
Used for unstructured meshes. Returns the size of each x/y/z coordinate array to be used with get_coords() or component_size*3 for get_coords_interleaved().
Errors:
- DVS_NO_DATA: No data for this mesh, not an error
- DVS_INVALID_MESH_TYPE: Mesh type is not DVS::IMeshChunk::MeshType::UNSTRUCTURED
- Parameters
-
[out] component_size the size of each x/y/z coordinate components
- Returns
- dvs_ret DVS_NONE on no error, see method documentation for errors
◆ get_element_block()
|
pure virtual |
Get the element block by index.
Get the element block according to it's index in the mesh chunk. This range is from [0, get_num_element_blocks()-1]. Every mesh chunk has a number of element blocks for each element type it has data for.
- Parameters
-
[in] index the zero based index of the element block range: [0, get_num_element_blocks()-1]
- Returns
- DVS::IElementBlock* nullptr if index is out of bounds, otherwise the element block
◆ get_element_block_by_type()
|
pure virtual |
Get the element block by element type.
Get the element block by dvs_element_type from this mesh chunk, the valid types for this mesh chunk may be obtained via the method get_element_block_types().
Every mesh chunk has an element block for each element type it has data available for. These types are defined by the enum dvs_element_type in dynamic_visualization_store_enums.h with a macro FOREACH_ELEM_ENUM.
- Parameters
-
[in] type the type of element block to retrieve
- Returns
- DVS::IElementBlock* nullptr if invalid, otherwise the element block
◆ get_element_block_types()
|
pure virtual |
Get an array of the element block types for this mesh chunk.
This returns an array of dvs_element_type for every block this mesh chunk contains. These types are defined by the enum dvs_element_type in dynamic_visualization_store_enums.h with a macro FOREACH_ELEM_ENUM.
- Parameters
-
[out] element_types an array of size get_num_element_blocks() to fill out
- Returns
- dvs_ret DVS_NONE on no errors, DVS_PARAM_NULL if element types nullptr
◆ get_num_element_blocks()
|
pure virtual |
Get the number of element blocks for this mesh chunk.
Every mesh chunk has an element block for each element type it has data available for. These types are defined by the enum dvs_element_type in dynamic_visualization_store_enums.h with a macro FOREACH_ELEM_ENUM.
Errors:
- DVS_NONE: Success
- Parameters
-
[out] num_elem_blocks if success, returns number of element blocks for this mesh chunk
- Returns
- DVS_NONE on success, else see method description
◆ get_num_variables()
|
pure virtual |
Get the number of nodal variables this mesh chunk has data for.
This method is intended to be used in conjunction with get_variable() and get_variable_data() to retrieve nodal variable data.
Errors:
- DVS_NONE: Success
- Parameters
-
num_vars if success, returns the number of nodal variables for this mesh chunk
- Returns
- dvs_ret DVS_NONE if success, else see method description
◆ get_object()
|
pure virtual |
Get the object definiton this mesh chunk is associated with.
- Returns
- const DVS::IObject* the object definition
◆ get_rank()
|
pure virtual |
Get the rank for the mesh chunk.
- Returns
- uint32_t the rank this mesh chunk is associated with (zero based)
◆ get_time()
|
pure virtual |
Get the time for this mesh chunk.
- Returns
- float the time this mesh chunk is associated with
◆ get_type()
|
pure virtual |
Get the type of mesh chunk.
- Returns
- MeshType the type of mesh
◆ get_variable()
|
pure virtual |
Get the variable definition associates with the nodal variable for this index.
This method retrieves the variable that is associated with the nodal variable of the mesh chunk at a specific index in range [0,get_num_variables()-1]
- Parameters
-
[in] index index of variable definition to get in range [0, get_num_variables()-1]
- Returns
- DVS::IVar* nullptr if out of range, otherwise the variable associated with the index
◆ get_variable_data() [1/2]
|
pure virtual |
Get the variable data by variable.
This method retrieves the nodal variable data based on a specific variable definitions.
Error Codes:
- DVS_NONE: No error
- DVS_PARAM_INVALID_VAR: Bad (or null) variable object passed into method
- DVS_PARAM_INVALID_VAR_ID: Mesh chunk does not have data for var passed in.
- DVS_PARAM_NULL: All parameters are null. Method will do nothing.
- DVS_INVALID_CACHE: Cache is unable to be read. Bad location or permissions
- DVS_INVALID_HASH: Hash of variable data is invalid. There is a problem with the data
- DVS_DATA_FAILED_LOAD: Data hash in metadata is missing from blockstore. Bad cache or permissions?
- Parameters
-
[in] var the variable definition to retrieve nodal variable data for [out] num_values if not nullptr returns the number of values to allocate for array [out] array if not nullptr should be of size num_values
- Returns
- dvs_ret DVS_NONE on no error, otherwise see method description
◆ get_variable_data() [2/2]
|
pure virtual |
Get the variable data by index.
This method retrieves nodal variable data based on an index in range [0,get_num_variables()-1]. To retrieve the variable definition associated with the index call get_variable().
Error Codes:
- DVS_NONE: No error
- DVS_PARAM_NULL: All parameters are null. Method will do nothing.
- DVS_PARAM_OUT_OF_BOUNDS: Index out of bounds of [0, get_num_variables()-1]
- DVS_PARAM_INVALID_VAR: Invalid variable found at index, should not happen
- DVS_PARAM_INVALID_VAR_ID: Invalid variable id found at index, should not happen
- DVS_INVALID_CACHE: Cache is unable to be read. Bad location or permissions
- DVS_INVALID_HASH: Hash of variable data is invalid. There is a problem with the data
- DVS_DATA_FAILED_LOAD: Data hash in metadata is missing from blockstore. Bad cache or permissions?
- Parameters
-
[in] index index of the variable data in range [0,get_num_variables()-1] [out] num_values if not nullptr returns the number of values to allocate for array [out] array if not nullptr must be of size num_values
- Returns
- dvs_ret DVS_NONE on no error, otherwise see method description
The documentation for this class was generated from the following file:
- D:/ANSYSDev/NoBackup/branches/EnSight-Second-Coming/ensight/user_defined_src/readers/dvs/include/dvs_mesh_chunk_interface.h