12#ifndef ARCANE_CARTESIANMESH_CARTESIANNUMBERING_H
13#define ARCANE_CARTESIANMESH_CARTESIANNUMBERING_H
17#include "arcane/cartesianmesh/CartesianMeshGlobal.h"
18#include "arcane/cartesianmesh/v2/CartesianTypes.h"
23namespace Arcane::CartesianMesh::V2
44template <
typename IdType>
56 m_dimension =
rhs.m_dimension;
57 for (Integer d(0); d < 3; ++d) {
58 m_nitems_dir[d] =
rhs.m_nitems_dir[d];
61 m_nitems =
rhs.m_nitems;
62 m_first_item_id =
rhs.m_first_item_id;
71 for (Integer d(0); d < m_dimension; ++d) {
73 m_nitems *= m_nitems_dir[d];
76 for (Integer d(m_dimension); d < 3; ++d) {
84 for (Integer d(1); d < m_dimension; ++d) {
105 return m_nitems_dir[
dir];
117 return m_first_item_id;
140 if (m_dimension < 3) {
157 ARCCORE_HOST_DEVICE
inline IdType id(IdxType idx)
const
159 return id(
static_cast<IdType>(idx[0]),
static_cast<IdType>(idx[1]),
static_cast<IdType>(idx[2]));
167 if (m_dimension < 3) {
186 if (m_dimension < 3) {
220 Integer m_dimension = 0;
222 IdType3 m_nitems_dir = { 1, 1, 1 };
225 IdType m_first_item_id = 0;
Gestion d'une numerotation cartesienne sur une grille d'items d'une dimension au plus 3 Permet le pas...
IdType deltaDir(Integer dir) const
Offset à ajouter à id() pour obtenir l'id de l'item suivant dans la direction dir (si cet item existe...
ARCCORE_HOST_DEVICE IdType id(IdType i, IdType j, IdType k) const
Passage (i,j,k) => numero.
ARCCORE_HOST_DEVICE IdType id(IdxType idx) const
Passage (i,j,k) => numero.
ARCCORE_HOST_DEVICE IdxType ijk(IdType item_id) const
Passage de numero => (i,j,k)
void ijk(IdType item_id, IdType3 &item_ijk) const
Passage de numero => (i,j,k)
IdType idxDir0(IdType item_id) const
Passage numéro => i.
IdType3 m_coef
item_id = m_first_item_id + numéro_cartésien(i,j,k), permet un décallage dans la numérotation
const IdType3 & nbItem3() const
Triplet du nb d'items dans chaque direction (définition de la grille)
IdType idxDir1(IdType item_id) const
Passage numéro => j.
IdType[3] IdType3
Type pour les triplets cartésiens (i,j,k) et les triplets des dimensions (ni,nj,nk)
IdType idxDir2(IdType item_id) const
Passage numéro => k.
IdType id(const IdType3 &item_ijk) const
Passage (i,j,k) => numero.
Integer dimension() const
Dimension de la grille cartésienne sur laquelle s'appuit la numérotation.
IdType nbItem() const
Nb total d'items dans la grille cartésienne (produit du nb d'items dans chaque direction)
IdType nbItemDir(Integer dir) const
Nb d'items dans la grille cartésienne selon la direction dir (< dimension())
const IdType3 & delta3() const
Triplet des offsets dans toutes les directions pour passer aux items suivants dans chacune des direct...
IdType firstId() const
Plus petit identifiant de la numérotation cartésienne de la grille.
Lecteur des fichiers de maillage via la bibliothèque LIMA.