00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _MBIJKTOI_H
00024 #define _MBIJKTOI_H
00025
00026 #include <MeshVizXLM/mesh/MiMeshIjk.h>
00027
00036 template <MiMeshIjk::StorageLayout layout = MiMeshIjk::LAYOUT_KJI>
00037 class MbIjkToI
00038 {
00039 public:
00046 MbIjkToI(size_t numCellI, size_t numCellJ, size_t numCellK)
00047 {
00048 m_numI = numCellI;
00049 m_numJ = numCellJ;
00050 m_numK = numCellK;
00051 size_t dim[3] = {numCellI,numCellJ,numCellK};
00052 size_t orderedDim[3];
00053 orderedDim[0] = dim[s_dimensionLayout[0]];
00054 orderedDim[1] = dim[s_dimensionLayout[1]];
00055 orderedDim[2] = dim[s_dimensionLayout[2]];
00056 m_factor[s_dimensionLayout[2]] = 1;
00057 m_factor[s_dimensionLayout[1]] = orderedDim[2];
00058 m_factor[s_dimensionLayout[0]] = orderedDim[1]*orderedDim[2];
00059 }
00060
00064 size_t getI(size_t i, size_t j, size_t k) const
00065 {
00066 return k*m_factor[MiMeshIjk::DIMENSION_K] + j*m_factor[MiMeshIjk::DIMENSION_J] + i*m_factor[MiMeshIjk::DIMENSION_I];
00067 }
00068
00069 private:
00070 size_t m_factor[3];
00071 size_t m_numI, m_numJ, m_numK;
00072 static MiMeshIjk::Dimension s_dimensionLayout[3];
00073 };
00074
00075 #endif
00076
00077
00078