12#ifndef ARCANE_CONNECTIVITYMANAGER_H
13#define ARCANE_CONNECTIVITYMANAGER_H
18#include "arcane/utils/ITraceMng.h"
19#include "arcane/utils/Array.h"
21#include "arcane/IItemConnectivity.h"
22#include "arcane/IItemConnectivityMng.h"
23#include "arcane/IItemConnectivitySynchronizer.h"
24#include "arcane/IIncrementalItemConnectivity.h"
25#include "arcane/IItemFamily.h"
38class IItemConnectivityGhostPolicy;
74 ConnectivityStateData() : m_last_family_state(-1), m_last_added_item_index(-1), m_last_removed_item_index(-1) {}
79 Integer m_last_family_state;
80 Integer m_last_added_item_index;
81 Integer m_last_removed_item_index;
118 connectivity->
sourceFamily()->addSourceConnectivity(connectivity);
119 connectivity->
targetFamily()->addTargetConnectivity(connectivity);
128 connectivity->
sourceFamily()->removeSourceConnectivity(connectivity);
129 connectivity->
targetFamily()->removeTargetConnectivity(connectivity);
133 void registerConnectivity(IIncrementalItemConnectivity* connectivity)
override
138 connectivity->sourceFamily()->setConnectivityMng(
this);
139 connectivity->targetFamily()->setConnectivityMng(
this);
140 _register(connectivity->name(),connectivity->sourceFamily()->fullName(),connectivity->targetFamily()->fullName());
143 void unregisterConnectivity([[maybe_unused]] IIncrementalItemConnectivity* connectivity)
override
155 IItemConnectivitySynchronizer* createSynchronizer(IItemConnectivity* connectivity,
156 IItemConnectivityGhostPolicy* connectivity_ghost_policy)
override;
157 IItemConnectivitySynchronizer* getSynchronizer(IItemConnectivity* connectivity)
override
160 return m_synchronizers[connectivity];
164 void setModifiedItems(IItemFamily* family, Int32ConstArrayView added_items,Int32ConstArrayView removed_items)
override;
167 void notifyLocalIdChanged(IItemFamily* family, Int32ConstArrayView old_to_new_ids,Integer nb_item)
override;
172 return (isUpToDateWithSourceFamily(connectivity) && isUpToDateWithTargetFamily(connectivity));
176 return (_lastUpdateSourceFamilyState(connectivity->
name()) == _familyState(connectivity->
sourceFamily()->fullName()));
180 return (_lastUpdateTargetFamilyState(connectivity->
name()) == _familyState(connectivity->
targetFamily()->fullName()));
189 return (isUpToDateWithSourceFamily(connectivity) && isUpToDateWithTargetFamily(connectivity));
193 return (_lastUpdateSourceFamilyState(connectivity->
name()) == _familyState(connectivity->
sourceFamily()->fullName()));
197 return (_lastUpdateTargetFamilyState(connectivity->
name()) == _familyState(connectivity->
targetFamily()->fullName()));
218 Integer _lastUpdateSourceFamilyState(
const String& connectivity_name);
219 Integer _lastUpdateTargetFamilyState(
const String& connectivity_name);
227 std::map<IItemConnectivity*,IItemConnectivitySynchronizer*> m_synchronizers;
228 typedef std::map<const String,FamilyState> FamilyStateMap;
229 FamilyStateMap m_family_states;
230 typedef std::map<const String,ConnectivityState> ConnectivityStateMap;
231 ConnectivityStateMap m_connectivity_states;
Fichier de configuration d'Arcane.
Int32SharedArray m_removed_items
idem
Int32SharedArray m_added_items
Concatenation of all the family changes during the simulation.
IntegerSharedArray m_state_first_removed_item_index
Int32UniqueArray m_current_added_items
Current added items (no history)
IntegerSharedArray m_state_first_added_item_index
Interface pour gérer une connectivité incrémentale.
virtual String name() const =0
Nom de la connectivité
virtual IItemFamily * targetFamily() const =0
Famille cible.
virtual IItemFamily * sourceFamily() const =0
Famille source.
Interface pour gérer une connectivité.
virtual IItemFamily * targetFamily() const =0
Famille cible.
virtual IItemFamily * sourceFamily() const =0
Famille source.
virtual const String & name() const =0
Nom de la connectivité
bool isUpToDateWithSourceFamily(IIncrementalItemConnectivity *connectivity) override
par rapport à la famille source et à la famille target
bool isUpToDateWithSourceFamily(IItemConnectivity *connectivity) override
par rapport à la famille source et à la famille target
bool isUpToDateWithTargetFamily(IIncrementalItemConnectivity *connectivity) override
par rapport à la famille source
void registerConnectivity(IItemConnectivity *connectivity) override
Enregistrement d'une connectivité
ItemConnectivityMng(ITraceMng *trace_mng)
bool isUpToDateWithTargetFamily(IItemConnectivity *connectivity) override
par rapport à la famille source
bool isUpToDate(IItemConnectivity *connectivity) override
Test si la connectivité est à jour par rapport à la famille source et à la famille target.
bool isUpToDate(IIncrementalItemConnectivity *connectivity) override
Test si la connectivité est à jour par rapport à la famille source et à la famille target.
~ItemConnectivityMng() override
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Vue modifiable d'un tableau d'un type T.
Interface du gestionnaire de traces.
Vecteur 1D de données avec sémantique par référence.
Chaîne de caractères unicode.
Vecteur 1D de données avec sémantique par valeur (style STL).
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-