Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
NewWithLegacyConnectivity.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2024 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/* ConnectivityNewWithDependenciesInfo.h (C) 2000-2024 */
9/* */
10/* Info for new connectivity mode (with dependencies) */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_MESH_CONNECTIVITYNEWWITHDEPENDENCIESINFO_H
13#define ARCANE_MESH_CONNECTIVITYNEWWITHDEPENDENCIESINFO_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
20
21#include "arcane/core/IIncrementalItemConnectivity.h"
22
23#include "arcane/mesh/MeshGlobal.h"
24#include "arcane/mesh/ConnectivityNewWithDependenciesTypes.h"
25#include "arcane/mesh/IncrementalItemConnectivity.h"
26#include "arcane/mesh/CompactIncrementalItemConnectivity.h"
27#include "arcane/mesh/ItemConnectivitySelector.h"
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
31
32namespace Arcane::mesh
33{
34
35/*---------------------------------------------------------------------------*/
36/*---------------------------------------------------------------------------*/
37
38// todo rename the file in NewWithLegacyConnectivity
39
40/*---------------------------------------------------------------------------*/
46template <class SourceFamily, class TargetFamily, class LegacyType, class CustomType = IncrementalItemConnectivity>
47class ARCANE_MESH_EXPORT NewWithLegacyConnectivity
48: public ItemConnectivitySelectorT<LegacyType,CustomType>
51{
53public:
54 friend class ConnectivityItemVector;
55
56public:
59 {
60 //build selector
61 Base::template build<SourceFamily,TargetFamily>(); // Create adapted custom connectivity
62 }
63
65
66 String name() const override {return Base::trueCustomConnectivity()->name();}
67
68 bool isEmpty() const {
69 return false ;
70 }
71
73 ConstArrayView<IItemFamily*> families() const override {return Base::trueCustomConnectivity()->families();}
74
76 IItemFamily* sourceFamily() const override {return Base::trueCustomConnectivity()->sourceFamily();}
77
79 IItemFamily* targetFamily() const override {return Base::trueCustomConnectivity()->targetFamily();}
80
83
86
88 void removeConnectedItems(ItemLocalId source_item) override {Base::removeConnectedItems(source_item);}
89
91 // Pourquoi cette différence de nom dans ItemConnectivitySelector ?
93
95 // Pourquoi cette différence de nom dans ItemConnectivitySelector ?
97
99 bool hasConnectedItem(ItemLocalId source_item, ItemLocalId target_local_id) const override { return Base::hasConnectedItem(source_item,target_local_id);};
100
101 //TODO: utiliser un mécanisme par évènement.
103 void notifySourceFamilyLocalIdChanged(Int32ConstArrayView new_to_old_ids) override {Base::trueCustomConnectivity()->notifySourceFamilyLocalIdChanged(new_to_old_ids);}
104
105 //TODO: utiliser un mécanisme par évènement.
107 void notifyTargetFamilyLocalIdChanged(Int32ConstArrayView old_to_new_ids) override {Base::trueCustomConnectivity()->notifyTargetFamilyLocalIdChanged(old_to_new_ids);}
108
110 void notifySourceItemAdded(ItemLocalId item) override {Base::trueCustomConnectivity()->notifySourceItemAdded(item);}
111
113 void notifyReadFromDump() override {Base::trueCustomConnectivity()->notifyReadFromDump();}
114
116 Integer preAllocatedSize() const override {return Base::preAllocatedSize();}
117
119 void setPreAllocatedSize(Integer value) override {Base::setPreAllocatedSize(value);}
120
122 void dumpStats(std::ostream& out) const override { Base::trueCustomConnectivity()->dumpStats(out); }
123
125 Integer nbConnectedItem(ItemLocalId lid) const override {return Base::trueCustomConnectivity()->nbConnectedItem(lid);}
126
128 Int32 connectedItemLocalId(ItemLocalId lid,Integer index) const override {return Base::trueCustomConnectivity()->connectedItemLocalId(lid,index);}
129
131 Int32 maxNbConnectedItem() const override { return Base::trueCustomConnectivity()->maxNbConnectedItem(); }
132
134 {
135 return Arccore::makeRef<IIncrementalItemSourceConnectivity>(this);
136 }
138 {
139 return Arccore::makeRef<IIncrementalItemTargetConnectivity>(this);
140 }
142 {
143 return Base::trueCustomConnectivity()->_internalApi();
144 }
145
146 protected:
147
149 void _initializeStorage(ConnectivityItemVector* civ) override {Base::trueCustomConnectivity()->_initializeStorage(civ);};
150
152 ItemVectorView _connectedItems(ItemLocalId item,ConnectivityItemVector& con_items) const override {return Base::trueCustomConnectivity()->_connectedItems(item,con_items);}
153
154};
155
156
157template <class SourceFamily, class TargetFamily>
163
164
165/*---------------------------------------------------------------------------*/
166/*---------------------------------------------------------------------------*/
167
168}
169
170/*---------------------------------------------------------------------------*/
171/*---------------------------------------------------------------------------*/
172
173#endif /* CONNECTIVITYNEWWITHDEPENDENCIESINFO_H_ */
Fichier de configuration d'Arcane.
#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.
Index d'un Item dans une variable.
Definition ItemLocalId.h:40
Vue sur un vecteur d'entités.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Sélection entre les connectivités historiques et à la demande.
Famille d'entités.
Definition ItemFamily.h:76
class holding a new connectivity but filling also the legacy one Both custom and legacy connectivitie...
ItemVectorView _connectedItems(ItemLocalId item, ConnectivityItemVector &con_items) const override
Remplit con_items avec les entités connectées à item.
IItemFamily * sourceFamily() const override
Famille source.
void _initializeStorage(ConnectivityItemVector *civ) override
Implémente l'initialisation de civ pour cette connectivitée.
void replaceConnectedItem(ItemLocalId source_item, Integer index, ItemLocalId target_local_id) override
Remplace l'entité d'index index de source_item par l'entité de localId() target_local_id.
void setPreAllocatedSize(Integer value) override
Positionne le nombre d'entités à préallouer pour la connectivité de chaque entité
String name() const override
Nom de la connectivité
void removeConnectedItems(ItemLocalId source_item) override
Supprime toute les entités connectées à source_item.
void notifyTargetFamilyLocalIdChanged(Int32ConstArrayView old_to_new_ids) override
Notifie la connectivité que la famille cible est compactée.
void dumpStats(std::ostream &out) const override
Sort sur le flot out des statistiques sur l'utilisation et la mémoire utilisée.
void notifySourceItemAdded(ItemLocalId item) override
Notifie la connectivité qu'une entité a été ajoutée à la famille source.
bool hasConnectedItem(ItemLocalId source_item, ItemLocalId target_local_id) const override
Test l'existence d'un connectivité entre source_item et l'entité de localId() target_local_id.
void addConnectedItem(ItemLocalId source_item, ItemLocalId target_local_id) override
Ajoute l'entité de localId() target_local_id à la connectivité de source_item.
Ref< IIncrementalItemTargetConnectivity > toTargetReference() override
Retourne une référence sur l'instance.
void notifyReadFromDump() override
Notifie la connectivité qu'on a effectué une relecture à partir d'une protection.
IItemFamily * targetFamily() const override
Famille cible.
Integer nbConnectedItem(ItemLocalId lid) const override
Nombre d'entité connectées à l'entité source de numéro local lid.
void replaceConnectedItems(ItemLocalId source_item, Int32ConstArrayView target_local_ids) override
Remplace les entités de source_item par les entités de localId() target_local_ids.
Ref< IIncrementalItemSourceConnectivity > toSourceReference() override
Retourne une référence sur l'instance.
Int32 connectedItemLocalId(ItemLocalId lid, Integer index) const override
localId() de la index-ième entitée connectées à l'entité source de numéro local lid
Integer preAllocatedSize() const override
Nombre d'entités préalloués pour la connectivité de chaque entité
Int32 maxNbConnectedItem() const override
Nombre maximum d'entités connectées à une entité source.
void removeConnectedItem(ItemLocalId source_item, ItemLocalId target_local_id) override
Supprime l'entité de localId() target_local_id à la connectivité de source_item.
void notifySourceFamilyLocalIdChanged(Int32ConstArrayView new_to_old_ids) override
Notifie la connectivité que la famille source est compactée.
IIncrementalItemConnectivityInternal * _internalApi() override
API interne à Arcane.
ConstArrayView< IItemFamily * > families() const override
Liste des familles (sourceFamily() + targetFamily())
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.