Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
src/arcane/cartesianmesh/CellDirectionMng.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 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/* CellDirectionMng.cc (C) 2000-2023 */
9/* */
10/* Infos sur les mailles d'une direction X Y ou Z d'un maillage structuré. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CARTESIANMESH_CELLDIRECTIONMNG_H
13#define ARCANE_CARTESIANMESH_CELLDIRECTIONMNG_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/ArcaneTypes.h"
18
19#include "arcane/Item.h"
20#include "arcane/ItemEnumerator.h"
21#include "arcane/IndexedItemConnectivityView.h"
22
23#include "arcane/cartesianmesh/CartesianMeshGlobal.h"
24#include "arcane/cartesianmesh/CartesianItemDirectionInfo.h"
25
26/*---------------------------------------------------------------------------*/
27/*---------------------------------------------------------------------------*/
28
29namespace Arcane
30{
31
32/*---------------------------------------------------------------------------*/
33/*---------------------------------------------------------------------------*/
34/*!
35 * \ingroup ArcaneCartesianMesh
36 * \brief Maille avant et après une maille suivant une direction.
37 *
38 * Les instances de cette classe sont temporaires et construites via
39 * CellDirectionMng::cell().
40 */
41class ARCANE_CARTESIANMESH_EXPORT DirCell
42{
43 public:
44
45 DirCell(Cell n, Cell p)
46 : m_previous(p)
47 , m_next(n)
48 {}
49
50 public:
51
52 //! Maille avant
53 Cell previous() const { return m_previous; }
54 //! Maille avant
55 CellLocalId previousId() const { return CellLocalId(m_previous.localId()); }
56 //! Maille après
57 Cell next() const { return m_next; }
58 //! Maille après
59 CellLocalId nextId() const { return CellLocalId(m_next.localId()); }
60
61 private:
62
63 Cell m_previous;
64 Cell m_next;
65};
66
67/*---------------------------------------------------------------------------*/
68/*---------------------------------------------------------------------------*/
69/*!
70 * \ingroup ArcaneCartesianMesh
71 * \brief Maille avant et après une maille suivant une direction.
72 *
73 * Les instances de cette classe sont temporaires et construites via
74 * CellDirectionMng::cellLocalId().
75 */
76class ARCANE_CARTESIANMESH_EXPORT DirCellLocalId
77{
78 public:
79
80 constexpr ARCCORE_HOST_DEVICE DirCellLocalId(CellLocalId n, CellLocalId p)
81 : m_previous(p)
82 , m_next(n)
83 {}
84
85 public:
86
87 //! Maille avant
88 constexpr ARCCORE_HOST_DEVICE CellLocalId previous() const { return m_previous; }
89 //! Maille avant
90 constexpr ARCCORE_HOST_DEVICE CellLocalId previousId() const { return m_previous; }
91 //! Maille après
92 constexpr ARCCORE_HOST_DEVICE CellLocalId next() const { return m_next; }
93 //! Maille après
94 constexpr ARCCORE_HOST_DEVICE CellLocalId nextId() const { return m_next; }
95
96 private:
97
98 CellLocalId m_previous;
99 CellLocalId m_next;
100};
101
102/*---------------------------------------------------------------------------*/
103/*---------------------------------------------------------------------------*/
104/*!
105 * \ingroup ArcaneCartesianMesh
106 * \brief Maille avec info directionnelle des noeuds.
107 *
108 * Les instances de cette classe sont temporaires et construites via
109 * CellDirectionMng::cellNode().
110 */
111class ARCANE_CARTESIANMESH_EXPORT DirCellNode
112{
113 friend CellDirectionMng;
114 using Int8 = std::int8_t;
115
116 private:
117
118 DirCellNode(Cell c, const Int8* nodes_indirection)
119 : m_cell(c)
120 , m_nodes_indirection(nodes_indirection)
121 {}
122
123 public:
124
125 //! Maille associée
126 Cell cell() const { return m_cell; }
127 //! Maille associée
128 CellLocalId cellId() const { return CellLocalId(m_cell.localId()); }
129
130 //! Noeud devant à gauche dans la direction
131 Node nextLeft() const { return m_cell.node(m_nodes_indirection[CNP_NextLeft]); }
132 //! Noeud devant à droite dans la direction
133 Node nextRight() const { return m_cell.node(m_nodes_indirection[CNP_NextRight]); }
134 //! Noeud derrière à droite dans la direction
135 Node previousRight() const { return m_cell.node(m_nodes_indirection[CNP_PreviousRight]); }
136 //! Noeud derrière à gauche dans la direction
137 Node previousLeft() const { return m_cell.node(m_nodes_indirection[CNP_PreviousLeft]); }
138
139 //! Noeud devant à gauche dans la direction
140 NodeLocalId nextLeftId() const { return NodeLocalId(m_cell.nodeId(m_nodes_indirection[CNP_NextLeft])); }
141 //! Noeud devant à droite dans la direction
142 NodeLocalId nextRightId() const { return NodeLocalId(m_cell.nodeId(m_nodes_indirection[CNP_NextRight])); }
143 //! Noeud derrière à droite dans la direction
144 NodeLocalId previousRightId() const { return NodeLocalId(m_cell.nodeId(m_nodes_indirection[CNP_PreviousRight])); }
145 //! Noeud derrière à gauche dans la direction
146 NodeLocalId previousLeftId() const { return NodeLocalId(m_cell.nodeId(m_nodes_indirection[CNP_PreviousLeft])); }
147
148 //! Noeud devant à gauche dans la direction
149 Node topNextLeft() const { return m_cell.node(m_nodes_indirection[CNP_TopNextLeft]); }
150 //! Noeud devant à droite dans la direction
151 Node topNextRight() const { return m_cell.node(m_nodes_indirection[CNP_TopNextRight]); }
152 //! Noeud derrière à droite dans la direction
153 Node topPreviousRight() const { return m_cell.node(m_nodes_indirection[CNP_TopPreviousRight]); }
154 //! Noeud derrière à gauche dans la direction
155 Node topPreviousLeft() const { return m_cell.node(m_nodes_indirection[CNP_TopPreviousLeft]); }
156
157 //! Noeud devant à gauche dans la direction
158 NodeLocalId topNextLeftId() const { return NodeLocalId(m_cell.nodeId(m_nodes_indirection[CNP_TopNextLeft])); }
159 //! Noeud devant à droite dans la direction
160 NodeLocalId topNextRightId() const { return NodeLocalId(m_cell.nodeId(m_nodes_indirection[CNP_TopNextRight])); }
161 //! Noeud derrière à droite dans la direction
162 NodeLocalId topPreviousRightId() const { return NodeLocalId(m_cell.nodeId(m_nodes_indirection[CNP_TopPreviousRight])); }
163 //! Noeud derrière à gauche dans la direction
164 NodeLocalId topPreviousLeftId() const { return NodeLocalId(m_cell.nodeId(m_nodes_indirection[CNP_TopPreviousLeft])); }
165
166 private:
167
168 Cell m_cell;
169 const Int8* m_nodes_indirection;
170};
171
172/*---------------------------------------------------------------------------*/
173/*---------------------------------------------------------------------------*/
174/*!
175 * \ingroup ArcaneCartesianMesh
176 * \brief Maille avec info directionnelle des noeuds.
177 *
178 * Les instances de cette classe sont temporaires et construites via
179 * CellDirectionMng::cellNode().
180 */
181class ARCANE_CARTESIANMESH_EXPORT DirCellNodeLocalId
182{
183 friend CellDirectionMng;
184 using Int8 = std::int8_t;
185
186 private:
187
188 ARCCORE_HOST_DEVICE DirCellNodeLocalId(CellLocalId c, const Int8* nodes_indirection, IndexedCellNodeConnectivityView view)
189 : m_cell(c)
190 , m_nodes_indirection(nodes_indirection)
191 , m_view(view)
192 {}
193
194 public:
195
196 //! Maille associée
197 ARCCORE_HOST_DEVICE CellLocalId cellId() const { return m_cell; }
198
199 //! Noeud devant à gauche dans la direction
200 ARCCORE_HOST_DEVICE NodeLocalId nextLeftId() const { return m_view.nodeId(m_cell, m_nodes_indirection[CNP_NextLeft]); }
201 //! Noeud devant à droite dans la direction
202 ARCCORE_HOST_DEVICE NodeLocalId nextRightId() const { return m_view.nodeId(m_cell, m_nodes_indirection[CNP_NextRight]); }
203 //! Noeud derrière à droite dans la direction
204 ARCCORE_HOST_DEVICE NodeLocalId previousRightId() const { return m_view.nodeId(m_cell, m_nodes_indirection[CNP_PreviousRight]); }
205 //! Noeud derrière à gauche dans la direction
206 ARCCORE_HOST_DEVICE NodeLocalId previousLeftId() const { return m_view.nodeId(m_cell, m_nodes_indirection[CNP_PreviousLeft]); }
207
208 //! Noeud devant à gauche dans la direction
209 ARCCORE_HOST_DEVICE NodeLocalId topNextLeftId() const { return m_view.nodeId(m_cell, m_nodes_indirection[CNP_TopNextLeft]); }
210 //! Noeud devant à droite dans la direction
211 ARCCORE_HOST_DEVICE NodeLocalId topNextRightId() const { return m_view.nodeId(m_cell, m_nodes_indirection[CNP_TopNextRight]); }
212 //! Noeud derrière à droite dans la direction
213 ARCCORE_HOST_DEVICE NodeLocalId topPreviousRightId() const { return m_view.nodeId(m_cell, m_nodes_indirection[CNP_TopPreviousRight]); }
214 //! Noeud derrière à gauche dans la direction
215 ARCCORE_HOST_DEVICE NodeLocalId topPreviousLeftId() const { return m_view.nodeId(m_cell, m_nodes_indirection[CNP_TopPreviousLeft]); }
216
217 private:
218
219 CellLocalId m_cell;
220 const Int8* m_nodes_indirection;
222};
223
224/*---------------------------------------------------------------------------*/
225/*---------------------------------------------------------------------------*/
226/*!
227 * \ingroup ArcaneCartesianMesh
228 * \brief Maille avec info directionnelle des faces.
229 *
230 * Les instances de cette classe sont temporaires et construites via
231 * CellDirectionMng::cellFace().
232 */
233class ARCANE_CARTESIANMESH_EXPORT DirCellFace
234{
235 friend CellDirectionMng;
236
237 private:
238
239 DirCellFace(Cell c, Int32 next_face_index, Int32 previous_face_index)
240 : m_cell(c)
241 , m_next_face_index(next_face_index)
242 , m_previous_face_index(previous_face_index)
243 {
244 }
245
246 public:
247
248 //! Maille associée
249 Cell cell() const { return m_cell; }
250 //! Maille associée
251 CellLocalId cellId() const { return m_cell.itemLocalId(); }
252
253 //! Face connectée à la maille d'après la maille courante dans la direction
254 Face next() const { return m_cell.face(m_next_face_index); }
255 //! Face connectée à la maille d'après la maille courante dans la direction
256 FaceLocalId nextId() const { return m_cell.faceId(m_next_face_index); }
257
258 //! Face connectée à la maille d'avant la maille courante dans la direction
259 Face previous() const { return m_cell.face(m_previous_face_index); }
260 //! Face connectée à la maille d'avant la maille courante dans la direction
261 FaceLocalId previousId() const { return m_cell.faceId(m_previous_face_index); }
262
263 //! Indice locale dans la maille de la face next()
264 Int32 nextLocalIndex() const { return m_next_face_index; }
265
266 //! Indice locale dans la maille de la face previous()
267 Int32 previousLocalIndex() const { return m_previous_face_index; }
268
269 private:
270
271 Cell m_cell;
272 Int32 m_next_face_index;
273 Int32 m_previous_face_index;
274};
275
276/*---------------------------------------------------------------------------*/
277/*---------------------------------------------------------------------------*/
278/*!
279 * \ingroup ArcaneCartesianMesh
280 * \brief Maille avec info directionnelle des faces.
281 *
282 * Les instances de cette classe sont temporaires et construites via
283 * CellDirectionMng::cellFace().
284 */
285class ARCANE_CARTESIANMESH_EXPORT DirCellFaceLocalId
286{
287 friend CellDirectionMng;
288
289 private:
290
291 ARCCORE_HOST_DEVICE DirCellFaceLocalId(CellLocalId c, Int32 next_face_index,
292 Int32 previous_face_index,
294 : m_cell(c)
295 , m_next_face_index(next_face_index)
296 , m_previous_face_index(previous_face_index)
297 , m_view(view)
298 {
299 }
300
301 public:
302
303 //! Maille associée
304 ARCCORE_HOST_DEVICE CellLocalId cell() const { return m_cell; }
305 //! Maille associée
306 ARCCORE_HOST_DEVICE CellLocalId cellId() const { return m_cell; }
307
308 //! Face connectée à la maille d'après la maille courante dans la direction
309 ARCCORE_HOST_DEVICE FaceLocalId next() const { return m_view.faceId(m_cell, m_next_face_index); }
310 //! Face connectée à la maille d'après la maille courante dans la direction
311 ARCCORE_HOST_DEVICE FaceLocalId nextId() const { return m_view.faceId(m_cell, m_next_face_index); }
312
313 //! Face connectée à la maille d'avant la maille courante dans la direction
314 ARCCORE_HOST_DEVICE FaceLocalId previous() const { return m_view.faceId(m_cell, m_previous_face_index); }
315 //! Face connectée à la maille d'avant la maille courante dans la direction
316 ARCCORE_HOST_DEVICE FaceLocalId previousId() const { return m_view.faceId(m_cell, m_previous_face_index); }
317
318 //! Indice locale dans la maille de la face next()
319 ARCCORE_HOST_DEVICE Int32 nextLocalIndex() const { return m_next_face_index; }
320
321 //! Indice locale dans la maille de la face previous()
322 ARCCORE_HOST_DEVICE Int32 previousLocalIndex() const { return m_previous_face_index; }
323
324 private:
325
326 CellLocalId m_cell;
327 Int32 m_next_face_index;
328 Int32 m_previous_face_index;
330};
331
332/*---------------------------------------------------------------------------*/
333/*---------------------------------------------------------------------------*/
334/*!
335 * \ingroup ArcaneCartesianMesh
336 * \brief Infos sur les mailles d'une direction spécifique X,Y ou Z d'un maillage structuré.
337 *
338 * Cette classe contient les informations pour retourner la liste
339 * des mailles dans une direction donnée et pour ces mailles
340 * connaitre la maille avant et après dans cette direction.
341 *
342 * Les instances de cette classe sont gérées par un ICartesianMesh et sont
343 * temporaires. Il ne faut pas les conserver d'une itération à l'autre
344 * car elles sont invalidées si le maillage change.
345 *
346 * Cette classe à une sémantique par référence.
347 *
348 * Par exemple, pour itérer sur les mailles de la direction X:
349
350 \code
351 * ICartesianMesh* cartesian_mesh = ...;
352 * CellDirectionMng cdm(cartesian_mesh->cellDirection(MD_DirX));
353 * ENUMERATE_CELL(icell,cdm.allCells()){
354 * DirCell dir_cell(cdm[icell]);
355 * Cell next = dir_cell.next();
356 * Cell prev = dir_cell.previous();
357 * }
358 \endcode
359 *
360 */
361class ARCANE_CARTESIANMESH_EXPORT CellDirectionMng
362{
363 friend CartesianMeshImpl;
364 friend CartesianMeshPatch;
365 class Impl;
366 static const int MAX_NB_NODE = 8;
367 using Int8 = std::int8_t;
368
369 private:
370
372
373 public:
374
375 /*!
376 * \brief Créé une instance vide.
377 *
378 * L'instance n'est pas valide tant que _internalInit() n'a pas été appelé.
379 */
381
382 public:
383
384 //! Maille direction correspondant à la maille \a c.
386 {
387 return _cell(c.localId());
388 }
389 //! Maille direction correspondant à la maille \a c.
391 {
392 return _cell(c.localId());
393 }
394 //! Maille direction correspondant à la maille \a c.
396 {
397 return _cell(c.localId());
398 }
399 //! Maille direction correspondant à la maille \a c.
400 ARCCORE_HOST_DEVICE DirCellLocalId dirCellId(CellLocalId c) const
401 {
402 return _dirCellId(c);
403 }
404
405 //! Maille avec infos directionnelles aux noeuds correspondant à la maille \a c.
407 {
408 return DirCellNode(c, m_nodes_indirection);
409 }
410
411 //! Maille avec infos directionnelles aux noeuds correspondant à la maille \a c.
413 {
414 return DirCellNode(m_cells[c.localId()], m_nodes_indirection);
415 }
416
417 //! Maille avec infos directionnelles aux noeuds correspondant à la maille \a c.
419 {
420 return DirCellNode(m_cells[c.localId()], m_nodes_indirection);
421 }
422
423 //! Maille avec infos directionnelles aux noeuds correspondant à la maille \a c.
424 ARCCORE_HOST_DEVICE DirCellNodeLocalId dirCellNodeId(CellLocalId c) const
425 {
426 return DirCellNodeLocalId(c, m_nodes_indirection, m_cell_node_view);
427 }
428
429 //! Maille avec infos directionnelles aux faces correspondant à la maille \a c.
431 {
432 return DirCellFace(c, m_next_face_index, m_previous_face_index);
433 }
434 //! Maille avec infos directionnelles aux faces correspondant à la maille \a c.
436 {
437 return DirCellFace(m_cells[c.localId()], m_next_face_index, m_previous_face_index);
438 }
439
440 //! Maille avec infos directionnelles aux faces correspondant à la maille \a c.
441 ARCCORE_HOST_DEVICE DirCellFaceLocalId dirCellFaceId(CellLocalId c) const
442 {
443 return DirCellFaceLocalId(c, m_next_face_index, m_previous_face_index, m_cell_face_view);
444 }
445
446 //! Groupe de toutes les mailles dans la direction.
447 CellGroup allCells() const;
448
449 /*!
450 * \brief Groupe de toutes les mailles internes dans la direction.
451 *
452 * Une maille est considérée comme interne si sa maille
453 * avant ou après n'est pas nulle.
454 */
455
456 CellGroup innerCells() const;
457 /*!
458 * \brief Groupe de toutes les mailles externes dans la direction.
459 *
460 * Une maille est considérée comme externe si sa maille
461 * avant ou après est nulle.
462 */
463 CellGroup outerCells() const;
464
465 //! Maille direction correspondant à la maille \a c.
467 {
468 return _cell(c.localId());
469 }
470
471 //! Maille direction correspondant à la maille \a c.
473 {
474 return _cell(c.localId());
475 }
476
477 //! Maille direction correspondant à l'itérateur de la maille \a icell.
479 {
480 return _cell(icell.itemLocalId());
481 }
482
483 /*!
484 * \brief Nombre global de mailles dans cette direction.
485 *
486 * \note La valeur retournée n'est valide que si le
487 * maillage a été créé avec un générateur spécifique, tel
488 * le SodMeshGenerator ou le CartesianMeshGenerator. Si ce n'est
489 * pas le cas, la valeur retournée vaut (-1)
490 */
491 Int64 globalNbCell() const;
492
493 /*!
494 * \brief Nombre de mailles propres dans cette direction.
495 *
496 * \note La valeur retournée n'est valide que si le
497 * maillage a été créé avec un générateur spécifique, tel
498 * le SodMeshGenerator ou le CartesianMeshGenerator. Si ce n'est
499 * pas le cas, la valeur retournée vaut (-1)
500 */
501 Int32 ownNbCell() const;
502
503 /*!
504 * \brief Offset dans cette direction du sous-domaine.
505 *
506 * En supposant que le maillage cartésien global est découpé en
507 * plusieurs sous-domaines rectangulaires qui forment une grille,
508 * cette méthode retourne la position dans cette grille de ce sous-domaine
509 * pour cette direction.
510 *
511 * \warning L'utilisation de cette méthode suppose que chaque
512 * sous-domaine est parallélépipédique (en 3D) ou rectangulaire (en 2D)
513 * ce qui n'est pas forcément le cas, notamment avec des mécanismes
514 * d'équilibrage de charge par migration de maille.
515 *
516 * \note La valeur retournée n'est valide que si le
517 * maillage a été créé avec un générateur spécifique, tel que
518 * le CartesianMeshGenerator. Si ce n'est pas le cas,
519 * la valeur retournée vaut (-1)
520 */
521 Int32 subDomainOffset() const;
522
523 /*!
524 * \brief Offset dans cette direction de la première maille propre de ce sous-domaine.
525 *
526 * En supposant que le maillage cartésien global est découpé en
527 * plusieurs sous-domaines rectangulaires qui forment une grille,
528 * cette méthode retourne la position dans cette grille de la première
529 * maille propre de ce sous-domaine pour cette direction.
530 *
531 * \warning L'utilisation de cette méthode suppose que chaque
532 * sous-domaine est parallélépipédique (en 3D) ou rectangulaire (en 2D)
533 * ce qui n'est pas forcément le cas, notamment avec des mécanismes
534 * d'équilibrage de charge par migration de maille.
535 *
536 * \note La valeur retournée n'est valide que si le
537 * maillage a été créé avec un générateur spécifique, tel que
538 * le CartesianMeshGenerator. Si ce n'est pas le cas,
539 * la valeur retournée vaut (-1)
540 */
541 Int64 ownCellOffset() const;
542
543 private:
544
545 //! Maille direction correspondant à la maille de numéro local \a local_id
546 DirCell _cell(Int32 local_id) const
547 {
548 ItemDirectionInfo d = m_infos_view[local_id];
549 return DirCell(m_cells[d.m_next_lid], m_cells[d.m_previous_lid]);
550 }
551
552 //! Maille direction correspondant à la maille de numéro local \a local_id
553 ARCCORE_HOST_DEVICE DirCellLocalId _dirCellId(Int32 local_id) const
554 {
555 ItemDirectionInfo d = m_infos_view[local_id];
556 return DirCellLocalId(CellLocalId(d.m_next_lid), CellLocalId(d.m_previous_lid));
557 }
558
559 void setNodesIndirection(ConstArrayView<Int8> nodes_indirection);
560
561 protected:
562
563 /*!
564 * \internal
565 * \brief Usage interne à Arcane. Calcul les entités internes et externes.
566 * Suppose que init() a été appelé.
567 */
568 void _internalComputeInnerAndOuterItems(const ItemGroup& items);
569
570 /*!
571 * \internal
572 * Initialise l'instance.
573 */
574 void _internalInit(ICartesianMesh* cm, eMeshDirection dir, Integer patch_index);
575
576 /*!
577 * \internal
578 * Détruit les ressources associées à l'instance.
579 */
580 void _internalDestroy();
581
582 /*!
583 * \internal
584 * Positionne les indices locaux de la face vers la maille d'après et d'avant.
585 */
586 void _internalSetLocalFaceIndex(Int32 next_index, Int32 previous_index)
587 {
588 m_next_face_index = next_index;
589 m_previous_face_index = previous_index;
590 }
591
592 /*!
593 * \brief Redimensionne le conteneur contenant les \a ItemDirectionInfo.
594 *
595 * Cela invalide les instances courantes de CellDirectionMng.
596 */
597 void _internalResizeInfos(Int32 new_size);
598
599 void _internalSetOffsetAndNbCellInfos(Int64 global_nb_cell, Int32 own_nb_cell,
600 Int32 sub_domain_offset, Int64 own_cell_offset);
601
602 public:
603
604 //! Valeur de la direction
606 {
607 return m_direction;
608 }
609
610 private:
611
612 SmallSpan<ItemDirectionInfo> m_infos_view;
613 CellInfoListView m_cells;
614 eMeshDirection m_direction;
615 Int32 m_next_face_index;
616 Int32 m_previous_face_index;
617 Int8 m_nodes_indirection[MAX_NB_NODE];
618 Impl* m_p = nullptr;
619 IndexedCellNodeConnectivityView m_cell_node_view;
620 IndexedCellFaceConnectivityView m_cell_face_view;
621};
622
623/*---------------------------------------------------------------------------*/
624/*---------------------------------------------------------------------------*/
625
626} // End namespace Arcane
627
628/*---------------------------------------------------------------------------*/
629/*---------------------------------------------------------------------------*/
630
631#endif
Infos spécifiques à un maillage cartésien.
Infos sur les mailles d'une direction spécifique X,Y ou Z d'un maillage structuré.
eMeshDirection direction() const
Valeur de la direction.
__host__ __device__ DirCellNodeLocalId dirCellNodeId(CellLocalId c) const
Maille avec infos directionnelles aux noeuds correspondant à la maille c.
DirCellFace cellFace(Cell c) const
Maille avec infos directionnelles aux faces correspondant à la maille c.
DirCell cell(CellLocalId c) const
Maille direction correspondant à la maille c.
DirCellFace cellFace(CellLocalId c) const
Maille avec infos directionnelles aux faces correspondant à la maille c.
DirCellNode cellNode(Cell c) const
Maille avec infos directionnelles aux noeuds correspondant à la maille c.
DirCell dirCell(CellLocalId c) const
Maille direction correspondant à la maille c.
DirCell cell(Cell c) const
Maille direction correspondant à la maille c.
DirCellNode cellNode(CellLocalId c) const
Maille avec infos directionnelles aux noeuds correspondant à la maille c.
DirCellNode dirCellNode(CellLocalId c) const
Maille avec infos directionnelles aux noeuds correspondant à la maille c.
DirCell operator[](CellEnumerator icell) const
Maille direction correspondant à l'itérateur de la maille icell.
DirCell operator[](CellLocalId c) const
Maille direction correspondant à la maille c.
__host__ __device__ DirCellFaceLocalId dirCellFaceId(CellLocalId c) const
Maille avec infos directionnelles aux faces correspondant à la maille c.
DirCell operator[](Cell c) const
Maille direction correspondant à la maille c.
__host__ __device__ DirCellLocalId dirCellId(CellLocalId c) const
Maille direction correspondant à la maille c.
Vue sur les informations des mailles.
Maille d'un maillage.
Definition Item.h:1178
Maille avec info directionnelle des faces.
__host__ __device__ FaceLocalId next() const
Face connectée à la maille d'après la maille courante dans la direction.
__host__ __device__ CellLocalId cellId() const
Maille associée.
__host__ __device__ CellLocalId cell() const
Maille associée.
__host__ __device__ FaceLocalId nextId() const
Face connectée à la maille d'après la maille courante dans la direction.
__host__ __device__ FaceLocalId previousId() const
Face connectée à la maille d'avant la maille courante dans la direction.
__host__ __device__ FaceLocalId previous() const
Face connectée à la maille d'avant la maille courante dans la direction.
__host__ __device__ Int32 nextLocalIndex() const
Indice locale dans la maille de la face next()
__host__ __device__ Int32 previousLocalIndex() const
Indice locale dans la maille de la face previous()
Maille avec info directionnelle des faces.
Int32 nextLocalIndex() const
Indice locale dans la maille de la face next()
Face next() const
Face connectée à la maille d'après la maille courante dans la direction.
FaceLocalId nextId() const
Face connectée à la maille d'après la maille courante dans la direction.
Face previous() const
Face connectée à la maille d'avant la maille courante dans la direction.
FaceLocalId previousId() const
Face connectée à la maille d'avant la maille courante dans la direction.
CellLocalId cellId() const
Maille associée.
Int32 previousLocalIndex() const
Indice locale dans la maille de la face previous()
Maille avant et après une maille suivant une direction.
constexpr __host__ __device__ CellLocalId previousId() const
Maille avant.
constexpr __host__ __device__ CellLocalId nextId() const
Maille après.
constexpr __host__ __device__ CellLocalId next() const
Maille après.
constexpr __host__ __device__ CellLocalId previous() const
Maille avant.
Maille avec info directionnelle des noeuds.
__host__ __device__ NodeLocalId nextRightId() const
Noeud devant à droite dans la direction.
__host__ __device__ NodeLocalId topNextLeftId() const
Noeud devant à gauche dans la direction.
__host__ __device__ NodeLocalId previousLeftId() const
Noeud derrière à gauche dans la direction.
__host__ __device__ NodeLocalId topPreviousLeftId() const
Noeud derrière à gauche dans la direction.
__host__ __device__ NodeLocalId nextLeftId() const
Noeud devant à gauche dans la direction.
__host__ __device__ NodeLocalId topNextRightId() const
Noeud devant à droite dans la direction.
__host__ __device__ NodeLocalId previousRightId() const
Noeud derrière à droite dans la direction.
__host__ __device__ CellLocalId cellId() const
Maille associée.
__host__ __device__ NodeLocalId topPreviousRightId() const
Noeud derrière à droite dans la direction.
Maille avec info directionnelle des noeuds.
Node nextRight() const
Noeud devant à droite dans la direction.
CellLocalId cellId() const
Maille associée.
Node previousRight() const
Noeud derrière à droite dans la direction.
NodeLocalId topNextLeftId() const
Noeud devant à gauche dans la direction.
NodeLocalId nextRightId() const
Noeud devant à droite dans la direction.
NodeLocalId topNextRightId() const
Noeud devant à droite dans la direction.
NodeLocalId nextLeftId() const
Noeud devant à gauche dans la direction.
Node nextLeft() const
Noeud devant à gauche dans la direction.
Node topNextRight() const
Noeud devant à droite dans la direction.
NodeLocalId topPreviousLeftId() const
Noeud derrière à gauche dans la direction.
NodeLocalId topPreviousRightId() const
Noeud derrière à droite dans la direction.
NodeLocalId previousLeftId() const
Noeud derrière à gauche dans la direction.
NodeLocalId previousRightId() const
Noeud derrière à droite dans la direction.
Node topPreviousRight() const
Noeud derrière à droite dans la direction.
Node topNextLeft() const
Noeud devant à gauche dans la direction.
Node previousLeft() const
Noeud derrière à gauche dans la direction.
Node topPreviousLeft() const
Noeud derrière à gauche dans la direction.
Maille avant et après une maille suivant une direction.
CellLocalId nextId() const
Maille après.
CellLocalId previousId() const
Maille avant.
Face d'une maille.
Definition Item.h:932
constexpr Int32 localId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Definition Item.h:210
Noeud d'un maillage.
Definition Dom.h:204
Structure interne contenant l'entité devant et derriére dans une direction.
Vue d'un tableau d'éléments de type T.
Definition Span.h:670
ItemEnumeratorT< Cell > CellEnumerator
Enumérateurs sur des mailles.
Definition ItemTypes.h:271
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Arccore::Int8 Int8
Type représentant un entier sur 8 bits.
eMeshDirection
Type de la direction pour un maillage structuré