12#ifndef ARCANE_MESH_INCREMENTALITEMCONNECTIVITY_H
13#define ARCANE_MESH_INCREMENTALITEMCONNECTIVITY_H
19#include "arcane/utils/TraceAccessor.h"
21#include "arcane/core/IItemFamily.h"
22#include "arcane/core/ItemVector.h"
23#include "arcane/core/VariableTypes.h"
24#include "arcane/core/IIncrementalItemConnectivity.h"
26#include "arcane/mesh/MeshGlobal.h"
33class ItemConnectivityMemoryInfo;
42class IncrementalItemConnectivityContainer;
43class IndexedItemConnectivityAccessor;
64 const String& connectivity_name);
82 IItemFamily* _sourceFamily()
const {
return m_source_family;}
83 IItemFamily* _targetFamily()
const {
return m_target_family;}
87 IItemFamily* m_source_family;
88 IItemFamily* m_target_family;
89 SharedArray<IItemFamily*> m_families;
105 template <
class SourceFamily,
class TargetFamily,
class LegacyType,
class CustomType>
128 return m_connectivity_nb_item[
lid];
132 return m_connectivity_list[ m_connectivity_index[
lid] + index ];
139 Int32 maxNbConnectedItem()
const override;
148 Int32 nb = m_connectivity_nb_item[
lid];
149 Int32 index = m_connectivity_index[
lid];
150 return { nb, &m_connectivity_list[index] };
154 Int32ArrayView _connectedItemsLocalId(ItemLocalId lid)
156 Int32 nb = m_connectivity_nb_item[lid];
157 Int32 index = m_connectivity_index[lid];
158 return { nb, &m_connectivity_list[index] };
163 Int32ArrayView connectivityIndex() {
return m_connectivity_index; }
166 void setItemConnectivityList(ItemInternalConnectivityList* ilist,
Int32 index);
179 bool m_is_empty =
true;
185 Integer m_item_connectivity_index = -1;
186 std::unique_ptr<InternalApi> m_internal_api;
190 void _notifyConnectivityListChanged();
191 void _notifyConnectivityIndexChanged();
192 void _notifyConnectivityNbItemChanged();
193 void _notifyConnectivityNbItemChangedFromObservable();
194 void _computeMaxNbConnectedItem();
195 void _setNewMaxNbConnectedItems(Int32
new_max);
196 void _setMaxNbConnectedItemsInConnectivityList();
200 void _shrinkMemory();
233 void notifySourceItemAdded(
ItemLocalId item)
override;
234 void notifyReadFromDump()
override;
243 void setPreAllocatedSize(Integer value)
final;
245 void dumpStats(std::ostream& out)
const override;
247 void compactConnectivityList();
252 Int64 m_nb_remove = 0;
253 Int64 m_nb_memcopy = 0;
254 Integer m_pre_allocated_size = 0;
258 inline void _increaseIndexList(Int32
lid,Integer size,Int32
target_lid);
259 inline Integer _increaseConnectivityList(Int32
new_lid);
260 inline Integer _increaseConnectivityList(Int32
new_lid,Integer
nb_value);
261 inline Integer _computeAllocSize(Integer
nb_item);
262 void _checkAddNullItem();
263 void _resetConnectivityList();
298 void notifySourceItemAdded(
ItemLocalId item)
override;
299 void notifyReadFromDump()
override;
301 void setPreAllocatedSize([[
maybe_unused]] Int32 value)
final {}
305 void dumpStats(std::ostream& out)
const override;
307 void compactConnectivityList();
311 inline void _checkResizeConnectivityList();
#define ARCCORE_DEFINE_REFERENCE_COUNTED_INCLASS_METHODS()
Macro pour définir les méthodes gérant les compteurs de référence.
Gère la récupération des informations de connectivité.
API interne à Arcane de IIncrementalItemConnectivity.
Interface pour gérer une connectivité incrémentale.
Interface d'une famille d'entités.
Classe de base d'une vue sur une connectivité non structurée.
Vues sur les conteneurs contenant les connectivités. Cette classe permet de rendre opaque en dehors d...
Informations sur l'utilisation mémoire pour les connectivités.
Informations de connectivité, pour une famille d'entité, permettant la transition entre les anciennes...
Index d'un Item dans une variable.
Vue sur un vecteur d'entités.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Classe abstraite de gestion des connectivités.
String name() const final
Nom de la connectivité
ConstArrayView< IItemFamily * > families() const override
Liste des familles (sourceFamily() + targetFamily())
IItemFamily * sourceFamily() const override
Famille source.
IItemFamily * targetFamily() const override
Famille cible.
Classe de base pour les connectivités incrémentales item->item[].
void _initializeStorage(ConnectivityItemVector *civ) override
Implémente l'initialisation de civ pour cette connectivitée.
Int32 connectedItemLocalId(ItemLocalId lid, Integer index) const final
localId() de la index-ième entitée connectées à l'entité source de numéro local lid
Integer nbConnectedItem(ItemLocalId lid) const final
Nombre d'entité connectées à l'entité source de numéro local lid.
Connectivité incrémentale item->item[].
Integer preAllocatedSize() const final
Nombre d'entités pré-alloués pour la connectivité de chaque entité
Interface du gestionnaire des connectivités incrémentales indexées sur les entités.
class holding a new connectivity but filling also the legacy one Both custom and legacy connectivitie...
Connectivité incrémentale item->item.
Integer preAllocatedSize() const final
Nombre d'entités pré-alloués pour la connectivité de chaque entité
Vue modifiable d'un tableau d'un type T.
Vue constante d'un tableau de type T.
Implémentation thread-safe d'un compteur de référence.
Chaîne de caractères unicode.
Classe d'accès aux traces.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
ArrayView< Int32 > Int32ArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.