Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
EmptyMesh.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/* EmptyMesh (C) 2000-2024 */
9/* */
10/* Brief code description */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13#ifndef ARCANE_EMPTYMESH_H
14#define ARCANE_EMPTYMESH_H
15/*---------------------------------------------------------------------------*/
16/*---------------------------------------------------------------------------*/
17
18#include "arcane/utils/IUserDataList.h"
19#include "arcane/utils/IUserData.h"
20#include "arcane/utils/Collection.h"
21#include "arcane/utils/ITraceMng.h"
22#include "arcane/utils/NotImplementedException.h"
23
24#include "arcane/IMesh.h"
25#include "arcane/ArcaneTypes.h"
26#include "arcane/VariableTypedef.h"
27#include "arcane/IParallelMng.h"
28#include "arcane/MeshItemInternalList.h"
29#include "arcane/XmlNode.h"
30#include "arcane/IMeshPartitionConstraintMng.h"
31#include "arcane/IMeshUtilities.h"
32#include "arcane/IMeshModifier.h"
33#include "arcane/IMeshChecker.h"
34#include "arcane/IMeshCompactMng.h"
35#include "arcane/IMeshMng.h"
36#include "arcane/IGhostLayerMng.h"
37#include "arcane/Properties.h"
38#include "arcane/MeshPartInfo.h"
39#include "arcane/IItemFamilyNetwork.h"
40#include "arcane/IItemFamily.h"
41#include "arcane/IVariableMng.h"
42#include "arcane/MeshVariableScalarRef.h"
43#include "arcane/SharedVariable.h"
44#include "arcane/VariableRefScalar.h"
45#include "arcane/MeshHandle.h"
46#include "arcane/IParticleExchanger.h"
47#include "arcane/IExtraGhostCellsBuilder.h"
48
49/*---------------------------------------------------------------------------*/
50/*---------------------------------------------------------------------------*/
51
52namespace Arcane::mesh
53{
54
55/*---------------------------------------------------------------------------*/
56/*---------------------------------------------------------------------------*/
57
59: public IPrimaryMesh
60{
61
62 public:
63
64 ITraceMng* m_trace_mng;
65
66 explicit EmptyMesh(ITraceMng* trace_mng)
67 : m_trace_mng(trace_mng)
68 {}
69 ~EmptyMesh() override = default;
70
71 private:
72
73 void _error() const { m_trace_mng->fatal() << "Using EmptyMesh"; }
74
75 public:
76
77 MeshHandle handle() const override
78 {
79 _error();
80 return MeshHandle{};
81 }
82
83 // IPrimaryMesh API
84 public:
85
87 {
88 _error();
89 auto var = new VariableNodeReal3{ nullptr };
90 return *var;
91 }
92 void setDimension(Integer) override { _error(); }
93 void reloadMesh() override { _error(); }
94 void allocateCells(Integer, Int64ConstArrayView, bool) override { _error(); }
95 void endAllocate() override { _error(); }
96 void deallocate() override { _error(); }
98 {
99 _error();
100 auto var = new VariableItemInt32{ nullptr };
101 return *var;
102 };
103 void exchangeItems() override { _error(); }
104 void setOwnersFromCells() override { _error(); }
105 void setMeshPartInfo(const MeshPartInfo&) override { _error(); }
106
107 // IMesh API
108 public:
109
110 String name() const override
111 {
112 _error();
113 return String{};
114 }
115 Integer nbNode() override
116 {
117 _error();
118 return -1;
119 }
120 Integer nbEdge() override
121 {
122 _error();
123 return -1;
124 }
125 Integer nbFace() override
126 {
127 _error();
128 return -1;
129 }
130 Integer nbCell() override
131 {
132 _error();
133 return -1;
134 }
135 Integer nbItem(eItemKind) override
136 {
137 _error();
138 return -1;
139 }
140 ITraceMng* traceMng() override
141 {
142 _error();
143 return nullptr;
144 }
145 Integer dimension() override
146 {
147 _error();
148 return -1;
149 }
151 {
152 _error();
153 return NodeGroup{};
154 }
156 {
157 _error();
158 return EdgeGroup{};
159 }
161 {
162 _error();
163 return FaceGroup{};
164 }
166 {
167 _error();
168 return CellGroup{};
169 }
171 {
172 _error();
173 return NodeGroup{};
174 }
176 {
177 _error();
178 return EdgeGroup{};
179 }
181 {
182 _error();
183 return FaceGroup{};
184 }
186 {
187 _error();
188 return CellGroup{};
189 }
191 {
192 _error();
193 return FaceGroup{};
194 }
195
196 public:
197
199 {
200 _error();
201 return nullptr;
202 }
203 IItemFamily* findItemFamily(eItemKind, const String&, bool, bool) override
204 {
205 _error();
206 return nullptr;
207 }
208 IItemFamily* findItemFamily(const String&, bool) override
209 {
210 _error();
211 return nullptr;
212 }
214 {
215 _error();
216 return nullptr;
217 }
219 {
220 _error();
221 return nullptr;
222 }
224 {
225 _error();
226 return nullptr;
227 }
229 {
230 _error();
231 return nullptr;
232 }
234 {
235 _error();
236 return nullptr;
237 }
239 {
240 _error();
241 return nullptr;
242 }
243 IItemFamilyCollection itemFamilies() override
244 {
245 _error();
246 return IItemFamilyCollection{};
247 }
248
249 public:
250
251 void build() override { _error(); }
252 String factoryName() const override
253 {
254 _error();
255 return String{};
256 }
258 {
259 _error();
260 return ItemInternalList{};
261 }
263 {
264 _error();
266 }
267 void checkValidMesh() override { _error(); }
268 void checkValidMeshFull() override { _error(); }
269 void synchronizeGroupsAndVariables() override { _error(); }
270
271 public:
272
273 bool isAllocated() override
274 {
275 _error();
276 return false;
277 }
278 Int64 timestamp() override
279 {
280 _error();
281 return -1;
282 }
283
284 public:
285
287 {
288 _error();
289 return nullptr;
290 }
291
292 public:
293
295 {
296 _error();
297 return nullptr;
298 }
299
300 public:
301
303 {
304 _error();
305 return VariableScalarInteger{ nullptr };
306 }
307
309 {
310 _error();
311 return CellGroup{};
312 }
314 {
315 _error();
316 return CellGroup{};
317 }
318 CellGroup allLevelCells(const Integer&) override
319 {
320 _error();
321 return CellGroup{};
322 }
323 CellGroup ownLevelCells(const Integer&) override
324 {
325 _error();
326 return CellGroup{};
327 }
329 {
330 _error();
331 return FaceGroup{};
332 }
334 {
335 _error();
336 return FaceGroup{};
337 }
339 {
340 _error();
341 return FaceGroup{};
342 }
344 {
345 _error();
346 return FaceGroup{};
347 }
348
349 public:
350
352 {
353 _error();
354 return ItemGroupCollection{};
355 }
356 ItemGroup findGroup(const String&) override
357 {
358 _error();
359 return ItemGroup{};
360 }
361 void destroyGroups() override { _error(); }
362
363 public:
364
365 MeshItemInternalList* meshItemInternalList() override
366 {
367 _error();
368 return nullptr;
369 }
370
371 public:
372
373 void updateGhostLayers(bool) override { _error(); }
374 void serializeCells(ISerializer*, Int32ConstArrayView) override { _error(); }
375 void prepareForDump() override { _error(); }
376 void initializeVariables(const XmlNode&) override { _error(); }
377 void setCheckLevel(Integer) override { _error(); }
378 Integer checkLevel() const override
379 {
380 _error();
381 return -1;
382 }
383 bool isDynamic() const override
384 {
385 _error();
386 return false;
387 }
388 bool isAmrActivated() const override
389 {
390 _error();
391 return false;
392 }
393
394 public:
395
396 void computeTiedInterfaces(const XmlNode&) override { _error(); }
397 bool hasTiedInterface() override
398 {
399 _error();
400 return false;
401 }
403 {
404 _error();
406 }
408 {
409 _error();
410 return nullptr;
411 }
412
413 public:
414
416 {
417 _error();
418 return nullptr;
419 }
421 {
422 _error();
423 return nullptr;
424 }
425
426 public:
427
429 {
430 _error();
431 return nullptr;
432 }
433
434 public:
435
436 void defineParentForBuild(IMesh*, ItemGroup) override { _error(); }
437 IMesh* parentMesh() const override
438 {
439 _error();
440 return nullptr;
441 }
442 ItemGroup parentGroup() const override
443 {
444 _error();
445 return ItemGroup{};
446 }
447 void addChildMesh(IMesh*) override { _error(); }
449 {
450 _error();
451 return MeshCollection{};
452 }
453
454 public:
455
456 bool isPrimaryMesh() const override
457 {
458 _error();
459 return false;
460 }
461 IPrimaryMesh* toPrimaryMesh() override { return this; }
462
463 public:
464
466 {
467 _error();
468 return nullptr;
469 }
470 const IUserDataList* userDataList() const override
471 {
472 _error();
473 return nullptr;
474 }
475
476 public:
477
479 {
480 _error();
481 return nullptr;
482 }
484 {
485 _error();
486 return nullptr;
487 }
488 IMeshChecker* checker() const override
489 {
490 _error();
491 return nullptr;
492 }
493 const MeshPartInfo& meshPartInfo() const override
494 {
495 _error();
496 auto var = new MeshPartInfo{};
497 return *var;
498 }
499 bool useMeshItemFamilyDependencies() const override
500 {
501 _error();
502 return false;
503 }
505 {
506 _error();
507 return nullptr;
508 }
510 {
511 _error();
512 return nullptr;
513 }
514
515 public:
516
518 {
519 _error();
520 return nullptr;
521 }
523 {
524 _error();
526 }
527
528 public:
529
530 IMeshMng* meshMng() const override
531 {
532 _error();
533 return nullptr;
534 }
535 IVariableMng* variableMng() const override
536 {
537 _error();
538 return nullptr;
539 }
540 ItemTypeMng* itemTypeMng() const override
541 {
542 _error();
543 return nullptr;
544 }
545
550
555};
556
557/*---------------------------------------------------------------------------*/
558/*---------------------------------------------------------------------------*/
559
560} // End namespace Arcane::mesh
561
562/*---------------------------------------------------------------------------*/
563/*---------------------------------------------------------------------------*/
564
565#endif //ARCANE_EMPTYMESH_H
#define ARCANE_THROW(exception_class,...)
Macro pour envoyer une exception avec formattage.
Interface du gestionnaire des connectivités incrémentales indexées sur les entités.
Interface de modification d'une famille.
Interface d'une famille d'entités.
Interface de méthodes de vérification d'un maillage.
Interface du gestionnaire des compactages de familles d'un maillage.
Partie interne de IMesh.
Interface du gestionnaire des maillages.
Definition IMeshMng.h:40
Interface de modification du maillage.
Interface d'un gestionnaire de contraintes de partitionnement de maillage.
Interface d'une classe proposant des fonctions utilitaires sur maillage.
Interface du gestionnaire de parallélisme pour un sous-domaine.
Interface du gestionnaire d'un sous-domaine.
Definition ISubDomain.h:74
Interface d'une liste qui gère des données utilisateurs.
Interface du gestionnaire de variables.
Groupe d'entités de maillage.
Definition ItemGroup.h:49
Gestionnaire des types d'entités de maillage.
Definition ItemTypeMng.h:66
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Handle sur un maillage.
Definition MeshHandle.h:47
Tableaux d'indirection sur les entités d'un maillage.
Informations un maillage partitionné.
Liste de propriétés.
Definition Properties.h:64
Noeud d'un arbre DOM.
Definition XmlNode.h:51
CellGroup ownLevelCells(const Integer &) override
Groupe de toutes les mailles propres de niveau level.
Definition EmptyMesh.h:323
void destroyGroups() override
Détruit tous les groupes de toutes les familles.
Definition EmptyMesh.h:361
Integer nbNode() override
Nombre de noeuds du maillage.
Definition EmptyMesh.h:115
ITraceMng * traceMng() override
Gestionnaire de message associé
Definition EmptyMesh.h:140
void initializeVariables(const XmlNode &) override
Initialize les variables avec les valeurs du fichier de configuration (interne)
Definition EmptyMesh.h:376
bool hasTiedInterface() override
Vrai s'il existe des interfaces semi-conformes dans le maillage.
Definition EmptyMesh.h:397
FaceGroup ownFaces() override
Groupe de toutes les faces propres au domaine.
Definition EmptyMesh.h:180
IItemFamily * createItemFamily(eItemKind, const String &) override
Créé une famille de particule de nom name.
Definition EmptyMesh.h:198
IUserDataList * userDataList() override
Gestionnnaire de données utilisateurs associé
Definition EmptyMesh.h:465
IItemFamily * itemFamily(eItemKind) override
Retourne la famille d'entité de type ik.
Definition EmptyMesh.h:218
void setDimension(Integer) override
Positionne la dimension du maillage (1D, 2D ou 3D).
Definition EmptyMesh.h:92
void serializeCells(ISerializer *, Int32ConstArrayView) override
Definition EmptyMesh.h:374
IItemFamily * faceFamily() override
Retourne la famille des faces.
Definition EmptyMesh.h:233
VariableItemInt32 & itemsNewOwner(eItemKind) override
Variable contenant l'identifiant du sous-domaine propriétaire.
Definition EmptyMesh.h:97
ItemTypeMng * itemTypeMng() const override
Gestionnaire de types d'entités associé
Definition EmptyMesh.h:540
TiedInterfaceCollection tiedInterfaces() override
Liste des interfaces semi-conformes.
Definition EmptyMesh.h:402
void defineParentForBuild(IMesh *, ItemGroup) override
Définit les maillage et groupe parents.
Definition EmptyMesh.h:436
VariableNodeReal3 & nodesCoordinates() override
Coordonnées des noeuds.
Definition EmptyMesh.h:86
IMeshChecker * checker() const override
Interface du vérificateur.
Definition EmptyMesh.h:488
IMeshPartitionConstraintMng * partitionConstraintMng() override
Gestionnaire des contraintes de partitionnement associées à ce maillage.
Definition EmptyMesh.h:407
FaceGroup outerFaces() override
Groupe de toutes les faces sur la frontière.
Definition EmptyMesh.h:190
Integer dimension() override
Dimension du maillage (1D, 2D ou 3D).
Definition EmptyMesh.h:145
void synchronizeGroupsAndVariables() override
Synchronise tous les groupes et les variables du maillage.
Definition EmptyMesh.h:269
IGhostLayerMng * ghostLayerMng() const override
Gestionnare de couche fantômes associé
Definition EmptyMesh.h:478
bool useMeshItemFamilyDependencies() const override
check if the network itemFamily dependencies is activated
Definition EmptyMesh.h:499
bool isPrimaryMesh() const override
Indique si l'instance est un maillage primaire.
Definition EmptyMesh.h:456
void checkValidMeshFull() override
Vérification de la validité du maillage.
Definition EmptyMesh.h:268
IMeshModifier * modifier() override
Interface de modification associée.
Definition EmptyMesh.h:428
IMeshCompactMng * _compactMng() override
Definition EmptyMesh.h:517
Integer nbCell() override
Nombre de mailles du maillage.
Definition EmptyMesh.h:130
void setOwnersFromCells() override
Positionne les propriétaires des entités à partir du propriétaire des mailles.
Definition EmptyMesh.h:104
SharedVariableNodeReal3 sharedNodesCoordinates() override
Coordonnées des noeuds.
Definition EmptyMesh.h:262
IParallelMng * parallelMng() override
Gestionnaire de parallèlisme.
Definition EmptyMesh.h:294
IItemFamily * findItemFamily(const String &, bool) override
Retourne la famille de nom name.
Definition EmptyMesh.h:208
void allocateCells(Integer, Int64ConstArrayView, bool) override
Allocation d'un maillage.
Definition EmptyMesh.h:94
void exchangeItems() override
Change les sous-domaines propriétaires des entités.
Definition EmptyMesh.h:103
IItemFamily * edgeFamily() override
Retourne la famille des arêtes.
Definition EmptyMesh.h:228
VariableScalarInteger connectivity() override
Descripteur de connectivité
Definition EmptyMesh.h:302
InternalConnectivityPolicy _connectivityPolicy() const override
Politique d'utilisation des connectivitées.
Definition EmptyMesh.h:522
ISubDomain * subDomain() override
Sous-domaine associé
Definition EmptyMesh.h:286
FaceGroup allActiveFaces() override
Groupe de toutes les faces actives.
Definition EmptyMesh.h:328
void checkValidMesh() override
Vérification de la validité des structues internes de maillage (interne)
Definition EmptyMesh.h:267
void prepareForDump() override
Prépare l'instance en vue d'une protection.
Definition EmptyMesh.h:375
IPrimaryMesh * toPrimaryMesh() override
Retourne l'instance sous la forme d'un IPrimaryMesh.
Definition EmptyMesh.h:461
ItemGroupCollection groups() override
Liste des groupes.
Definition EmptyMesh.h:351
IItemFamilyModifier * findItemFamilyModifier(eItemKind, const String &) override
Retourne l'interface IItemFamilyModifier pour famille de nom name et de type ik.
Definition EmptyMesh.h:213
void reloadMesh() override
Recharge le maillage à partir des variables protégées.
Definition EmptyMesh.h:93
CellGroup allActiveCells() override
Definition EmptyMesh.h:308
Properties * properties() override
Propriétés associées à ce maillage.
Definition EmptyMesh.h:420
void computeTiedInterfaces(const XmlNode &) override
Détermine les interfaces de semi-conformités.
Definition EmptyMesh.h:396
Integer nbEdge() override
Nombre d'arêtes du maillage.
Definition EmptyMesh.h:120
FaceGroup innerActiveFaces() override
Groupe de toutes les faces actives.
Definition EmptyMesh.h:338
IItemFamily * cellFamily() override
Retourne la famille des mailles.
Definition EmptyMesh.h:238
CellGroup ownActiveCells() override
Groupe de toutes les mailles actives et propres au domaine.
Definition EmptyMesh.h:313
FaceGroup allFaces() override
Groupe de toutes les faces.
Definition EmptyMesh.h:160
Int64 timestamp() override
Compteur indiquant le temps de dernière modification du maillage.
Definition EmptyMesh.h:278
ItemInternalList itemsInternal(eItemKind) override
Tableau interne des éléments du maillage de type type.
Definition EmptyMesh.h:257
const MeshPartInfo & meshPartInfo() const override
Informations sur les parties du maillage.
Definition EmptyMesh.h:493
ItemGroup parentGroup() const override
Groupe parent.
Definition EmptyMesh.h:442
void addChildMesh(IMesh *) override
Ajoute un sous-maillage au maillage parent.
Definition EmptyMesh.h:447
void deallocate() override
Désalloue le maillage.
Definition EmptyMesh.h:96
IVariableMng * variableMng() const override
Gestionnaire de variable associé
Definition EmptyMesh.h:535
const IUserDataList * userDataList() const override
Gestionnnaire de données utilisateurs associé
Definition EmptyMesh.h:470
MeshHandle handle() const override
Handle sur ce maillage.
Definition EmptyMesh.h:77
IMeshMng * meshMng() const override
Gestionnaire de maillage associé
Definition EmptyMesh.h:530
void endAllocate() override
Indique une fin d'allocation de mailles.
Definition EmptyMesh.h:95
ItemGroup findGroup(const String &) override
Retourne le groupe de nom name ou le groupe nul s'il n'y en a pas.
Definition EmptyMesh.h:356
IMeshUtilities * utilities() override
Interface des fonctions utilitaires associée.
Definition EmptyMesh.h:415
IItemFamily * nodeFamily() override
Retourne la famille des noeuds.
Definition EmptyMesh.h:223
Integer checkLevel() const override
Niveau actuel de vérification.
Definition EmptyMesh.h:378
Integer nbFace() override
Nombre de faces du maillage.
Definition EmptyMesh.h:125
EdgeGroup allEdges() override
Groupe de toutes les arêtes.
Definition EmptyMesh.h:155
IItemFamily * findItemFamily(eItemKind, const String &, bool, bool) override
Retourne la famille de nom name.
Definition EmptyMesh.h:203
IItemFamilyNetwork * itemFamilyNetwork() override
Interface du réseau de familles (familles connectées)
Definition EmptyMesh.h:504
MeshCollection childMeshes() const override
Liste des sous-maillages du maillage courant.
Definition EmptyMesh.h:448
CellGroup ownCells() override
Groupe de toutes les mailles propres au domaine.
Definition EmptyMesh.h:185
void setMeshPartInfo(const MeshPartInfo &) override
Positionne les informations de partitionnement.
Definition EmptyMesh.h:105
CellGroup allLevelCells(const Integer &) override
Groupe de toutes les mailles de niveau level.
Definition EmptyMesh.h:318
NodeGroup ownNodes() override
Groupe de tous les noeuds propres au domaine.
Definition EmptyMesh.h:170
IMeshInternal * _internalApi() override
API interne à Arcane.
Definition EmptyMesh.h:551
NodeGroup allNodes() override
Groupe de tous les noeuds.
Definition EmptyMesh.h:150
FaceGroup ownActiveFaces() override
Groupe de toutes les faces actives propres au domaine.
Definition EmptyMesh.h:333
bool isDynamic() const override
Indique si le maillage est dynamique (peut évoluer)
Definition EmptyMesh.h:383
void setCheckLevel(Integer) override
Positionne le niveau de vérification du maillage.
Definition EmptyMesh.h:377
String name() const override
Nom du maillage.
Definition EmptyMesh.h:110
bool isAllocated() override
Vrai si le maillage est allouée.
Definition EmptyMesh.h:273
IMeshUniqueIdMng * meshUniqueIdMng() const override
Gestionnare de la numérotation des identifiants uniques.
Definition EmptyMesh.h:483
IIndexedIncrementalItemConnectivityMng * indexedConnectivityMng() override
Interface du gestionnaire des connectivités incrémentales indexées.
Definition EmptyMesh.h:509
FaceGroup outerActiveFaces() override
Groupe de toutes les faces actives sur la frontière.
Definition EmptyMesh.h:343
IMesh * parentMesh() const override
Accès au maillage parent.
Definition EmptyMesh.h:437
CellGroup allCells() override
Groupe de toutes les mailles.
Definition EmptyMesh.h:165
String factoryName() const override
Nom de la fabrique utilisée pour créer le maillage.
Definition EmptyMesh.h:252
EdgeGroup ownEdges() override
Groupe de toutes les arêtes propres au domaine.
Definition EmptyMesh.h:175
void computeSynchronizeInfos() override
Recalcule les informations de synchronisation.
Definition EmptyMesh.h:546
Integer nbItem(eItemKind) override
Nombre d'éléments du genre ik.
Definition EmptyMesh.h:135
Vue constante d'un tableau de type T.
Interface du gestionnaire de traces.
Exception lorsqu'une fonction n'est pas implémentée.
Chaîne de caractères unicode.
eItemKind
Genre d'entité de maillage.
InternalConnectivityPolicy
Politique d'utilisation des connectivités.
Definition ItemTypes.h:516