Arcane  v4.1.1.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
src/arcane/cartesianmesh/ICartesianMesh.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/* ICartesianMesh.h (C) 2000-2025 */
9/* */
10/* Interface d'un maillage cartésien. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CARTESIANMESH_ICARTESIANMESH_H
13#define ARCANE_CARTESIANMESH_ICARTESIANMESH_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/cartesianmesh/CartesianMeshGlobal.h"
18
20#include "arcane/core/MeshHandle.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
31/*!
32 * \ingroup ArcaneCartesianMesh
33 * \brief Interface d'un maillage cartésien.
34 */
35class ARCANE_CARTESIANMESH_EXPORT ICartesianMesh
36{
37 public:
38
39 virtual ~ICartesianMesh() {} //<! Libère les ressources
40
41 /*!
42 * \brief Récupère ou créé la référence associée à \a mesh.
43 *
44 * Si aucun gestionnaire de matériau n'est associé à \a mesh, il
45 * sera créé lors de l'appel à cette méthode si \a create vaut \a true.
46 * Si \a create vaut \a false est qu'aucune gestionnaire n'est associé
47 * au maillage, un pointeur nul est retourné.
48 * L'instance retournée reste valide tant que le maillage \a mesh existe.
49 */
50 static ICartesianMesh* getReference(const MeshHandleOrMesh& mesh, bool create = true);
51
52 public:
53
54 virtual void build() = 0;
55
56 public:
57
58 //! Maillage associé à ce maillage cartésien
59 virtual IMesh* mesh() const = 0;
60
61 //! Gestionnaire de trace associé.
62 virtual ITraceMng* traceMng() const = 0;
63
64 //! Liste des mailles dans la direction \a dir
66
67 //! Liste des mailles dans la direction \a dir (0, 1 ou 2)
69
70 //! Liste des faces dans la direction \a dir
72
73 //! Liste des faces dans la direction \a dir (0, 1 ou 2)
75
76 //! Liste des noeuds dans la direction \a dir
78
79 //! Liste des noeuds dans la direction \a dir (0, 1 ou 2)
81
82 /*!
83 * \brief Calcule les infos pour les accès par direction.
84 *
85 * Actuellement, les restrictions suivantes existent:
86 * - calcule uniquement les infos sur les entités mailles.
87 * - suppose que la maille 0 est dans un coin (ne fonctionne que
88 * pour le meshgenerator).
89 * - les informations de direction sont invalidées si le maillage évolue.
90 */
91 virtual void computeDirections() = 0;
92
93 /*!
94 * \brief Recalcule les informations de cartésiennes après une reprise.
95 *
96 * Cette méthode doit être appelée à la place de computeDirections()
97 * lors d'une reprise.
98 */
99 virtual void recreateFromDump() = 0;
100
101 //! Informations sur la connectivité
103
104 /*!
105 * \brief Nombre de patchs du maillage.
106 *
107 * Il y a toujours au moins un patch qui représente la maillage cartésien
108 *
109 * \deprecated Utiliser CartesianMeshAMRMng à la place.
110 */
111 virtual Int32 nbPatch() const = 0;
112
113 /*!
114 * \brief Retourne le \a index-ième patch du maillage.
115 *
116 * Si le maillage est cartésien, il n'y a qu'un seul patch.
117 *
118 * L'instance retournée reste valide tant que cette instance n'est pas détruite.
119 */
120 virtual ICartesianMeshPatch* patch(Int32 index) const = 0;
121
122 /*!
123 * \brief Retourne le \a index-ième patch du maillage.
124 *
125 * Si le maillage est cartésien, il n'y a qu'un seul patch.
126 *
127 * L'instance retournée reste valide tant que cette instance n'est pas détruite.
128 *
129 * \deprecated Utiliser CartesianMeshAMRMng::amrPatch() à la place.
130 */
131 virtual CartesianPatch amrPatch(Int32 index) const = 0;
132
133 /*!
134 * \brief Vue sur la liste des patchs.
135 *
136 * \deprecated Utiliser CartesianMeshAMRMng::amrPatch() à la place.
137 */
139
140 /*!
141 * \brief Raffine en 2D un bloc du maillage cartésien.
142 *
143 * Cette méthode ne peut être appelée que si le maillage est un maillage
144 * AMR (IMesh::isAmrActivated()==true).
145 *
146 * Les mailles dont les positions des centres sont comprises entre
147 * \a position et \a (position+length) sont raffinées et les informations
148 * de connectivité correspondantes sont mises à jour.
149 *
150 * Cette opération est collective.
151 *
152 * \deprecated Utiliser CartesianMeshAMRMng::refineZone() à la place.
153 */
154 virtual void refinePatch2D(Real2 position, Real2 length) = 0;
155
156 /*!
157 * \brief Raffine en 3D un bloc du maillage cartésien.
158 *
159 * Cette méthode ne peut être appelée que si le maillage est un maillage
160 * AMR (IMesh::isAmrActivated()==true).
161 *
162 * Les mailles dont les positions des centres sont comprises entre
163 * \a position et \a (position+length) sont raffinées et les informations
164 * de connectivité correspondantes sont mises à jour.
165 *
166 * Cette opération est collective.
167 *
168 * \deprecated Utiliser CartesianMeshAMRMng::refineZone() à la place.
169 */
170 virtual void refinePatch3D(Real3 position, Real3 length) = 0;
171
172 /*!
173 * \brief Raffine un bloc du maillage cartésien.
174 *
175 * Cette méthode ne peut être appelée que si le maillage est un maillage
176 * AMR (IMesh::isAmrActivated()==true).
177 *
178 * Les mailles dont les positions des centres sont comprises entre
179 * \a position et \a (position+length) sont raffinées et les informations
180 * de connectivité correspondantes sont mises à jour.
181 *
182 * Cette opération est collective.
183 *
184 * \deprecated Utiliser CartesianMeshAMRMng::refineZone() à la place.
185 */
186 virtual void refinePatch(const AMRZonePosition& position) = 0;
187
188 /*!
189 * \brief Dé-raffine en 2D un bloc du maillage cartésien.
190 *
191 * Cette méthode ne peut être appelée que si le maillage est un maillage
192 * AMR (IMesh::isAmrActivated()==true).
193 *
194 * Les mailles dont les positions des centres sont comprises entre
195 * \a position et \a (position+length) sont dé-raffinées et les informations
196 * de connectivité correspondantes sont mises à jour.
197 *
198 * Toutes les mailles dans la zone de dé-raffinement doivent être du même
199 * niveau.
200 *
201 * Les patchs ne contenant plus de mailles après l'appel à cette méthode
202 * seront supprimés.
203 *
204 * Cette opération est collective.
205 *
206 * \deprecated Utiliser CartesianMeshAMRMng::coarseZone2D() à la place.
207 */
208 virtual void coarseZone2D(Real2 position, Real2 length) = 0;
209
210 /*!
211 * \brief Dé-raffine en 3D un bloc du maillage cartésien.
212 *
213 * Cette méthode ne peut être appelée que si le maillage est un maillage
214 * AMR (IMesh::isAmrActivated()==true).
215 *
216 * Les mailles dont les positions des centres sont comprises entre
217 * \a position et \a (position+length) sont dé-raffinées et les informations
218 * de connectivité correspondantes sont mises à jour.
219 *
220 * Toutes les mailles dans la zone de dé-raffinement doivent être du même
221 * niveau.
222 *
223 * Les patchs ne contenant plus de mailles après l'appel à cette méthode
224 * seront supprimés.
225 *
226 * Cette opération est collective.
227 *
228 * \deprecated Utiliser CartesianMeshAMRMng::coarseZone2D() à la place.
229 */
230 virtual void coarseZone3D(Real3 position, Real3 length) = 0;
231
232 /*!
233 * \brief Dé-raffine un bloc du maillage cartésien.
234 *
235 * Cette méthode ne peut être appelée que si le maillage est un maillage
236 * AMR (IMesh::isAmrActivated()==true).
237 *
238 * Les mailles dont les positions des centres sont comprises entre
239 * \a position et \a (position+length) sont dé-raffinées et les informations
240 * de connectivité correspondantes sont mises à jour.
241 *
242 * Toutes les mailles dans la zone de dé-raffinement doivent être du même
243 * niveau.
244 *
245 * Les patchs ne contenant plus de mailles après l'appel à cette méthode
246 * seront supprimés.
247 *
248 * Cette opération est collective.
249 *
250 * \deprecated Utiliser CartesianMeshAMRMng::coarseZone2D() à la place.
251 */
252 virtual void coarseZone(const AMRZonePosition& position) = 0;
253
254 /*!
255 * \brief Méthode permettant de supprimer une ou plusieurs couches
256 * de mailles fantômes sur un niveau de raffinement défini.
257 *
258 * Le nombre de couches de mailles fantômes souhaité peut être augmenté
259 * par la méthode. Il est nécessaire de récupérer la valeur retournée
260 * pour avoir le nombre de couches de mailles fantômes final.
261 *
262 * \param level Le niveau de raffinement concerné par la suppression
263 * des mailles fantômes.
264 *
265 * \param target_nb_ghost_layers Le nombre de couches souhaité après
266 * appel à cette méthode. ATTENTION : Il peut être ajusté par la méthode.
267 *
268 * \return Le nombre de couches de mailles fantômes final.
269 *
270 * \deprecated Utiliser CartesianMeshAMRMng::reduceNbGhostLayers() à la place.
271 */
272 virtual Integer reduceNbGhostLayers(Integer level, Integer target_nb_ghost_layers) = 0;
273
274 /*!
275 * \brief Renumérote les uniqueId() des entités.
276 *
277 * Suivant les valeurs de \a v, on renumérote les uniqueId() des faces et/ou
278 * des entités des patches pour avoir la même numérotation
279 * quel que soit le découpage.
280 */
282
283 //! Effectue des vérifications sur la validité de l'instance.
284 virtual void checkValid() const = 0;
285
286 /*!
287 * \brief Créé une instance pour gérer le déraffinement du maillage.
288 * \deprecated Utiliser Arcane::CartesianMeshUtils::createCartesianMeshCoarsening2() à la place.
289 */
290 ARCANE_DEPRECATED_REASON("Y2024: Use Arcane::CartesianMeshUtils::createCartesianMeshCoarsening2() instead")
292
293 public:
294
295 //! API interne à Arcane
296 virtual ICartesianMeshInternal* _internalApi() = 0;
297};
298
299/*---------------------------------------------------------------------------*/
300/*---------------------------------------------------------------------------*/
301/*!
302 * \internal.
303 * Cette méthode est reservée à Arcane.
304 * Utiliser ICartesianMesh::getReference() pour créer une instance.
305 */
306extern "C++" ARCANE_CARTESIANMESH_EXPORT ICartesianMesh*
307arcaneCreateCartesianMesh(IMesh* mesh);
308
309/*---------------------------------------------------------------------------*/
310/*---------------------------------------------------------------------------*/
311
312} // End namespace Arcane
313
314/*---------------------------------------------------------------------------*/
315/*---------------------------------------------------------------------------*/
316
317#endif
318
Déclarations des types généraux de Arcane.
Classe permettant de définir une zone d'un maillage.
Informations de connectivité d'un maillage cartésien.
Déraffine un maillage cartésien par 2.
Patch AMR d'un maillage cartésien.
Infos sur les mailles d'une direction spécifique X,Y ou Z d'un maillage structuré.
Infos sur les face d'une direction spécifique X,Y ou Z d'un maillage structuré.
Interface d'un patch AMR d'un maillage cartésien.
Interface d'un maillage cartésien.
static ICartesianMesh * getReference(const MeshHandleOrMesh &mesh, bool create=true)
Récupère ou créé la référence associée à mesh.
virtual FaceDirectionMng faceDirection(eMeshDirection dir)=0
Liste des faces dans la direction dir.
virtual CellDirectionMng cellDirection(eMeshDirection dir)=0
Liste des mailles dans la direction dir.
virtual CartesianConnectivity connectivity()=0
Informations sur la connectivité
virtual ITraceMng * traceMng() const =0
Gestionnaire de trace associé.
virtual void recreateFromDump()=0
Recalcule les informations de cartésiennes après une reprise.
virtual FaceDirectionMng faceDirection(Integer idir)=0
Liste des faces dans la direction dir (0, 1 ou 2)
virtual void renumberItemsUniqueId(const CartesianMeshRenumberingInfo &v)=0
Renumérote les uniqueId() des entités.
virtual IMesh * mesh() const =0
Maillage associé à ce maillage cartésien.
virtual void refinePatch(const AMRZonePosition &position)=0
Raffine un bloc du maillage cartésien.
virtual ICartesianMeshPatch * patch(Int32 index) const =0
Retourne le index-ième patch du maillage.
virtual CellDirectionMng cellDirection(Integer idir)=0
Liste des mailles dans la direction dir (0, 1 ou 2)
virtual void refinePatch2D(Real2 position, Real2 length)=0
Raffine en 2D un bloc du maillage cartésien.
virtual void refinePatch3D(Real3 position, Real3 length)=0
Raffine en 3D un bloc du maillage cartésien.
virtual ICartesianMeshInternal * _internalApi()=0
API interne à Arcane.
virtual CartesianMeshPatchListView patches() const =0
Vue sur la liste des patchs.
virtual CartesianPatch amrPatch(Int32 index) const =0
Retourne le index-ième patch du maillage.
virtual NodeDirectionMng nodeDirection(Integer idir)=0
Liste des noeuds dans la direction dir (0, 1 ou 2)
virtual void coarseZone3D(Real3 position, Real3 length)=0
Dé-raffine en 3D un bloc du maillage cartésien.
virtual void coarseZone2D(Real2 position, Real2 length)=0
Dé-raffine en 2D un bloc du maillage cartésien.
virtual void coarseZone(const AMRZonePosition &position)=0
Dé-raffine un bloc du maillage cartésien.
virtual Ref< CartesianMeshCoarsening > createCartesianMeshCoarsening()=0
Créé une instance pour gérer le déraffinement du maillage.
virtual NodeDirectionMng nodeDirection(eMeshDirection dir)=0
Liste des noeuds dans la direction dir.
virtual void computeDirections()=0
Calcule les infos pour les accès par direction.
virtual Int32 nbPatch() const =0
Nombre de patchs du maillage.
virtual void checkValid() const =0
Effectue des vérifications sur la validité de l'instance.
virtual Integer reduceNbGhostLayers(Integer level, Integer target_nb_ghost_layers)=0
Méthode permettant de supprimer une ou plusieurs couches de mailles fantômes sur un niveau de raffine...
Interface du gestionnaire de traces.
Classe de compatibilité pour contenir un MeshHandle ou un IMesh*.
Definition MeshHandle.h:194
Infos sur les noeuds d'une direction spécifique X,Y ou Z d'un maillage structuré.
Classe gérant un vecteur de réel de dimension 2.
Definition Real2.h:121
Classe gérant un vecteur de réel de dimension 3.
Definition Real3.h:132
Référence à une instance.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
eMeshDirection
Type de la direction pour un maillage structuré
std::int32_t Int32
Type entier signé sur 32 bits.