MbHexahedronTopologyExplicitIjk< layout > Class Template Reference
[Topology]

MeshViz List of volume cells' indices. More...

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

Inheritance diagram for MbHexahedronTopologyExplicitIjk< layout >:
MiHexahedronTopologyExplicitIjk MbTopologyIjk< layout > MiTopologyIjk MiTopologyIjk MbTopology MbIjkToI< layout > MiTopology MiTopology MiTopology

List of all members.

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

Detailed Description

template<MiMeshIjk::StorageLayout layout = MiMeshIjk::LAYOUT_KJI>
class MbHexahedronTopologyExplicitIjk< layout >

MeshViz List of volume cells' indices.

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
  

Constructor & Destructor Documentation

template<MiMeshIjk::StorageLayout layout>
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.

template<MiMeshIjk::StorageLayout layout>
MbHexahedronTopologyExplicitIjk< layout >::MbHexahedronTopologyExplicitIjk ( const MbHexahedronTopologyExplicitIjk< layout > &  topology  )  [inline]

Member Function Documentation

template<MiMeshIjk::StorageLayout layout>
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.

template<MiMeshIjk::StorageLayout layout>
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.

template<MiMeshIjk::StorageLayout layout>
const size_t * MbHexahedronTopologyExplicitIjk< layout >::getCellNodeIndicesBuffer ( size_t  i,
size_t  j,
size_t  k 
) const [inline]
template<MiMeshIjk::StorageLayout layout>
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.

template<MiMeshIjk::StorageLayout layout>
size_t MbHexahedronTopologyExplicitIjk< layout >::getNumCells (  )  const [inline]

Returns the number of cells.

template<MiMeshIjk::StorageLayout layout = MiMeshIjk::LAYOUT_KJI>
size_t MbHexahedronTopologyExplicitIjk< layout >::getNumCellsI (  )  const [inline, virtual]

Returns the number of cells on the first logical axis.

Reimplemented from MbTopologyIjk< layout >.

template<MiMeshIjk::StorageLayout layout = MiMeshIjk::LAYOUT_KJI>
size_t MbHexahedronTopologyExplicitIjk< layout >::getNumCellsJ (  )  const [inline, virtual]

Returns the number of cells on the second logical axis.

Reimplemented from MbTopologyIjk< layout >.

template<MiMeshIjk::StorageLayout layout = MiMeshIjk::LAYOUT_KJI>
size_t MbHexahedronTopologyExplicitIjk< layout >::getNumCellsK (  )  const [inline, virtual]

Returns the number of cells on the third logical axis.

Reimplemented from MbTopologyIjk< layout >.

template<MiMeshIjk::StorageLayout layout = MiMeshIjk::LAYOUT_KJI>
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 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.

Reimplemented from MiHexahedronTopologyExplicitIjk.

template<MiMeshIjk::StorageLayout layout = MiMeshIjk::LAYOUT_KJI>
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.

Parameters:
(i,j,k) the index of the cell to check

Reimplemented from MbTopologyIjk< layout >.

template<MiMeshIjk::StorageLayout 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).


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

Open Inventor by FEI reference manual, generated on 19 Aug 2019
Copyright © FEI S.A.S. All rights reserved.
http://www.openinventor.com/