Arcane  v4.1.2.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
CartesianMeshNumberingMngInternal.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* CartesianMeshNumberingMngInternal.h (C) 2000-2025 */
9/* */
10/* Gestionnaire de numérotation de maillage cartesian. La numérotation */
11/* des mailles et des noeuds est assez classique, la numérotation des faces */
12/* est expliquée (entre autres) dans les méthodes 'faceUniqueId()' et */
13/* 'cellFaceUniqueIds()'. */
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#ifndef ARCANE_CARTESIANMESH_INTERNAL_CARTESIANMESHNUMBERINGMNGINTERNAL_H
18#define ARCANE_CARTESIANMESH_INTERNAL_CARTESIANMESHNUMBERINGMNGINTERNAL_H
19
20/*---------------------------------------------------------------------------*/
21/*---------------------------------------------------------------------------*/
22
23#include "arcane/cartesianmesh/internal/ICartesianMeshNumberingMngInternal.h"
24
25#include "arcane/utils/TraceAccessor.h"
26#include "arcane/utils/Vector3.h"
27
28#include "arcane/core/Item.h"
29
30#include <unordered_map>
31
32/*---------------------------------------------------------------------------*/
33/*---------------------------------------------------------------------------*/
34
35namespace Arcane
36{
37
38/*---------------------------------------------------------------------------*/
39/*---------------------------------------------------------------------------*/
40
41class CartesianMeshNumberingMngInternal
42: public TraceAccessor
44{
45 public:
46
47 explicit CartesianMeshNumberingMngInternal(IMesh* mesh);
48
49 public:
50
51 void build() override;
52 void saveInfosInProperties() override;
53 void recreateFromDump() override;
54
56
57 void printStatus() override;
58
59 void prepareLevel(Int32 level) override;
60 void updateFirstLevel() override;
61
62 Int64 firstCellUniqueId(Int32 level) const override;
63 Int64 firstNodeUniqueId(Int32 level) const override;
64 Int64 firstFaceUniqueId(Int32 level) const override;
65
66 CartCoordType globalNbCellsX(Int32 level) const override;
67 CartCoordType globalNbCellsY(Int32 level) const override;
68 CartCoordType globalNbCellsZ(Int32 level) const override;
69
70 CartCoordType globalNbNodesX(Int32 level) const override;
71 CartCoordType globalNbNodesY(Int32 level) const override;
72 CartCoordType globalNbNodesZ(Int32 level) const override;
73
74 CartCoordType globalNbFacesX(Int32 level) const override;
75 CartCoordType globalNbFacesY(Int32 level) const override;
76 CartCoordType globalNbFacesZ(Int32 level) const override;
77
78 CartCoordType globalNbFacesXCartesianView(Int32 level) const override;
79 CartCoordType globalNbFacesYCartesianView(Int32 level) const override;
80 CartCoordType globalNbFacesZCartesianView(Int32 level) const override;
81
82 Int64 nbCellInLevel(Int32 level) const override;
83 Int64 nbNodeInLevel(Int32 level) const override;
84 Int64 nbFaceInLevel(Int32 level) const override;
85
86 Int32 pattern() const override;
87
88 Int32 cellLevel(Int64 uid) const override;
89 Int32 nodeLevel(Int64 uid) const override;
90 Int32 faceLevel(Int64 uid) const override;
91
92 CartCoordType offsetLevelToLevel(CartCoordType coord, Int32 level_from, Int32 level_to) const override;
93 CartCoord3Type offsetLevelToLevel(CartCoord3Type coord, Int32 level_from, Int32 level_to) const override;
94
95 CartCoordType faceOffsetLevelToLevel(CartCoordType coord, Int32 level_from, Int32 level_to) const override;
96
97 CartCoord3Type cellUniqueIdToCoord(Int64 uid, Int32 level) override;
98 CartCoord3Type cellUniqueIdToCoord(Cell cell) override;
99
100 CartCoordType cellUniqueIdToCoordX(Int64 uid, Int32 level) override;
101 CartCoordType cellUniqueIdToCoordX(Cell cell) override;
102
103 CartCoordType cellUniqueIdToCoordY(Int64 uid, Int32 level) override;
104 CartCoordType cellUniqueIdToCoordY(Cell cell) override;
105
106 CartCoordType cellUniqueIdToCoordZ(Int64 uid, Int32 level) override;
107 CartCoordType cellUniqueIdToCoordZ(Cell cell) override;
108
109 CartCoordType nodeUniqueIdToCoordX(Int64 uid, Int32 level) override;
110 CartCoordType nodeUniqueIdToCoordX(Node node) override;
111
112 CartCoordType nodeUniqueIdToCoordY(Int64 uid, Int32 level) override;
113 CartCoordType nodeUniqueIdToCoordY(Node node) override;
114
115 CartCoordType nodeUniqueIdToCoordZ(Int64 uid, Int32 level) override;
116 CartCoordType nodeUniqueIdToCoordZ(Node node) override;
117
118 CartCoordType faceUniqueIdToCoordX(Int64 uid, Int32 level) override;
119 CartCoordType faceUniqueIdToCoordX(Face face) override;
120
121 CartCoordType faceUniqueIdToCoordY(Int64 uid, Int32 level) override;
122 CartCoordType faceUniqueIdToCoordY(Face face) override;
123
124 CartCoordType faceUniqueIdToCoordZ(Int64 uid, Int32 level) override;
125 CartCoordType faceUniqueIdToCoordZ(Face face) override;
126
127 Int64 cellUniqueId(CartCoord3Type cell_coord, Int32 level) override;
128 Int64 cellUniqueId(CartCoord2Type cell_coord, Int32 level) override;
129
130 Int64 nodeUniqueId(CartCoord3Type node_coord, Int32 level) override;
131 Int64 nodeUniqueId(CartCoord2Type node_coord, Int32 level) override;
132
133 Int64 faceUniqueId(CartCoord3Type face_coord, Int32 level) override;
134 Int64 faceUniqueId(CartCoord2Type face_coord, Int32 level) override;
135
136 Int32 nbNodeByCell() override;
137 void cellNodeUniqueIds(CartCoord3Type cell_coord, Int32 level, ArrayView<Int64> uid) override;
138 void cellNodeUniqueIds(CartCoord2Type cell_coord, Int32 level, ArrayView<Int64> uid) override;
139 void cellNodeUniqueIds(Int64 cell_uid, Int32 level, ArrayView<Int64> uid) override;
140 void cellNodeUniqueIds(Cell cell, ArrayView<Int64> uid) override;
141
142 Int32 nbFaceByCell() override;
143 void cellFaceUniqueIds(CartCoord3Type cell_coord, Int32 level, ArrayView<Int64> uid) override;
144 void cellFaceUniqueIds(CartCoord2Type cell_coord, Int32 level, ArrayView<Int64> uid) override;
145 void cellFaceUniqueIds(Int64 cell_uid, Int32 level, ArrayView<Int64> uid) override;
146 void cellFaceUniqueIds(Cell cell, ArrayView<Int64> uid) override;
147
148 void cellUniqueIdsAroundCell(CartCoord3Type cell_coord, Int32 level, ArrayView<Int64> uid) override;
149 void cellUniqueIdsAroundCell(CartCoord2Type cell_coord, Int32 level, ArrayView<Int64> uid) override;
150 void cellUniqueIdsAroundCell(Int64 cell_uid, Int32 level, ArrayView<Int64> uid) override;
151 void cellUniqueIdsAroundCell(Cell cell, ArrayView<Int64> uid) override;
152
153 void cellUniqueIdsAroundNode(CartCoord3Type node_coord, Int32 level, ArrayView<Int64> uid) override;
154 void cellUniqueIdsAroundNode(CartCoord2Type node_coord, Int32 level, ArrayView<Int64> uid) override;
155 void cellUniqueIdsAroundNode(Int64 node_uid, Int32 level, ArrayView<Int64> uid) override;
156 void cellUniqueIdsAroundNode(Node node, ArrayView<Int64> uid) override;
157
158 void setChildNodeCoordinates(Cell parent_cell) override;
159 void setParentNodeCoordinates(Cell parent_cell) override;
160
161 Int64 parentCellUniqueIdOfCell(Int64 uid, Int32 level, bool do_fatal) override;
162 Int64 parentCellUniqueIdOfCell(Cell cell, bool do_fatal) override;
163
164 Int64 childCellUniqueIdOfCell(Cell cell, CartCoord3Type child_coord_in_parent) override;
165 Int64 childCellUniqueIdOfCell(Cell cell, CartCoord2Type child_coord_in_parent) override;
166 Int64 childCellUniqueIdOfCell(Cell cell, Int32 child_index_in_parent) override;
167
168 Cell childCellOfCell(Cell cell, CartCoord3Type child_coord_in_parent) override;
169 Cell childCellOfCell(Cell cell, CartCoord2Type child_coord_in_parent) override;
170
171 Int64 parentNodeUniqueIdOfNode(Int64 uid, Int32 level, bool do_fatal) override;
172 Int64 parentNodeUniqueIdOfNode(Node node, bool do_fatal) override;
173
174 Int64 childNodeUniqueIdOfNode(Int64 uid, Int32 level) override;
175 Int64 childNodeUniqueIdOfNode(Node node) override;
176
177 Int64 parentFaceUniqueIdOfFace(Int64 uid, Int32 level, bool do_fatal) override;
178 Int64 parentFaceUniqueIdOfFace(Face face, bool do_fatal) override;
179
180 Int64 childFaceUniqueIdOfFace(Int64 uid, Int32 level, Int32 child_index_in_parent) override;
181 Int64 childFaceUniqueIdOfFace(Face face, Int32 child_index_in_parent) override;
182
183 private:
184
194 Int64x3 _face3DNumberingThreeParts(Int32 level) const;
195
196 static void _pushFront(UniqueArray<Int64>& array, Int64 elem);
197
198 private:
199
200 IMesh* m_mesh;
201
202 Ref<Properties> m_properties;
203
204 Integer m_dimension;
205 Int32 m_pattern;
206
207 UniqueArray<Int32> m_p_to_l_level;
208 Int32 m_max_level;
209 Int32 m_min_level;
210
211 Int64 m_latest_cell_uid;
212 UniqueArray<Int64> m_first_cell_uid_level;
213
214 Int64 m_latest_node_uid;
215 UniqueArray<Int64> m_first_node_uid_level;
216
217 Int64 m_latest_face_uid;
218 UniqueArray<Int64> m_first_face_uid_level;
219
220 CartCoord3Type m_nb_cell_ground;
221
222 // Partie conversion numérotation d'origine <-> nouvelle numérotation (face).
223 bool m_converting_numbering_face;
224 Int32 m_ori_level;
225 std::unordered_map<Int64, Int64> m_face_ori_numbering_to_new;
226 std::unordered_map<Int64, Int64> m_face_new_numbering_to_ori;
227};
228
229/*---------------------------------------------------------------------------*/
230/*---------------------------------------------------------------------------*/
231
232} // End namespace Arcane
233
234/*---------------------------------------------------------------------------*/
235/*---------------------------------------------------------------------------*/
236
237#endif //ARCANE_CARTESIANMESH_CARTESIANMESHNUMBERINGMNGINTERNAL_H
Vue modifiable d'un tableau d'un type T.
void cellNodeUniqueIds(CartCoord3Type cell_coord, Int32 level, ArrayView< Int64 > uid) override
Méthode permettant de récupérer les uniqueIds des noeuds d'une maille à partir de ses coordonnées.
Int32 pattern() const override
Méthode permettant de récupérer le pattern de raffinement utilisé dans chaque maille....
Int64 childNodeUniqueIdOfNode(Int64 uid, Int32 level) override
Méthode permettant de récupérer l'uniqueId d'un noeud enfant d'un noeud parent.
Int64x3 _face3DNumberingThreeParts(Int32 level) const
Méthode permettant de récupérer le nombre de faces des trois parties de la numérotation.
void printStatus() override
Méthode permettant de décrire l'état de l'objet.
CartCoordType globalNbNodesX(Int32 level) const override
Méthode permettant de récupérer le nombre de noeuds global en X d'un niveau.
Int64 nbNodeInLevel(Int32 level) const override
Méthode permettant de récupérer le nombre de noeuds total dans un niveau.
Int64 nbCellInLevel(Int32 level) const override
Méthode permettant de récupérer le nombre de mailles total dans un niveau.
Int64 childFaceUniqueIdOfFace(Int64 uid, Int32 level, Int32 child_index_in_parent) override
Méthode permettant de récupérer l'uniqueId d'une face enfant d'une face parent à partir de l'index de...
CartCoordType cellUniqueIdToCoordX(Int64 uid, Int32 level) override
Méthode permettant de récupérer la coordonnée en X d'une maille grâce à son uniqueId.
CartCoordType cellUniqueIdToCoordZ(Int64 uid, Int32 level) override
Méthode permettant de récupérer la coordonnée en Z d'une maille grâce à son uniqueId.
void setChildNodeCoordinates(Cell parent_cell) override
Méthode permettant de définir les coordonnées spatiales des noeuds des mailles enfants d'une maille p...
CartCoordType nodeUniqueIdToCoordZ(Int64 uid, Int32 level) override
Méthode permettant de récupérer la coordonnée en Z d'un noeud grâce à son uniqueId.
Int64 parentFaceUniqueIdOfFace(Int64 uid, Int32 level, bool do_fatal) override
Méthode permettant de récupérer l'uniqueId du parent d'une face.
CartCoordType globalNbFacesYCartesianView(Int32 level) const override
Méthode permettant de récupérer la taille de la vue "grille cartésienne" contenant les faces.
CartCoordType globalNbFacesY(Int32 level) const override
Méthode permettant de récupérer le nombre de faces global en Y d'un niveau.
Int64 nodeUniqueId(CartCoord3Type node_coord, Int32 level) override
Méthode permettant de récupérer l'uniqueId d'un noeud à partir de sa position et de son niveau.
CartCoordType globalNbFacesZCartesianView(Int32 level) const override
Méthode permettant de récupérer la taille de la vue "grille cartésienne" contenant les faces.
void prepareLevel(Int32 level) override
Méthode permettant de préparer un nouveau niveau.
Int64 firstFaceUniqueId(Int32 level) const override
Méthode permettant de récupérer le premier unique id utilisé par les faces d'un niveau....
CartCoordType globalNbCellsZ(Int32 level) const override
Méthode permettant de récupérer le nombre de mailles global en Z d'un niveau.
Int64 cellUniqueId(CartCoord3Type cell_coord, Int32 level) override
Méthode permettant de récupérer l'uniqueId d'une maille à partir de sa position et de son niveau.
Int64 nbFaceInLevel(Int32 level) const override
Méthode permettant de récupérer le nombre de faces total dans un niveau.
CartCoordType globalNbCellsX(Int32 level) const override
Méthode permettant de récupérer le nombre de mailles global en X d'un niveau.
Int32 faceLevel(Int64 uid) const override
Méthode permettant de récupérer le niveau d'une face avec son uid.
void updateFirstLevel() override
Méthode permettant de mettre à jour le premier niveau.
Int64 childCellUniqueIdOfCell(Cell cell, CartCoord3Type child_coord_in_parent) override
Méthode permettant de récupérer l'uniqueId d'une maille enfant d'une maille parent à partir de la pos...
CartCoordType globalNbFacesZ(Int32 level) const override
Méthode permettant de récupérer le nombre de faces global en Z d'un niveau.
void cellFaceUniqueIds(CartCoord3Type cell_coord, Int32 level, ArrayView< Int64 > uid) override
Méthode permettant de récupérer les uniqueIds des faces d'une maille à partir de ses coordonnées.
CartCoordType globalNbFacesXCartesianView(Int32 level) const override
Méthode permettant de récupérer la taille de la vue "grille cartésienne" contenant les faces.
CartCoordType cellUniqueIdToCoordY(Int64 uid, Int32 level) override
Méthode permettant de récupérer la coordonnée en Y d'une maille grâce à son uniqueId.
Int64 firstCellUniqueId(Int32 level) const override
Méthode permettant de récupérer le premier unique id utilisé par les mailles d'un niveau....
Int64 parentNodeUniqueIdOfNode(Int64 uid, Int32 level, bool do_fatal) override
Méthode permettant de récupérer l'uniqueId du parent d'un noeud.
void renumberingFacesLevel0FromOriginalArcaneNumbering() override
Méthode permettant de renuméroter les faces du niveau 0.
CartCoord3Type cellUniqueIdToCoord(Int64 uid, Int32 level) override
Méthode permettant de récupérer les coordonnées d'une maille grâce à son uniqueId.
Int32 nbNodeByCell() override
Méthode permettant de récupérer le nombre de noeuds dans une maille.
Int32 cellLevel(Int64 uid) const override
Méthode permettant de récupérer le niveau d'une maille avec son uid.
CartCoordType faceUniqueIdToCoordX(Int64 uid, Int32 level) override
Méthode permettant de récupérer la coordonnée en X d'une face grâce à son uniqueId.
Int32 nbFaceByCell() override
Méthode permettant de récupérer le nombre de faces dans une maille.
CartCoordType offsetLevelToLevel(CartCoordType coord, Int32 level_from, Int32 level_to) const override
Méthode permettant d'obtenir la position du premier noeud/maille fille à partir de la position du noe...
CartCoordType globalNbCellsY(Int32 level) const override
Méthode permettant de récupérer le nombre de mailles global en Y d'un niveau.
CartCoordType globalNbFacesX(Int32 level) const override
Méthode permettant de récupérer le nombre de faces global en X d'un niveau.
CartCoordType faceUniqueIdToCoordZ(Int64 uid, Int32 level) override
Méthode permettant de récupérer la coordonnée en Z d'une face grâce à son uniqueId.
void cellUniqueIdsAroundCell(CartCoord3Type cell_coord, Int32 level, ArrayView< Int64 > uid) override
Méthode permettant de récupérer les uniqueIds des mailles autour d'une maille.
CartCoordType nodeUniqueIdToCoordX(Int64 uid, Int32 level) override
Méthode permettant de récupérer la coordonnée en X d'un noeud grâce à son uniqueId.
CartCoordType nodeUniqueIdToCoordY(Int64 uid, Int32 level) override
Méthode permettant de récupérer la coordonnée en Y d'un noeud grâce à son uniqueId.
void cellUniqueIdsAroundNode(CartCoord3Type node_coord, Int32 level, ArrayView< Int64 > uid) override
Méthode permettant de récupérer les uniqueIds des mailles autour d'un noeud.
void setParentNodeCoordinates(Cell parent_cell) override
Méthode permettant de définir les coordonnées spatiales des noeuds d'une maille parent....
Int64 firstNodeUniqueId(Int32 level) const override
Méthode permettant de récupérer le premier unique id utilisé par les noeuds d'un niveau....
Cell childCellOfCell(Cell cell, CartCoord3Type child_coord_in_parent) override
Méthode permettant de récupérer une maille enfant d'une maille parent à partir de la position de la m...
Int64 faceUniqueId(CartCoord3Type face_coord, Int32 level) override
Méthode permettant de récupérer l'uniqueId d'une face à partir de sa position et de son niveau.
CartCoordType faceOffsetLevelToLevel(CartCoordType coord, Int32 level_from, Int32 level_to) const override
Méthode permettant d'obtenir la position de la première face enfant à partir de la position de la fac...
CartCoordType faceUniqueIdToCoordY(Int64 uid, Int32 level) override
Méthode permettant de récupérer la coordonnée en Y d'une face grâce à son uniqueId.
CartCoordType globalNbNodesY(Int32 level) const override
Méthode permettant de récupérer le nombre de noeuds global en Y d'un niveau.
Int32 nodeLevel(Int64 uid) const override
Méthode permettant de récupérer le niveau d'un noeud avec son uid.
CartCoordType globalNbNodesZ(Int32 level) const override
Méthode permettant de récupérer le nombre de noeuds global en Z d'un niveau.
Int64 parentCellUniqueIdOfCell(Int64 uid, Int32 level, bool do_fatal) override
Méthode permettant de récupérer l'uniqueId du parent d'une maille.
Maille d'un maillage.
Definition Item.h:1214
Face d'une maille.
Definition Item.h:964
Interface de gestionnaire de numérotation pour maillage cartesian.
Noeud d'un maillage.
Definition Item.h:582
Référence à une instance.
TraceAccessor(ITraceMng *m)
Construit un accesseur via le gestionnaire de trace m.
Vecteur 1D de données avec sémantique par valeur (style STL).
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
std::int64_t Int64
Type entier signé sur 64 bits.
Int32 Integer
Type représentant un entier.
std::int32_t Int32
Type entier signé sur 32 bits.