Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
src/arcane/cartesianmesh/FaceDirectionMng.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/* FaceDirectionMng.cc (C) 2000-2022 */
9/* */
10/* Infos sur les faces d'une direction X Y ou Z d'un maillage structuré. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CARTESIANMESH_FACEDIRECTIONMNG_H
13#define ARCANE_CARTESIANMESH_FACEDIRECTIONMNG_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/ArcaneTypes.h"
18#include "arcane/Item.h"
19#include "arcane/VariableTypedef.h"
20#include "arcane/ItemEnumerator.h"
21
22#include "arcane/cartesianmesh/CartesianMeshGlobal.h"
23#include "arcane/cartesianmesh/CartesianItemDirectionInfo.h"
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
28namespace Arcane
29{
30
31/*---------------------------------------------------------------------------*/
32/*---------------------------------------------------------------------------*/
40class ARCANE_CARTESIANMESH_EXPORT DirFace
41{
42 friend FaceDirectionMng;
43
44 private:
45
46 DirFace(Cell n,Cell p) : m_previous(p), m_next(n){}
47
48 public:
49
51 Cell previousCell() const { return m_previous; }
53 CellLocalId previousCellId() const { return m_previous.itemLocalId(); }
55 Cell nextCell() const { return m_next; }
57 CellLocalId nextCellId() const { return m_next.itemLocalId(); }
58
59 private:
60
61 Cell m_previous;
62 Cell m_next;
63};
64
65/*---------------------------------------------------------------------------*/
66/*---------------------------------------------------------------------------*/
74class ARCANE_CARTESIANMESH_EXPORT DirFaceLocalId
75{
76 friend FaceDirectionMng;
77
78 private:
79
80 ARCCORE_HOST_DEVICE DirFaceLocalId(CellLocalId n, CellLocalId p)
81 : m_previous(p)
82 , m_next(n)
83 {}
84
85 public:
86
88 ARCCORE_HOST_DEVICE CellLocalId previousCell() const { return m_previous; }
90 ARCCORE_HOST_DEVICE CellLocalId previousCellId() const { return m_previous; }
92 ARCCORE_HOST_DEVICE CellLocalId nextCell() const { return m_next; }
94 ARCCORE_HOST_DEVICE CellLocalId nextCellId() const { return m_next; }
95
96 private:
97
98 CellLocalId m_previous;
99 CellLocalId m_next;
100};
101
102/*---------------------------------------------------------------------------*/
103/*---------------------------------------------------------------------------*/
109class ARCANE_CARTESIANMESH_EXPORT FaceDirectionMng
110{
111 friend CartesianMeshImpl;
112 friend CartesianMeshPatch;
113 class Impl;
114
115 private:
116
118
119 public:
120
127
128 public:
129
132 {
133 return _face(f.localId());
134 }
137 {
138 return _face(f.localId());
139 }
140
142 ARCCORE_HOST_DEVICE DirFaceLocalId dirFaceId(FaceLocalId f) const
143 {
144 return _dirFaceId(f);
145 }
146
148 FaceGroup allFaces() const;
149
157 FaceGroup innerFaces() const;
158
165 FaceGroup outerFaces() const;
166
169 {
170 return _face(f.localId());
171 }
172
175 {
176 return _face(f.localId());
177 }
178
181 {
182 return _face(iface.itemLocalId());
183 }
184
187 {
188 return m_direction;
189 }
190
191 private:
192
194 DirFace _face(Int32 local_id) const
195 {
196 ItemDirectionInfo d = m_infos_view[local_id];
197 return DirFace(m_cells[d.m_next_lid], m_cells[d.m_previous_lid]);
198 }
199
201 ARCCORE_HOST_DEVICE DirFaceLocalId _dirFaceId(FaceLocalId local_id) const
202 {
203 ItemDirectionInfo d = m_infos_view[local_id];
205 }
206
207 private:
208
215 void _internalComputeInfos(const CellDirectionMng& cell_dm,
218
223 void _internalInit(ICartesianMesh* cm, eMeshDirection dir, Integer patch_index);
224
229 void _internalDestroy();
230
236 void _internalResizeInfos(Int32 new_size);
237
238 private:
239
240 SmallSpan<ItemDirectionInfo> m_infos_view;
241 CellInfoListView m_cells;
242 eMeshDirection m_direction;
243 Impl* m_p;
244
245 void _computeCellInfos(const CellDirectionMng& cell_dm,
248 bool _hasFace(Cell cell, Int32 face_local_id) const;
249};
250
251/*---------------------------------------------------------------------------*/
252/*---------------------------------------------------------------------------*/
253
254} // End namespace Arcane
255
256/*---------------------------------------------------------------------------*/
257/*---------------------------------------------------------------------------*/
258
259#endif
260
Infos spécifiques à un maillage cartésien.
Informations par direction pour chaque genre d'entité du maillage.
Infos sur les mailles d'une direction spécifique X,Y ou Z d'un maillage structuré.
Vue sur les informations des mailles.
Maille d'un maillage.
Definition Item.h:1178
Infos sur maille avant et après une face suivant une direction.
ARCCORE_HOST_DEVICE CellLocalId nextCellId() const
Maille après.
ARCCORE_HOST_DEVICE CellLocalId nextCell() const
Maille après.
ARCCORE_HOST_DEVICE CellLocalId previousCell() const
Maille avant.
ARCCORE_HOST_DEVICE CellLocalId previousCellId() const
Maille avant.
Infos sur maille avant et après une face suivant une direction.
CellLocalId previousCellId() const
Maille avant.
CellLocalId nextCellId() const
Maille après.
Infos sur les face d'une direction spécifique X,Y ou Z d'un maillage structuré.
DirFace _face(Int32 local_id) const
Face direction correspondant à la face de numéro local local_id.
DirFace face(Face f) const
Face direction correspondant à la face f.
ARCCORE_HOST_DEVICE DirFaceLocalId _dirFaceId(FaceLocalId local_id) const
Face direction correspondant à la face de numéro local local_id.
DirFace operator[](FaceLocalId f) const
Face direction correspondant à la face f.
DirFace face(FaceLocalId f) const
Face direction correspondant à la face f.
ARCCORE_HOST_DEVICE DirFaceLocalId dirFaceId(FaceLocalId f) const
Face direction correspondant à la face f.
DirFace operator[](Face f) const
Face direction correspondant à la face f.
DirFace operator[](FaceEnumerator iface) const
Face direction correspondant à l'itérateur de la face iface.
eMeshDirection direction() const
Valeur de la direction.
Face d'une maille.
Definition Item.h:932
Interface d'un maillage cartésien.
constexpr Int32 localId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Definition Item.h:210
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Structure interne contenant l'entité devant et derriére dans une direction.
ItemLocalId m_next_lid
entité après l'entité courante dans la direction
ItemLocalId m_previous_lid
entité avant l'entité courante dans la direction
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eMeshDirection
Type de la direction pour un maillage structuré