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"
47 FamilyState(
const FamilyState&) =
default;
48 virtual ~FamilyState() =
default;
71class ConnectivityStateData
74 ConnectivityStateData() : m_last_family_state(-1), m_last_added_item_index(-1), m_last_removed_item_index(-1) {}
75 ConnectivityStateData(
const ConnectivityStateData&) =
default;
76 virtual ~ConnectivityStateData() =
default;
80 Integer m_last_added_item_index;
81 Integer m_last_removed_item_index;
84class ConnectivityState
88 ConnectivityState(
const ConnectivityState&) =
default;
89 virtual ~ConnectivityState() =
default;
110 for (
const auto& map_element : m_synchronizers) {
111 if (map_element.second)
delete map_element.second;
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;
176 return (_lastUpdateSourceFamilyState(connectivity->
name()) == _familyState(connectivity->
sourceFamily()->
fullName()));
180 return (_lastUpdateTargetFamilyState(connectivity->
name()) == _familyState(connectivity->
targetFamily()->
fullName()));
193 return (_lastUpdateSourceFamilyState(connectivity->
name()) == _familyState(connectivity->
sourceFamily()->
fullName()));
197 return (_lastUpdateTargetFamilyState(connectivity->
name()) == _familyState(connectivity->
targetFamily()->
fullName()));
217 void _register(
const String& connectivity_name,
const String& from_family_name,
const String& to_family_name);
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é
virtual String fullName() const =0
Nom complet de la famille (avec celui du maillage)
Interface du gestionnaire de traces.
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
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
SharedArray< Int32 > Int32SharedArray
Tableau dynamique à une dimension d'entiers 32 bits.
UniqueArray< Int32 > Int32UniqueArray
Tableau dynamique à une dimension d'entiers 32 bits.
ArrayView< Int32 > Int32ArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
SharedArray< Integer > IntegerSharedArray
Tableau dynamique à une dimension d'entiers.