Interface MiHexahedronTopologyExplicitIjk
-
- All Superinterfaces:
MiTopology
,MiTopologyIjk
public interface MiHexahedronTopologyExplicitIjk extends MiTopologyIjk
List of volume cells interface.A generic interface for an unstructured explicit hexahedron volume mesh topology.
Each hexahedron cell has 6 faces which can be in any plane of the 3D space. Each face is a quadrangle not necessarily a square. The 4 first indices define the polygon of a face of the hexahedron. The 4 last indices define the polygon of the opposite face.
Facets and nodes are numbered as follows :
J | | n3----------n2 facet 0 = 0321 /| /| facet 1 = 4567 / | / | facet 2 = 0473 / | / | facet 3 = 1265 n7---------n6 | facet 4 = 0154 | | | | facet 5 = 3762 | n0----|-----n1 --- I | / | / | / | / |/ | / n4---------n5 / / K
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description long
getBeginNodeId()
Returns the first node id used by this topology.long[]
getCellNodeIndices(int i, int j, int k, long[] nodeIndices)
Returns an array containing the 8 indices of a cell of this topology.long
getEndNodeId()
Returns the last node id + 1 used by this topology.StorageLayoutIJK
getStorageLayout()
Hint about cells organization in memory.-
Methods inherited from interface com.openinventor.meshvizxlm.mesh.topology.MiTopology
getTimeStamp, hasDeadCells
-
Methods inherited from interface com.openinventor.meshvizxlm.mesh.topology.MiTopologyIjk
getNumCellsI, getNumCellsJ, getNumCellsK, isDead
-
-
-
-
Method Detail
-
getCellNodeIndices
long[] getCellNodeIndices(int i, int j, int k, long[] nodeIndices)
Returns an array containing the 8 indices of a cell of this topology. The cell is identified by three indices i,j,k.If the specified array length is big enough to store the 8 node indices, they are returned therein. Otherwise, a new array is allocated.
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
- i-index of the cellj
- j-index of the cellk
- k-index of the cellnodeIndices
- The array into which the 8 node indices of the cell are to be stored if it is big enough; otherwise, a new array is allocated for this purpose.- Returns:
- an array containing the 8 indices of the cell
-
getEndNodeId
long getEndNodeId()
Returns the last node id + 1 used by this topology.This topology uses only node index in the interval
[beginNodeId, endNodeId[
. Thus the maximum node index used by the topology isgetEndNodeId() - 1
and the number of nodes used by this topology isgetEndNodeId() - getBeginNodeId()
.- Returns:
- the last node id + 1 used by this topology
-
getBeginNodeId
long getBeginNodeId()
Returns the first node id used by this topology.This topology uses only node index in the interval
[beginNodeId,EndNodeId[
. Thus the maximum node index used by the topology isgetEndNodeId() - 1
and the number of nodes used by this topology isgetEndNodeId() - getBeginNodeId()
.- Returns:
- the first node id used by this topology
-
getStorageLayout
StorageLayoutIJK getStorageLayout()
Hint about cells organization in memory.This information aims at optimizing the topology traversal for extractors. Returns the topology internal cells layout in memory as 6 enum values covering all possible cases. For instance
KJI
means that:- the cell (i+1,j,k) is consecutive in memory to the cell (i,j,k) and,
- the row of cells (j+1,k) is consecutive in memory to the row of cells (j,k) and,
- the slice of cells (k+1) is consecutive in memory to the slice of cells (k)
The fastest way to go through the cells 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 topology.getCellNodeIndices(i,j,k,nodeIndices);
-
-