Arcane  v3.14.10.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-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/* ItemTypeMng.h (C) 2000-2022 */
9/* */
10/* Gestionnaire des types d'entité du maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_ITEMTYPEMNG_H
13#define ARCANE_ITEMTYPEMNG_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18#include "arcane/utils/Array.h"
19
20#include "arcane/ItemTypes.h"
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;
42class ItemTypeInfoBuilder;
43class IParallelSuperMng;
44template <class T>
45class MultiBufferT;
46
47/*---------------------------------------------------------------------------*/
48/*---------------------------------------------------------------------------*/
65class ARCANE_CORE_EXPORT ItemTypeMng
66{
67 // Ces classes sont ici temporairement tant que le singleton est accessible.
68 friend class mesh::DynamicMesh;
69 friend class mesh::PolyhedralMesh;
70 friend class Application;
71 friend class ArcaneMain;
72 friend class Item;
73
74 protected:
75
79
80 public:
81
83 void build(IParallelSuperMng* parallel_mng, ITraceMng* trace);
84
85 private:
86
94 static ItemTypeMng* _singleton();
95
101 static void _destroySingleton();
102
103 static String _legacyTypeName(Integer t);
104
105 public:
106
113 ARCCORE_DEPRECATED_2021("Use IMesh::itemTypeMng() to get an instance of ItemTypeMng")
114 static ItemTypeMng* singleton() { return _singleton(); }
115
121 ARCCORE_DEPRECATED_2021("Do not use this method")
122 static void destroySingleton() { _destroySingleton(); }
123
124 public:
125
127 ConstArrayView<ItemTypeInfo*> types() const;
128
130 ItemTypeInfo* typeFromId(Integer id) const;
131
133 ItemTypeInfo* typeFromId(ItemTypeId id) const;
134
136 String typeName(Integer id) const;
137
139 String typeName(ItemTypeId id) const;
140
142 void printTypes(std::ostream& ostr);
143
145 bool hasGeneralCells(IMesh* mesh) const;
146
148 void setMeshWithGeneralCells(IMesh* mesh) noexcept;
149
151 static Integer nbBasicItemType();
152
154 static Integer nbBuiltInItemType();
155
156 // AMR
157 static Int32 nbHChildrenByItemType(Integer type);
158
159 private:
160
162 void readTypes(IParallelSuperMng* parallel_mng, const String& filename);
163
164 private:
165
168
170 static const Integer m_nb_builtin_item_type;
171
173 bool m_initialized = false;
174
175 std::atomic<Int32> m_initialized_counter;
176
178 ITraceMng* m_trace = nullptr;
179
182
184 MultiBufferT<ItemTypeInfoBuilder>* m_types_buffer = nullptr;
185
188
189 public:
190
197
198 private:
199
200 void _build(IParallelSuperMng* parallel_mng, ITraceMng* trace);
201};
202
203/*---------------------------------------------------------------------------*/
204/*---------------------------------------------------------------------------*/
205
206} // End namespace Arcane
207
208/*---------------------------------------------------------------------------*/
209/*---------------------------------------------------------------------------*/
210
211#endif
Déclarations des types utilisés dans Arcane.
Classe de gestion de l'exécution.
Definition ArcaneMain.h:80
Classe abstraite du superviseur de parallélisme.
Type d'une entité (Item).
Definition ItemTypeId.h:32
Infos sur un type d'entité du maillage.
Gestionnaire des types d'entités de maillage.
Definition ItemTypeMng.h:66
UniqueArray< Integer > m_ids_buffer
Tampon d'allocation des données de type.
std::set< IMesh * > m_mesh_with_general_cells
Ensemble des maillages contenant des mailles générales (sans type défini)
UniqueArray< ItemTypeInfo * > m_types
Liste des types.
static ItemTypeMng * singleton_instance
Instance singleton.
static const Integer m_nb_builtin_item_type
Nombre de types intégrés (hors types additionnels)
Classe de base d'un élément de maillage.
Definition Item.h:83
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Implémentation d'un maillage.
Definition DynamicMesh.h:97
Interface du gestionnaire de traces.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-