Interface MiGeometryHexahedronIjk
- All Superinterfaces:
MiGeometry
Generic geometry interface representing a 3D grid of hexahedron cells, where each hexahedron is defined explicitly with 8 independent coordinates. Each hexahedron is accessible via 3 indices (i,j,k).
This type of geometry is typically used by the MiVolumeMeshVertexHexahedronIjk interface.
The way the vertices of each hexahedron are numbered is indicated by the
CellStorageLayout
value (see getCellStorageLayout()
).
-
Method Summary
Modifier and TypeMethodDescriptionvoid
getCellCoords
(int i, int j, int k, double[] cellCoords) Returns the coordinates of the hexahedron (i,j,k) cell.Hint about coordinates organization in a hexahedron cell.Hint about coordinates organization in memory.Methods inherited from interface com.openinventor.meshvizxlm.mesh.geometry.MiGeometry
getTimeStamp
-
Method Details
-
getCellCoords
void getCellCoords(int i, int j, int k, double[] cellCoords) Returns the coordinates of the hexahedron (i,j,k) cell.The way the vertices of each hexahedron are numbered is indicated by the
CellStorageLayout
value returned bygetCellStorageLayout()
.The implementation of this method must be thread-safe because it might be called concurrently by multiple threads. The way this method is implemented is critical for performance. Any inefficient implementation may impact very significantly the duration of the skin or slab extractions. For instance, using a mutex to ensure this method is thread-safe is in general not efficient.
- Parameters:
i
- the id of this hexahedron on the axis I.0 <= i < meshTopologyIjk.getNumCellsI()
.j
- the id of this hexahedron on the axis J.0 <= j < meshTopologyIjk.getNumCellsJ()
.k
- the id of this hexahedron on the axis K.0 <= k < meshTopologyIjk.getNumCellsK()
.cellCoords
- the array into which the 8 vertices of the hexahedron (i,j,k) are to be stored.
-
getStorageLayout
StorageLayoutIJK getStorageLayout()Hint about coordinates organization in memory.This information aims at optimizing the geometry traversal for extractors. Returns the internal coordinates layout in memory as 6 enum values covering all possible cases. For instance
KJI
means that:- the coordinate (i+1,j,k) is consecutive in memory to the coordinate (i,j,k) and,
- the row of coordinates (j+1,k) is consecutive in memory to the row of coordinates (j,k) and,
- the slice of coordinates (k+1) is consecutive in memory to the slice of coordinates (k)
The fastest way to go through the coordinates with such layout is to perform the following triple loop:
for each k with 0 <= k < numK for each j with 0 <= j < numJ for each i with 0 <= i < numI coordinates.getCellCoords(i,j,k, cellCoords);
-
getCellStorageLayout
CellStorageLayout getCellStorageLayout()Hint about coordinates organization in a hexahedron cell.
-