Open Inventor Release 2024.1.0
 
Loading...
Searching...
No Matches
MiHexahedronTopologyExplicitIjk Class Referenceabstract

MeshViz List of volume cells interface. More...

#include <MeshVizXLM/mesh/topology/MiHexahedronTopologyExplicitIjk.h>

+ Inheritance diagram for MiHexahedronTopologyExplicitIjk:

Public Member Functions

virtual void getCellNodeIndices (size_t i, size_t j, size_t k, size_t &n0, size_t &n1, size_t &n2, size_t &n3, size_t &n4, size_t &n5, size_t &n6, size_t &n7) const =0
 Returns the 8 indices of a cell of this topology.
 
virtual MiMeshIjk::StorageLayout getStorageLayout () const
 Hint about cells organization in memory.
 
virtual size_t getEndNodeId () const =0
 Returns the last node id + 1 used by this topology.
 
virtual size_t getBeginNodeId () const
 Returns the first node id used by this topology.
 
- Public Member Functions inherited from MiTopologyIjk
virtual size_t getNumCellsI () const =0
 Returns the number of cells on the first logical axis.
 
virtual size_t getNumCellsJ () const =0
 Returns the number of cells on the second logical axis.
 
virtual size_t getNumCellsK () const =0
 Returns the number of cells on the third logical axis.
 
virtual bool isDead (size_t i, size_t j, size_t k) const
 Returns true if the cell of index (i,j,k) should be ignored.
 
- Public Member Functions inherited from MiTopology
virtual ~MiTopology ()
 
virtual size_t getTimeStamp () const =0
 Returns for this topology a unique time stamp across all topologies in the application.
 
virtual bool hasDeadCells () const
 Returns true if the topology contains dead cells.
 

Additional Inherited Members

- Protected Member Functions inherited from MiTopologyIjk
virtual std::ostream & toStream (std::ostream &s) const
 Performs an output operation on a stream which is returned afterward.
 

Detailed Description

MeshViz List of volume cells interface.

A generic abstract 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 = 0123
                      /|          /|   facet 1 = 4765
                    /  |        /  |   facet 2 = 0374
                  /    |      /    |   facet 3 = 1562
                n7---------n6      |   facet 4 = 0451
                 |     |    |      |   facet 5 = 3267
                 |    n0----|-----n1    --- I
                 |    /     |     /
                 |  /       |   /
                 |/         | /
                n4---------n5

              /
            /
          K

SEE ALSO

MbHexahedronTopologyExplicitIjk

Definition at line 71 of file MiHexahedronTopologyExplicitIjk.h.

Member Function Documentation

◆ getBeginNodeId()

virtual size_t MiHexahedronTopologyExplicitIjk::getBeginNodeId ( ) const
inlinevirtual

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(). This default implementation returns 0.

Definition at line 113 of file MiHexahedronTopologyExplicitIjk.h.

◆ getCellNodeIndices()

virtual void MiHexahedronTopologyExplicitIjk::getCellNodeIndices ( size_t  i,
size_t  j,
size_t  k,
size_t &  n0,
size_t &  n1,
size_t &  n2,
size_t &  n3,
size_t &  n4,
size_t &  n5,
size_t &  n6,
size_t &  n7 
) const
pure virtual

Returns the 8 indices of a cell of this topology.

The cell is identified by three ids i,j,k.

◆ getEndNodeId()

virtual size_t MiHexahedronTopologyExplicitIjk::getEndNodeId ( ) const
pure virtual

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

◆ getStorageLayout()

virtual MiMeshIjk::StorageLayout MiHexahedronTopologyExplicitIjk::getStorageLayout ( ) const
inlinevirtual

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 LAYOUT_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 LAYOUT_KJI should be 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,n0, ... ,n7);

The default implementation returns LAYOUT_UNKNOWN meaning that the cell storage organization is unknown, for instance when cells are computed on the fly. In that case, extractors perform the topology traversal in the way that minimizes the required memory for their algorithms.

Definition at line 103 of file MiHexahedronTopologyExplicitIjk.h.


The documentation for this class was generated from the following file: