14#include "arcane/mesh/IncrementalItemConnectivity.h"
16#include "arcane/utils/StringBuilder.h"
17#include "arcane/utils/ArgumentException.h"
18#include "arcane/utils/PlatformUtils.h"
20#include "arcane/core/IMesh.h"
21#include "arcane/core/IItemFamily.h"
22#include "arcane/core/ConnectivityItemVector.h"
24#include "arcane/core/ObserverPool.h"
25#include "arcane/core/Properties.h"
26#include "arcane/core/IndexedItemConnectivityView.h"
27#include "arcane/core/internal/IDataInternal.h"
28#include "arcane/core/internal/IItemFamilyInternal.h"
29#include "arcane/core/internal/IIncrementalItemConnectivityInternal.h"
31#include "arcane/mesh/IndexedItemConnectivityAccessor.h"
42IndexedItemConnectivityAccessor::
43IndexedItemConnectivityAccessor(IndexedItemConnectivityViewBase view, IItemFamily* target_item_family)
44: IndexedItemConnectivityViewBase(view)
45, m_item_shared_info(target_item_family->_internalApi()->commonItemSharedInfo())
51IndexedItemConnectivityAccessor::
52IndexedItemConnectivityAccessor(IIncrementalItemConnectivity* connectivity)
53: m_item_shared_info(connectivity->targetFamily()->_internalApi()->commonItemSharedInfo())
55 auto* ptr =
dynamic_cast<mesh::IncrementalItemConnectivityBase*
>(connectivity);
57 IndexedItemConnectivityViewBase::set(ptr->connectivityView()) ;
63AbstractIncrementalItemConnectivity::
64AbstractIncrementalItemConnectivity(IItemFamily* source_family,
65 IItemFamily* target_family,
66 const String& connectivity_name)
67: TraceAccessor(source_family->traceMng())
68, m_source_family(source_family)
69, m_target_family(target_family)
70, m_name(connectivity_name)
72 m_families.add(m_source_family);
73 m_families.add(m_target_family);
76 source_family->_internalApi()->addSourceConnectivity(
this);
77 target_family->_internalApi()->addTargetConnectivity(
this);
104class IncrementalItemConnectivityContainer
108 IncrementalItemConnectivityContainer(
IMesh*
mesh,
const String& var_name)
109 : m_var_name(var_name),
113 m_connectivity_nb_item_array(m_connectivity_nb_item_variable._internalTrueData()->_internalDeprecatedValue()),
114 m_connectivity_index_array(m_connectivity_index_variable._internalTrueData()->_internalDeprecatedValue()),
115 m_connectivity_list_array(m_connectivity_list_variable._internalTrueData()->_internalDeprecatedValue())
120 String tag_name =
"ArcaneConnectivity";
121 m_connectivity_nb_item_variable.addTag(tag_name,
"1");
122 m_connectivity_index_variable.addTag(tag_name,
"1");
123 m_connectivity_list_variable.addTag(tag_name,
"1");
149 Integer size()
const {
return m_connectivity_nb_item_array.size(); }
151 bool isAllocated()
const {
return size()>0; }
153 void _checkResize(
Int32 lid)
156 Integer size = m_connectivity_nb_item_array.
size();
158 if (wanted_size<size)
161 if (wanted_size<capacity){
165 Integer reserve_size = 1000;
166 while (lid>reserve_size){
169 m_connectivity_nb_item_array.
reserve(reserve_size);
170 m_connectivity_index_array.
reserve(reserve_size);
172 m_connectivity_nb_item_array.
resize(wanted_size);
173 m_connectivity_index_array.
resize(wanted_size);
176 void reserveForItems(Int32 capacity)
178 m_connectivity_nb_item_array.
reserve(capacity);
179 m_connectivity_index_array.
reserve(capacity);
194 explicit InternalApi(IncrementalItemConnectivityBase* v)
200 void shrinkMemory()
override {
return m_internal_api->_shrinkMemory(); }
203 m_internal_api->_addMemoryInfos(mem_info);
208 IncrementalItemConnectivityBase* m_internal_api =
nullptr;
214IncrementalItemConnectivityBase::
218, m_internal_api(std::make_unique<InternalApi>(this))
222 var_name += source_family->
name();
223 var_name += target_family->
name();
231 m_p->m_observers.addObserver(
this,&ThatClass::_notifyConnectivityNbItemChangedFromObservable,
232 m_p->m_connectivity_nb_item_variable.variable()->readObservable());
234 m_p->m_observers.addObserver(
this,&ThatClass::_notifyConnectivityIndexChanged,
235 m_p->m_connectivity_index_variable.variable()->readObservable());
237 m_p->m_observers.addObserver(
this,&ThatClass::_notifyConnectivityListChanged,
238 m_p->m_connectivity_list_variable.variable()->readObservable());
243 _notifyConnectivityListChanged();
244 _notifyConnectivityIndexChanged();
251IncrementalItemConnectivityBase::
252~IncrementalItemConnectivityBase()
266 m_p->reserveForItems(n);
267 _notifyConnectivityIndexChanged();
268 _notifyConnectivityNbItemChanged();
270 if (pre_alloc_connectivity){
272 if (pre_alloc_size>0){
273 m_p->m_connectivity_list_array.reserve(n * pre_alloc_size);
274 _notifyConnectivityListChanged();
282void IncrementalItemConnectivityBase::
283_notifyConnectivityListChanged()
285 m_connectivity_list = m_p->m_connectivity_list_array.
view();
286 if (m_item_connectivity_list)
293void IncrementalItemConnectivityBase::
294_notifyConnectivityIndexChanged()
296 m_connectivity_index = m_p->m_connectivity_index_array.
view();
297 if (m_item_connectivity_list)
304void IncrementalItemConnectivityBase::
305_notifyConnectivityNbItemChanged()
307 m_connectivity_nb_item = m_p->m_connectivity_nb_item_array.
view();
308 if (m_item_connectivity_list)
315void IncrementalItemConnectivityBase::
316_setMaxNbConnectedItemsInConnectivityList()
318 if (m_item_connectivity_list)
319 m_item_connectivity_list->_setMaxNbConnectedItem(m_item_connectivity_index,m_p->m_max_nb_item);
331 _notifyConnectivityNbItemChanged();
332 _computeMaxNbConnectedItem();
338void IncrementalItemConnectivityBase::
339_setNewMaxNbConnectedItems(
Int32 new_max)
343 _setMaxNbConnectedItemsInConnectivityList();
350void IncrementalItemConnectivityBase::
351_computeMaxNbConnectedItem()
355 Int32 max_nb_item = 0;
356 for( Int32 x : m_connectivity_nb_item )
359 _setNewMaxNbConnectedItems(max_nb_item);
368 return m_p->m_max_nb_item;
383 info(4) <<
"setItemConnectivityList name=" <<
name() <<
" ilist=" << ilist <<
" index=" << index;
384 m_item_connectivity_list = ilist;
385 m_item_connectivity_index = index;
386 _notifyConnectivityListChanged();
387 _notifyConnectivityIndexChanged();
388 _notifyConnectivityNbItemChanged();
389 _setMaxNbConnectedItemsInConnectivityList();
398 if(m_p->isAllocated()){
399 m_p->m_connectivity_nb_item_variable.variable()->compact(new_to_old_ids);
400 m_p->m_connectivity_index_variable.variable()->compact(new_to_old_ids);
401 _notifyConnectivityNbItemChanged();
402 _notifyConnectivityIndexChanged();
415 if (ids[i]!=NULL_ITEM_LOCAL_ID)
416 ids[i] = old_to_new_ids[ ids[i] ];
425 return con_items.
resizeAndCopy(_connectedItemsLocalId(item));
432connectivityContainerView()
const
434 return { m_connectivity_list, m_connectivity_index, m_connectivity_nb_item };
440IndexedItemConnectivityViewBase IncrementalItemConnectivityBase::
441connectivityView()
const
443 return { connectivityContainerView(), _sourceFamily()->
itemKind(), _targetFamily()->
itemKind()};
449IndexedItemConnectivityAccessor IncrementalItemConnectivityBase::
450connectivityAccessor()
const
452 return IndexedItemConnectivityAccessor(connectivityView(),_targetFamily());
461 return m_internal_api.get();
467void IncrementalItemConnectivityBase::
470 info() <<
"Infos index=" << m_connectivity_index;
471 info() <<
"Infos nb_item=" << m_connectivity_nb_item;
472 info() <<
"Infos list=" << m_connectivity_list;
481IncrementalItemConnectivity::
484: IncrementalItemConnectivityBase(source_family,target_family,aname)
488, m_pre_allocated_size(0)
491 info(4) <<
"PreallocSize1 var=" << m_p->m_var_name <<
" v=" << m_pre_allocated_size;
500IncrementalItemConnectivity::
501~IncrementalItemConnectivity()
503 info(4) <<
" connectivity name=" <<
name()
504 <<
" prealloc_size=" << m_pre_allocated_size
505 <<
" nb_add=" << m_nb_add
506 <<
" nb_remove=" << m_nb_remove
507 <<
" nb_memcopy=" << m_nb_memcopy;
513inline Integer IncrementalItemConnectivity::
514_increaseConnectivityList(
Int32 new_lid)
516 Integer pos_in_list = m_connectivity_list.size();
517 m_p->m_connectivity_list_array.add(new_lid);
518 _notifyConnectivityListChanged();
525inline Integer IncrementalItemConnectivity::
526_increaseConnectivityList(
Int32 new_lid,
Integer nb_value)
528 Integer pos_in_list = m_connectivity_list.size();
529 m_p->m_connectivity_list_array.addRange(new_lid,nb_value);
530 _notifyConnectivityListChanged();
537void IncrementalItemConnectivity::
538_resetConnectivityList()
540 m_p->m_connectivity_list_array.clear();
541 _notifyConnectivityListChanged();
548void IncrementalItemConnectivity::
551 Integer added_range = (m_pre_allocated_size>0) ? m_pre_allocated_size : 1;
553 Integer pos_in_index = m_connectivity_index[lid];
554 Integer new_pos_in_list = _increaseConnectivityList(NULL_ITEM_LOCAL_ID,size+added_range);
555 ArrayView<Int32> current_list(size,&(m_connectivity_list[pos_in_index]));
556 ArrayView<Int32> new_list(size+1,&(m_connectivity_list[new_pos_in_list]));
557 new_list.copy(current_list);
560 new_list[size] = target_lid;
561 m_connectivity_index[lid] = new_pos_in_list;
571 const Int32 lid = source_item.localId();
572 const Int32 target_lid = target_item.localId();
573 Integer size = m_connectivity_nb_item[lid];
583 if (m_pre_allocated_size!=0){
587 Integer new_pos_in_list = _increaseConnectivityList(NULL_ITEM_LOCAL_ID,m_pre_allocated_size);
588 m_connectivity_index[lid] = new_pos_in_list;
589 m_connectivity_list[new_pos_in_list] = target_lid;
592 if (size<m_pre_allocated_size || (size%m_pre_allocated_size)!=0){
593 Integer index = m_connectivity_index[lid];
594 m_connectivity_list[index+size] = target_lid;
597 _increaseIndexList(lid,size,target_lid);
603 Integer new_pos_in_list = _increaseConnectivityList(target_lid);
604 m_connectivity_index[lid] = new_pos_in_list;
607 _increaseIndexList(lid,size,target_lid);
610 ++(m_connectivity_nb_item[lid]);
611 _setNewMaxNbConnectedItems(m_connectivity_nb_item[lid]);
617Integer IncrementalItemConnectivity::
618_computeAllocSize(
Integer nb_item)
620 if (m_pre_allocated_size!=0){
622 Integer alloc_size = nb_item / m_pre_allocated_size;
624 return m_pre_allocated_size;
625 if ((nb_item%m_pre_allocated_size)==0)
627 return m_pre_allocated_size * (alloc_size + 1);
635void IncrementalItemConnectivity::
636addConnectedItems(ItemLocalId source_item,
Integer nb_item)
638 const Int32 lid = source_item.localId();
639 Integer size = m_connectivity_nb_item[lid];
641 ARCANE_FATAL(
"source_item already have connected items");
642 Integer alloc_size = _computeAllocSize(nb_item);
643 Integer new_pos_in_list = _increaseConnectivityList(NULL_ITEM_LOCAL_ID,alloc_size);
644 m_connectivity_index[lid] = new_pos_in_list;
645 m_connectivity_nb_item[lid] += nb_item;
646 _setNewMaxNbConnectedItems(m_connectivity_nb_item[lid]);
656 addConnectedItems(source_item, target_local_ids.
size());
666 Int32 lid = source_item.localId();
667 m_connectivity_nb_item[lid] = 0;
677 Int32 lid = source_item.localId();
678 Int32 target_lid = target_item.localId();
679 Integer size = m_connectivity_nb_item[lid];
680 Int32* items = &(m_connectivity_list[ m_connectivity_index[lid] ]);
682 --(m_connectivity_nb_item[lid]);
691 Int32 lid = source_item.localId();
692 Int32 target_lid = target_item.localId();
693 ARCANE_CHECK_AT(index,m_connectivity_nb_item[lid]);
694 m_connectivity_list[ m_connectivity_index[lid] + index ] = target_lid;
703 Int32 lid = source_item.localId();
706 ARCANE_CHECK_AT(n - 1, m_connectivity_nb_item[lid]);
707 const Int32 pos = m_connectivity_index[lid];
708 for (
Integer i = 0; i < n; ++i)
709 m_connectivity_list[pos + i] = target_local_ids[i];
719 bool has_connection =
false;
720 auto connected_items = _connectedItemsLocalId(source_item);
721 if (std::find(connected_items.begin(), connected_items.end(), target_local_id) != connected_items.end())
722 has_connection =
true;
723 return has_connection;
733 Int32 lid = item.localId();
734 m_p->_checkResize(lid);
735 _notifyConnectivityIndexChanged();
736 _notifyConnectivityNbItemChanged();
738 m_connectivity_nb_item[lid] = 0;
739 m_connectivity_index[lid] = 0;
745void IncrementalItemConnectivity::
752 Int32 max_lid = local_ids[0];
753 for (
Int32 lid : local_ids)
756 m_p->_checkResize(max_lid);
757 _notifyConnectivityIndexChanged();
758 _notifyConnectivityNbItemChanged();
760 for (
Int32 lid : local_ids) {
761 m_connectivity_nb_item[lid] = 0;
762 m_connectivity_index[lid] = 0;
772 m_pre_allocated_size = _sourceFamily()->properties()->getIntegerWithDefault(
name()+
"PreallocSize",0);
773 info(4) <<
"PreallocSize2 var=" << m_p->m_var_name <<
" v=" << m_pre_allocated_size;
785 if (m_pre_allocated_size<0)
787 String::format(
"Invalid prealloc_size v={0}",
795 if (m_connectivity_nb_item.size()!=0)
798 m_pre_allocated_size = prealloc_size;
799 _sourceFamily()->properties()->setInteger(
name()+
"PreallocSize",prealloc_size);
804 _resetConnectivityList();
813 Int64 mem1 = m_p->m_connectivity_list_array.capacity();
814 Int64 mem2 = m_p->m_connectivity_index_array.capacity();
815 Int64 mem3 = m_p->m_connectivity_nb_item_array.capacity();
816 Int64 allocated_size = mem1 + mem2 + mem3;
817 allocated_size *=
sizeof(
Int32);
819 out <<
" connectiviy name=" <<
name()
820 <<
" prealloc_size=" << m_pre_allocated_size
821 <<
" nb_add=" << m_nb_add
822 <<
" nb_remove=" << m_nb_remove
823 <<
" nb_memcopy=" << m_nb_memcopy
824 <<
" list_size=" << m_connectivity_list.size()
825 <<
" list_capacity=" << mem1
826 <<
" index_size=" << m_connectivity_index.size()
827 <<
" index_capacity=" << mem2
828 <<
" nb_item_size=" << m_connectivity_nb_item.size()
829 <<
" nb_item_capacity=" << mem3
830 <<
" allocated_size=" << allocated_size;
836void IncrementalItemConnectivityBase::
839 m_p->m_connectivity_list_array.
shrink();
840 m_p->m_connectivity_index_array.
shrink();
841 m_p->m_connectivity_nb_item_array.
shrink();
842 _notifyConnectivityIndexChanged();
843 _notifyConnectivityNbItemChanged();
844 _notifyConnectivityListChanged();
850void IncrementalItemConnectivityBase::
853 Int64 s1 = m_p->m_connectivity_list_array.
size();
854 Int64 s2 = m_p->m_connectivity_index_array.
size();
855 Int64 s3 = m_p->m_connectivity_nb_item_array.
size();
867void IncrementalItemConnectivity::
874 if (m_connectivity_list.
size()==0){
875 if (m_pre_allocated_size>0){
876 _increaseConnectivityList(NULL_ITEM_LOCAL_ID,m_pre_allocated_size);
879 _increaseConnectivityList(NULL_ITEM_LOCAL_ID);
900 info(4) <<
"Begin Compacting IncrementalItemConnectivity name=" <<
name()
901 <<
" new_size=" << m_connectivity_list.size()
902 <<
" prealloc_size=" << m_pre_allocated_size;
908 Integer nb_item = m_connectivity_nb_item.size();
909 m_p->m_connectivity_list_array.clear();
910 _notifyConnectivityListChanged();
912 Integer new_pos_in_list = m_p->m_connectivity_list_array.size();
913 Int32 pre_allocated_size = m_pre_allocated_size;
914 for(
Integer i=0; i<nb_item; ++i ){
916 Int32 nb = m_connectivity_nb_item[lid];
918 m_connectivity_index[lid] = 0;
921 Int32 index = m_connectivity_index[lid];
923 Integer alloc_size = _computeAllocSize(nb);
924 m_connectivity_index[lid] = new_pos_in_list;
925 new_pos_in_list += alloc_size;
928 if (pre_allocated_size!=0){
929 Int32 pos_modulo = new_pos_in_list % pre_allocated_size;
931 ARCANE_FATAL(
"Bad position i={0} pos={1} pre_alloc_size={2} modulo={3}",
932 i,new_pos_in_list,pre_allocated_size,pos_modulo);
934 m_p->m_connectivity_list_array.addRange(con_list);
937 m_p->m_connectivity_list_array.addRange(NULL_ITEM_LOCAL_ID,alloc_size-nb);
938 if (m_pre_allocated_size==0 && nb==0)
939 m_connectivity_index[lid] = 0;
941 _notifyConnectivityListChanged();
942 _computeMaxNbConnectedItem();
943 info(4) <<
"Compacting IncrementalItemConnectivity name=" <<
name()
944 <<
" nb_item=" << nb_item <<
" old_size=" << old_size
945 <<
" new_size=" << m_connectivity_list.size()
946 <<
" prealloc_size=" << m_pre_allocated_size;
958OneItemIncrementalItemConnectivity::
963 info(4) <<
"Using fixed OneItem connectivity for name=" <<
name();
969OneItemIncrementalItemConnectivity::
970~OneItemIncrementalItemConnectivity()
980 Int32 lid = source_item.localId();
981 Integer size = m_connectivity_nb_item[lid];
983 ARCANE_FATAL(
"source_item already have connected items");
984 Int32 target_lid = target_item.localId();
985 m_connectivity_list[lid] = target_lid;
986 m_connectivity_nb_item[lid] = 1;
987 _setNewMaxNbConnectedItems(1);
996 Int32 lid = source_item.localId();
997 m_connectivity_nb_item[lid] = 0;
1006 Int32 lid = source_item.localId();
1007 Int32 target_local_id = target_item.localId();
1008 Integer size = m_connectivity_nb_item[lid];
1011 Int32 target_lid = m_connectivity_list[lid];
1012 if (target_lid!=target_local_id)
1013 ARCANE_FATAL(
"source_item is not connected to item with wanted_lid={0} current_lid={1}",
1014 target_local_id,target_lid);
1015 m_connectivity_nb_item[lid] = 0;
1016 m_connectivity_list[lid] = NULL_ITEM_LOCAL_ID;
1027 Int32 lid = source_item.localId();
1028 Int32 target_lid = target_item.localId();
1029 m_connectivity_list[lid] = target_lid;
1038 Int32 lid = source_item.localId();
1043 ARCANE_FATAL(
"Invalid size for target_list. value={0} (expected 1)",n);
1044 m_connectivity_list[lid] = target_local_ids[0];
1054 if (m_connectivity_list[source_item.localId()] == target_local_id.localId())
1063void OneItemIncrementalItemConnectivity::
1064_checkResizeConnectivityList()
1068 Integer wanted_size = m_connectivity_nb_item.size();
1070 if (list_size==wanted_size)
1073 if (wanted_size>=capacity){
1074 m_p->m_connectivity_list_array.
reserve(m_p->m_connectivity_nb_item_array.
capacity());
1076 m_p->m_connectivity_list_array.
resize(wanted_size);
1077 _notifyConnectivityListChanged();
1086 Int32 lid = item.localId();
1087 m_p->_checkResize(lid);
1088 _notifyConnectivityIndexChanged();
1089 _notifyConnectivityNbItemChanged();
1090 _checkResizeConnectivityList();
1092 m_connectivity_nb_item[lid] = 0;
1093 m_connectivity_index[lid] = lid;
1094 m_connectivity_list[lid] = NULL_ITEM_LOCAL_ID;
1110 m_p->m_connectivity_nb_item_variable.variable()->compact(new_to_old_ids);
1111 _notifyConnectivityNbItemChanged();
1116 m_p->m_connectivity_list_variable.variable()->compact(new_to_old_ids);
1117 _notifyConnectivityListChanged();
1121 m_p->m_connectivity_index_array.resize(m_connectivity_nb_item.size());
1122 _notifyConnectivityIndexChanged();
1139 size_t allocated_size = m_p->m_connectivity_list_array.capacity()
1140 + m_p->m_connectivity_index_array.capacity()
1141 + m_p->m_connectivity_nb_item_array.capacity();
1142 allocated_size *=
sizeof(
Int32);
1144 out <<
" connectiviy name=" <<
name()
1145 <<
" list_size=" << m_connectivity_list.size()
1146 <<
" index_size=" << m_connectivity_index.size()
1147 <<
" nb_item_size=" << m_connectivity_nb_item.size()
1148 <<
" allocated_size=" << allocated_size;
1154void OneItemIncrementalItemConnectivity::
1155compactConnectivityList()
1157 _computeMaxNbConnectedItem();
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Fonctions utilitaires sur le maillage.
void removeItemAndKeepOrder(Int32ArrayView items, Int32 local_id)
Supprime une entité en conservant l'ordre.
Integer capacity() const
Capacité (nombre d'éléments alloués) du vecteur.
Integer size() const
Nombre d'éléments du vecteur.
Exception lorsqu'un argument est invalide.
constexpr Integer size() const noexcept
Retourne la taille du tableau.
void shrink()
Réalloue pour libérer la mémoire non utilisée.
void resize(Int64 s)
Change le nombre d'éléments du tableau à s.
void reserve(Int64 new_capacity)
Réserve le mémoire pour new_capacity éléments.
const T * data() const
Accès à la racine du tableau hors toute protection.
ArrayView< T > view() const
Vue mutable sur ce tableau.
ItemVectorView resizeAndCopy(Int32ConstArrayView ids)
Positionne la liste de connectivité avec les entités spécifiées par ids.
Vue constante d'un tableau de type T.
constexpr Integer size() const noexcept
Nombre d'éléments du tableau.
API interne à Arcane de IIncrementalItemConnectivity.
virtual Integer preAllocatedSize() const =0
Nombre d'entités pré-alloués pour la connectivité de chaque entité
Interface d'une famille d'entités.
virtual String name() const =0
Nom de la famille.
virtual eItemKind itemKind() const =0
Genre des entités.
virtual IMesh * mesh() const =0
Maillage associé
virtual Properties * properties()=0
Propriétés associées à cette famille.
@ PPrivate
Indique que la variable est privé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.
Int64 m_total_capacity
Nombre total de Int32 allouées (correspond à la somme des capacity())
Int64 m_total_size
Nombre total de Int32 utilisés (correspoind à la somme des size())
Informations de connectivité, pour une famille d'entité, permettant la transition entre les anciennes...
void _setConnectivityNbItem(Int32 item_kind, ConstArrayView< Int32 > v)
Positionne le tableau contenant le nombre d'entités connectées.
void _setConnectivityList(Int32 item_kind, ConstArrayView< Int32 > v)
Positionne le tableau contenant la liste des connectivités.
void _setConnectivityIndex(Int32 item_kind, ConstArrayView< Int32 > v)
Positionne le tableau d'index des connectivités.
Index d'un Item dans une variable.
Vue sur un vecteur d'entités.
Integer getIntegerWithDefault(const String &name, Integer default_value) const
Valeur de la propriété de nom name.
Référence à une instance.
Constructeur de chaîne de caractère unicode.
Chaîne de caractères unicode.
TraceMessage info() const
Flot pour un message d'information.
Vecteur 1D de données avec sémantique par valeur (style STL).
Paramètres nécessaires à la construction d'une variable.
Array< DataType > ContainerType
Classe abstraite de gestion des connectivités.
String name() const final
Nom de la connectivité
void addMemoryInfos(ItemConnectivityMemoryInfo &mem_info) override
Ajoute mem_info les informations mémoire de l'instance.
void shrinkMemory() override
Réduit au minimum l'utilisation mémoire pour les connectivités.
Classe de base pour les connectivités incrémentales item->item[].
void notifySourceFamilyLocalIdChanged(Int32ConstArrayView new_to_old_ids) override
Notifie la connectivité que la famille source est compactée.
void _notifyConnectivityNbItemChangedFromObservable()
Int32 maxNbConnectedItem() const override
Nombre maximum d'entités connectées à une entité source.
void setItemConnectivityList(ItemInternalConnectivityList *ilist, Int32 index)
Indique que cette connectivité est associée à une des connectivités de ItemInternal.
void reserveMemoryForNbSourceItems(Int32 n, bool pre_alloc_connectivity) override
Réserve la mémoire pour n entités sources.
ItemVectorView _connectedItems(ItemLocalId item, ConnectivityItemVector &con_items) const final
Remplit con_items avec les entités connectées à item.
IIncrementalItemConnectivityInternal * _internalApi() override
API interne à Arcane.
void notifyTargetFamilyLocalIdChanged(Int32ConstArrayView old_to_new_ids) override
Notifie la connectivité que la famille cible est compactée.
Int32 m_max_nb_item
Nombre maximum d'entités connectées.
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 setConnectedItems(ItemLocalId source_item, Int32ConstArrayView target_local_ids) override
Alloue et positionne les entités connectées à source_item.
void compactConnectivityList()
Compacte la liste des connectivités.
void removeConnectedItem(ItemLocalId source_item, ItemLocalId target_local_id) override
Supprime l'entité de localId() target_local_id à la connectivité de source_item.
void notifySourceItemAdded(ItemLocalId item) override
Notifie la connectivité qu'une entité a été ajoutée à la famille source.
void addConnectedItem(ItemLocalId source_item, ItemLocalId target_local_id) override
Ajoute l'entité de localId() target_local_id à la connectivité de source_item.
void removeConnectedItems(ItemLocalId source_item) override
Supprime toute les entités connectées à source_item.
void notifyReadFromDump() override
Notifie la connectivité qu'on a effectué une relecture à partir d'une protection.
void dumpStats(std::ostream &out) const override
Sort sur le flot out des statistiques sur l'utilisation et la mémoire utilisée.
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.
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) final
Positionne le nombre d'entités à pré-allouer pour la connectivité de chaque entité
void removeConnectedItem(ItemLocalId source_item, ItemLocalId target_local_id) override
Supprime l'entité de localId() target_local_id à la connectivité de source_item.
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.
void addConnectedItem(ItemLocalId source_item, ItemLocalId target_local_id) override
Ajoute l'entité de localId() target_local_id à la connectivité de source_item.
void notifyReadFromDump() override
Notifie la connectivité qu'on a effectué une relecture à partir d'une protection.
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 notifySourceFamilyLocalIdChanged(Int32ConstArrayView new_to_old_ids) override
Notifie la connectivité que la famille source est compacté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 notifySourceItemAdded(ItemLocalId item) override
Notifie la connectivité qu'une entité a été ajoutée à la famille source.
void removeConnectedItems(ItemLocalId source_item) override
Supprime toute les entités connectées à source_item.
void dumpStats(std::ostream &out) const override
Sort sur le flot out des statistiques sur l'utilisation et la mémoire utilisée.
T max(const T &a, const T &b, const T &c)
Retourne le maximum de trois éléments.
VariableRefArrayT< Int32 > VariableArrayInt32
Variable tableau de type entier 32 bits.
std::int64_t Int64
Type entier signé sur 64 bits.
Int32 Integer
Type représentant un entier.
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
ArrayView< Int32 > Int32ArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
std::int32_t Int32
Type entier signé sur 32 bits.
auto makeRef(InstanceType *t) -> Ref< InstanceType >
Créé une référence sur un pointeur.