Arcane  v3.16.2.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
ItemTypeMng.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/* ItemTypeMng.h (C) 2000-2025 */
9/* */
10/* Gestionnaire des types d'entité du maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_ITEMTYPEMNG_H
13#define ARCANE_CORE_ITEMTYPEMNG_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18#include "arcane/utils/Array.h"
19
21
22#include <set>
23#include <atomic>
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
28namespace Arcane
29{
30namespace mesh
31{
32 // TEMPORAIRE: pour que ces classes aient accès au singleton.
33 class DynamicMesh;
34 class PolyhedralMesh;
35} // namespace mesh
36class ArcaneMain;
37
38/*---------------------------------------------------------------------------*/
39/*---------------------------------------------------------------------------*/
40
41class ItemTypeInfo;
44template <class T>
45class MultiBufferT;
46
47/*---------------------------------------------------------------------------*/
48/*---------------------------------------------------------------------------*/
64class ARCANE_CORE_EXPORT ItemTypeMng
65{
66 // Ces classes sont ici temporairement tant que le singleton est accessible.
67 friend class mesh::DynamicMesh;
68 friend class mesh::PolyhedralMesh;
69 friend class Application;
70 friend class ArcaneMain;
71 friend class Item;
72 friend ItemTypeInfo;
73 friend ItemTypeInfoBuilder;
74
75 protected:
76
80
81 public:
82
91 ARCCORE_DEPRECATED_REASON("Y2025: Use build(IMesh*) instead")
92 void build(IParallelSuperMng* parallel_mng, ITraceMng* trace);
93
97 void build(IMesh* mesh);
98
99 private:
100
108 static ItemTypeMng* _singleton();
109
115 static void _destroySingleton();
116
117 static String _legacyTypeName(Integer t);
118
119 public:
120
127 ARCCORE_DEPRECATED_2021("Use IMesh::itemTypeMng() to get an instance of ItemTypeMng")
128 static ItemTypeMng* singleton() { return _singleton(); }
129
135 ARCCORE_DEPRECATED_2021("Do not use this method")
137
138 public:
139
141 ConstArrayView<ItemTypeInfo*> types() const;
142
144 ItemTypeInfo* typeFromId(Integer id) const;
145
147 ItemTypeInfo* typeFromId(ItemTypeId id) const;
148
150 String typeName(Integer id) const;
151
153 String typeName(ItemTypeId id) const;
154
156 void printTypes(std::ostream& ostr);
157
159 bool hasGeneralCells(IMesh* mesh) const;
160
162 void setMeshWithGeneralCells(IMesh* mesh) noexcept;
163
165 static Integer nbBasicItemType();
166
168 static Integer nbBuiltInItemType();
169
170 // AMR
171 static Int32 nbHChildrenByItemType(Integer type);
172
173 private:
174
177
180
182 bool m_initialized = false;
183
184 std::atomic<Int32> m_initialized_counter = 0;
185
187 ITraceMng* m_trace = nullptr;
188
191
194
197
200
201 private:
202
203 void _buildSingleton(IParallelSuperMng* parallel_mng, ITraceMng* trace);
204 void _buildTypes(IMesh* mesh, IParallelSuperMng* parallel_mng, ITraceMng* trace);
206 void _readTypes(IParallelSuperMng* parallel_mng, const String& filename);
207};
208
209/*---------------------------------------------------------------------------*/
210/*---------------------------------------------------------------------------*/
211
212} // End namespace Arcane
213
214/*---------------------------------------------------------------------------*/
215/*---------------------------------------------------------------------------*/
216
217#endif
Déclarations de types sur les entités.
Déclarations des types utilisés dans Arcane.
Classe de gestion de l'exécution.
Definition ArcaneMain.h:80
Vue constante d'un tableau de type T.
Classe abstraite du superviseur de parallélisme.
Interface du gestionnaire de traces.
Type d'une entité (Item).
Definition ItemTypeId.h:32
Construction des infos d'un type d'entité du maillage.
Infos sur un type d'entité du maillage.
static void _destroySingleton()
Détruit le singleton.
ItemTypeMng()
Constructeur vide (non initialisé)
void _readTypes(IParallelSuperMng *parallel_mng, const String &filename)
Lecture des types a partir d'un fichier de nom filename.
UniqueArray< Integer > m_ids_buffer
Tableau contenant les données de type.
void _buildTypes(IMesh *mesh, IParallelSuperMng *parallel_mng, ITraceMng *trace)
Construit les types des entités.
static ItemTypeMng * singleton()
Instance singleton du type.
ITraceMng * m_trace
Gestionnaire de traces.
std::set< IMesh * > m_mesh_with_general_cells
Ensemble des maillages contenant des mailles générales (sans type défini)
bool m_initialized
Flag d'initialisation.
void build(IParallelSuperMng *parallel_mng, ITraceMng *trace)
Constructeur effectif.
UniqueArray< ItemTypeInfo * > m_types
Liste des types.
static ItemTypeMng * singleton_instance
Instance singleton.
MultiBufferT< ItemTypeInfoBuilder > * m_types_buffer
Allocations des objets de type (il faut un pointeur pour éviter inclusion multiple)
static ItemTypeMng * _singleton()
Instance singleton du type.
static const Integer m_nb_builtin_item_type
Nombre de types intégrés (hors types additionnels)
static void destroySingleton()
Détruit le singleton.
Tampon pour allocation multiple.
Definition MultiBuffer.h:44
Chaîne de caractères unicode.
Vecteur 1D de données avec sémantique par valeur (style STL).
Implémentation d'un maillage.
Definition DynamicMesh.h:97
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
std::int32_t Int32
Type entier signé sur 32 bits.