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 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.

        Parameters:
        i - i-index of the cell
        j - j-index of the cell
        k - k-index of the cell
        nodeIndices - 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 is getEndNodeId() - 1 and the number of nodes used by this topology is getEndNodeId() - 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 is getEndNodeId() - 1 and the number of nodes used by this topology is getEndNodeId() - 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);