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