List of volume cells' indices.
More...
#include <MeshVizXLM/mesh/topology/MbHexahedronTopologyExplicitIjk.h>
Public Member Functions | |
MbHexahedronTopologyExplicitIjk (size_t numCellI, size_t numCellJ, size_t numCellK) | |
MbHexahedronTopologyExplicitIjk (const MbHexahedronTopologyExplicitIjk &topology) | |
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 |
const size_t * | getCellNodeIndicesBuffer (size_t i, size_t j, size_t k) const |
virtual MiMeshIjk::StorageLayout | getStorageLayout () const |
size_t | getBeginNodeId () const |
size_t | getEndNodeId () const |
size_t | getNumCellsI () const |
size_t | getNumCellsJ () const |
size_t | getNumCellsK () const |
bool | isDead (size_t i, size_t j, size_t k) const |
virtual void | setCellNodeIndices (size_t i, size_t j, size_t k, const size_t *beginId, const size_t *endId) |
size_t | getNumCells () const |
A topology for a unstructured explicit hexahedron mesh Ijk.
Hexahedrons are defines 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
MbHexahedronTopologyExplicitIjk< layout >::MbHexahedronTopologyExplicitIjk | ( | size_t | numCellI, | |
size_t | numCellJ, | |||
size_t | numCellK | |||
) | [inline] |
Constructor of an empty topology defined by its size in i,j,k.
MbHexahedronTopologyExplicitIjk< layout >::MbHexahedronTopologyExplicitIjk | ( | const MbHexahedronTopologyExplicitIjk< layout > & | topology | ) | [inline] |
size_t MbHexahedronTopologyExplicitIjk< layout >::getBeginNodeId | ( | ) | const [inline, virtual] |
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.
Reimplemented from MiHexahedronTopologyExplicitIjk.
void MbHexahedronTopologyExplicitIjk< layout >::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 [inline, virtual] |
Returns 8 indices of a cell of this topology.
The cell is identified by three id i,j,k.
Implements MiHexahedronTopologyExplicitIjk.
const size_t * MbHexahedronTopologyExplicitIjk< layout >::getCellNodeIndicesBuffer | ( | size_t | i, | |
size_t | j, | |||
size_t | k | |||
) | const [inline] |
size_t MbHexahedronTopologyExplicitIjk< layout >::getEndNodeId | ( | ) | const [inline, virtual] |
Returns the max node id +1 used by this topology.
This topology used 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().
Implements MiHexahedronTopologyExplicitIjk.
size_t MbHexahedronTopologyExplicitIjk< layout >::getNumCells | ( | ) | const [inline] |
Returns the number of cells.
size_t MbHexahedronTopologyExplicitIjk< layout >::getNumCellsI | ( | ) | const [inline, virtual] |
Returns the number of cells on the first logical axis.
Reimplemented from MbTopologyIjk< layout >.
size_t MbHexahedronTopologyExplicitIjk< layout >::getNumCellsJ | ( | ) | const [inline, virtual] |
Returns the number of cells on the second logical axis.
Reimplemented from MbTopologyIjk< layout >.
size_t MbHexahedronTopologyExplicitIjk< layout >::getNumCellsK | ( | ) | const [inline, virtual] |
Returns the number of cells on the third logical axis.
Reimplemented from MbTopologyIjk< layout >.
virtual MiMeshIjk::StorageLayout MbHexahedronTopologyExplicitIjk< layout >::getStorageLayout | ( | ) | const [inline, virtual] |
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 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.
Reimplemented from MiHexahedronTopologyExplicitIjk.
bool MbHexahedronTopologyExplicitIjk< layout >::isDead | ( | size_t | i, | |
size_t | j, | |||
size_t | k | |||
) | const [inline, virtual] |
Returns true if the cell of index (i,j,k) should be ignored.
This value is ignored if the hasDeadCell() method returns false. The default implementation returns always false.
(i,j,k) | the index of the cell to check |
Reimplemented from MbTopologyIjk< layout >.
void MbHexahedronTopologyExplicitIjk< layout >::setCellNodeIndices | ( | size_t | i, | |
size_t | j, | |||
size_t | k, | |||
const size_t * | beginId, | |||
const size_t * | endId | |||
) | [inline, virtual] |
Set the nodes indices of cell (i,j,k).