Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
IItemFamily.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2026 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/* IItemFamily.h (C) 2000-2025 */
9/* */
10/* Interface of an entity family. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_IITEMFAMILY_H
13#define ARCANE_CORE_IITEMFAMILY_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
82class ARCANE_CORE_EXPORT IItemFamily
83{
84 friend mesh::DynamicMesh;
85 friend mesh::ItemFamily;
86
87 public:
88
89 virtual ~IItemFamily() {} //<! Frees resources
90
91 public:
92
93 virtual void build() = 0;
94
95 public:
96
98 virtual String name() const = 0;
99
101 virtual String fullName() const = 0;
102
104 virtual eItemKind itemKind() const = 0;
105
107 virtual Integer nbItem() const = 0;
108
115 virtual Int32 maxLocalId() const = 0;
116
117 public:
118
119 // TODO: to be removed. Use itemInfoListView instead
121 virtual ItemInternalArrayView itemsInternal() = 0;
122
123 public:
124
127
134 virtual IItemFamily* parentFamily() const = 0;
135
145 virtual void setParentFamily(IItemFamily* parent) = 0;
146
148 virtual Integer parentFamilyDepth() const = 0;
149
158 virtual void addChildFamily(IItemFamily* family) = 0;
159
162
170
172 virtual void checkValid() = 0;
173
178 virtual void checkValidConnectivity() = 0;
179
190 virtual void checkUniqueIds(Int64ConstArrayView unique_ids) = 0;
191
192 public:
193
204
208 virtual ItemVectorView view() = 0;
209
217 virtual void removeItems2(mesh::ItemDataList& item_data_list) = 0;
218
231 virtual void removeNeedRemoveMarkedItems() = 0;
232
240 ARCANE_DEPRECATED_REASON("Use MeshUtils::findOneItem() instead")
241 virtual ItemInternal* findOneItem(Int64 unique_id) = 0;
242
248 virtual void endUpdate() = 0;
249
263 virtual void partialEndUpdate() = 0;
264
274 virtual void partialEndUpdateGroup(const ItemGroup& group) = 0;
275
285 virtual void partialEndUpdateVariable(IVariable* variable) = 0;
286
288 virtual void notifyItemsOwnerChanged() = 0;
289
291 virtual void notifyItemsUniqueIdChanged() = 0;
292
293 public:
294
297
300
301 public:
302
316 virtual void setHasUniqueIdMap(bool v) = 0;
317
319 virtual bool hasUniqueIdMap() const = 0;
320
321 public:
322
340 Int64ConstArrayView unique_ids,
341 bool do_fatal = true) const = 0;
342
358 ConstArrayView<ItemUniqueId> unique_ids,
359 bool do_fatal = true) const = 0;
360
361 public:
362
373 virtual void setItemSortFunction(IItemInternalSortFunction* sort_function) = 0;
374
383
384 public:
385
387 ARCCORE_DEPRECATED_2020("Do not use this method. Try to get 'ISubDomain' from another way")
388 virtual ISubDomain* subDomain() const = 0;
389
391 virtual ITraceMng* traceMng() const = 0;
392
394 virtual IMesh* mesh() const = 0;
395
397 virtual IParallelMng* parallelMng() const = 0;
398
399 public:
400
402 virtual ItemGroup allItems() const = 0;
403
405 virtual ItemGroupCollection groups() const = 0;
406
407 public:
408
410
411
416 virtual ItemGroup findGroup(const String& name) const = 0;
417
427 virtual ItemGroup findGroup(const String& name, bool create_if_needed) = 0;
428
439 virtual ItemGroup createGroup(const String& name, Int32ConstArrayView local_ids, bool do_override = false) = 0;
440
449 virtual ItemGroup createGroup(const String& name) = 0;
450
454 virtual void destroyGroups() = 0;
455
460 virtual ItemGroup createGroup(const String& name, const ItemGroup& parent, bool do_override = false) = 0;
461
463
470 virtual IVariable* findVariable(const String& name, bool throw_exception = false) = 0;
471
475 virtual void usedVariables(VariableCollection collection) = 0;
476
477 public:
478
480 virtual void prepareForDump() = 0;
481
483 virtual void readFromDump() = 0;
484
492 virtual void copyItemsValues(Int32ConstArrayView source, Int32ConstArrayView destination) = 0;
493
503 virtual void copyItemsMeanValues(Int32ConstArrayView first_source,
504 Int32ConstArrayView second_source,
505 Int32ConstArrayView destination) = 0;
506
513 virtual void clearItems() = 0;
514
516 virtual void compactItems(bool do_sort) = 0;
517
518 public:
519
528 virtual void computeSynchronizeInfos() = 0;
529
531 virtual void getCommunicatingSubDomains(Int32Array& sub_domains) const = 0;
532
534
535
538
545 virtual void synchronize(VariableCollection variables) = 0;
546
547 // TODO: make pure virtual (December 2024)
558 virtual void synchronize(VariableCollection variables, Int32ConstArrayView local_ids);
560
570 virtual void reduceFromGhostItems(IVariable* v, IDataOperation* operation) = 0;
580 virtual void reduceFromGhostItems(IVariable* v, Parallel::eReduceType operation) = 0;
581
583 ARCANE_DEPRECATED_REASON("Y2024: use findAdjacency() instead")
585 const ItemGroup& sub_group,
586 eItemKind link_kind,
587 Integer nb_layer) = 0;
602 virtual ItemPairGroup findAdjacencyItems(const ItemGroup& group,
603 const ItemGroup& sub_group,
604 eItemKind link_kind,
605 Integer nb_layer);
606
615
622 virtual IDoFFamily* toDoFFamily() { return nullptr; }
623
631 virtual void internalRemoveItems(Int32ConstArrayView local_ids, bool keep_ghost = false) = 0;
632
644 virtual void addSourceConnectivity(IItemConnectivity* connectivity) = 0;
645 virtual void addTargetConnectivity(IItemConnectivity* connectivity) = 0;
646 virtual void removeSourceConnectivity(IItemConnectivity* connectivity) = 0;
647 virtual void removeTargetConnectivity(IItemConnectivity* connectivity) = 0;
648 virtual void setConnectivityMng(IItemConnectivityMng* connectivity_mng) = 0;
650
665 virtual void addGhostItems(Int64ConstArrayView unique_ids, Int32ArrayView items,
666 Int32ConstArrayView owners) = 0;
667
668 public:
669
672
674 virtual Properties* properties() = 0;
675
676 public:
677
680
681 public:
682
692 virtual void experimentalChangeUniqueId(ItemLocalId local_id, ItemUniqueId unique_id) = 0;
693
694 public:
695
701 virtual void resizeVariables(bool force_resize) = 0;
702
703 public:
704
707
708 public:
709
712};
713
714/*---------------------------------------------------------------------------*/
715/*---------------------------------------------------------------------------*/
716
717} // End namespace Arcane
718
719/*---------------------------------------------------------------------------*/
720/*---------------------------------------------------------------------------*/
721
722#endif
Declarations of Arcane's general types.
Declarations of types on entities.
File containing declarations concerning the message passing model.
Constant view of an array of type T.
Class managing observers associated with an event.
Interface of an operation on a data.
Interface of a DoF family.
Definition IDoFFamily.h:34
Interface for connectivity information by entity type.
Interface to manage connectivity.
Internal part of IItemFamily.
Interface for entity family policies.
Interface for modifying the topology of entities within a family.
Interface of an entity family.
Definition IItemFamily.h:83
virtual void removeNeedRemoveMarkedItems()=0
Removes entities and updates connectivities.
virtual void partialEndUpdate()=0
Partial update.
virtual void usedVariables(VariableCollection collection)=0
Adds the list of variables used by this family to the collection.
virtual IItemConnectivityInfo * localConnectivityInfos() const =0
Information on local connectivity within the subdomain for this family.
virtual ISubDomain * subDomain() const =0
Associated sub-domain.
virtual ItemGroup findGroup(const String &name) const =0
Searches for a group.
virtual IVariableSynchronizer * allItemsSynchronizer()=0
Synchronizer on all entities of the family.
virtual Integer parentFamilyDepth() const =0
Gives the nesting depth of the current mesh.
virtual EventObservableView< const ItemFamilyItemListChangedEventArgs & > itemListChangedEvent()=0
Event for entity addition and deletion.
virtual IParticleFamily * toParticleFamily()=0
Returns the interface of the particle family for this family.
virtual void notifyItemsUniqueIdChanged()=0
Notifies that the unique IDs of the entities have been modified.
virtual IItemFamilyTopologyModifier * _topologyModifier()=0
Topology modifier interface.
virtual void checkUniqueIds(Int64ConstArrayView unique_ids)=0
Checks that the unique_ids are truly unique for all subdomains.
virtual IItemFamilyPolicyMng * policyMng()=0
Interface of behaviors/policies associated with this family.
virtual void readFromDump()=0
Reads data from a dump.
virtual ItemGroupCollection groups() const =0
Collection of groups in this family.
virtual void setParentFamily(IItemFamily *parent)=0
Positions the parent IItemFamily.
virtual ItemGroup allItems() const =0
Group of all entities.
virtual void setHasUniqueIdMap(bool v)=0
Indicates whether the family has a conversion table from uniqueId to localId.
virtual void copyItemsValues(Int32ConstArrayView source, Int32ConstArrayView destination)=0
virtual void partialEndUpdateVariable(IVariable *variable)=0
Updates a variable.
virtual ItemInternal * findOneItem(Int64 unique_id)=0
Unique ID entity unique_id.
virtual ItemInternalArrayView itemsInternal()=0
Internal array of entities.
virtual void prepareForDump()=0
Prepares data for dumping.
virtual void synchronize(VariableCollection variables)=0
Synchronizes the variables variables.
virtual ItemGroup createGroup(const String &name, Int32ConstArrayView local_ids, bool do_override=false)=0
Creates an entity group named name containing the entities local_ids.
virtual Int32 maxLocalId() const =0
virtual void computeSynchronizeInfos()=0
Constructs the structures necessary for synchronization.
virtual IItemConnectivityInfo * globalConnectivityInfos() const =0
Information on global connectivity across all subdomains.
virtual void clearItems()=0
Deletes all entities in the family.
virtual void checkValid()=0
Check the validity of internal structures (internal).
virtual bool hasUniqueIdMap() const =0
Indicates if the family has a uniqueId to localId conversion table.
virtual IParallelMng * parallelMng() const =0
Associated parallelism manager.
virtual IItemFamilyCollection childFamilies()=0
Child families of this family.
virtual ItemPairGroup findAdjencyItems(const ItemGroup &group, const ItemGroup &sub_group, eItemKind link_kind, Integer nb_layer)=0
Searches for an adjacency list.
virtual String name() const =0
Family name.
virtual ItemInfoListView itemInfoListView()=0
View on the entity information list.
virtual IItemFamily * parentFamily() const =0
IItemFamily parent.
virtual IItemInternalSortFunction * itemSortFunction() const =0
Entity sorting function.
virtual eItemKind itemKind() const =0
Entity kind.
virtual void checkValidConnectivity()=0
Verification of the validity of internal structures concerning connectivity.
virtual void copyItemsMeanValues(Int32ConstArrayView first_source, Int32ConstArrayView second_source, Int32ConstArrayView destination)=0
virtual IVariable * findVariable(const String &name, bool throw_exception=false)=0
Searches for the variable name name associated with this family.
virtual ItemPairGroup findAdjacencyItems(const ItemGroup &group, const ItemGroup &sub_group, eItemKind link_kind, Integer nb_layer)
Searches for an adjacency list.
virtual ITraceMng * traceMng() const =0
Associated trace manager.
virtual String fullName() const =0
Full family name (with the mesh's name).
virtual void compactItems(bool do_sort)=0
Compresses the entities.
virtual IMesh * mesh() const =0
Associated mesh.
virtual void notifyItemsOwnerChanged()=0
Notifies that the entities specific to the family's subdomain have been modified.
virtual ItemVectorView view(Int32ConstArrayView local_ids)=0
View on the entities.
virtual IItemFamilyInternal * _internalApi()=0
Internal Arcane API.
virtual void addChildFamily(IItemFamily *family)=0
Adds a family as a dependency.
virtual void itemsUniqueIdToLocalId(Int32ArrayView local_ids, Int64ConstArrayView unique_ids, bool do_fatal=true) const =0
Converts an array of unique numbers to local numbers.
virtual void removeItems2(mesh::ItemDataList &item_data_list)=0
Removes entities.
virtual IDoFFamily * toDoFFamily()
Returns the interface of the particle family for this family.
virtual void reduceFromGhostItems(IVariable *v, IDataOperation *operation)=0
Applies a reduction operation from ghost items.
virtual void resizeVariables(bool force_resize)=0
Resizes the variables of this family.
virtual Properties * properties()=0
Properties associated with this family.
virtual void internalRemoveItems(Int32ConstArrayView local_ids, bool keep_ghost=false)=0
Removes the entities given by local_ids.
virtual void experimentalChangeUniqueId(ItemLocalId local_id, ItemUniqueId unique_id)=0
Changes the unique number of the entity.
virtual Integer nbItem() const =0
Number of entities.
virtual VariableItemInt32 & itemsNewOwner()=0
Variable containing the number of the new subdomain owning the entity.
virtual void getCommunicatingSubDomains(Int32Array &sub_domains) const =0
List of communicating sub-domains for the entities.
virtual void partialEndUpdateGroup(const ItemGroup &group)=0
Updates a group.
virtual void addGhostItems(Int64ConstArrayView unique_ids, Int32ArrayView items, Int32ConstArrayView owners)=0
Allocates ghost entities.
virtual void setItemSortFunction(IItemInternalSortFunction *sort_function)=0
Positions the entity sorting function.
virtual void destroyGroups()=0
Deletes all groups in this family.
virtual void endUpdate()=0
Notifies the end of modification of the entity list.
virtual ItemVectorView view()=0
View on all entities in the family.
Interface of an entity sorting function.
Interface of the parallelism manager for a subdomain.
Interface of a particle family.
Interface of the subdomain manager.
Definition ISubDomain.h:75
Interface of a variable synchronization service.
Interface of a variable.
Definition IVariable.h:40
Mesh entity group.
Definition ItemGroup.h:51
View of a list to obtain information about entities.
Internal structure of a mesh entity.
Index of an Item in a variable.
Definition ItemLocalId.h:42
Table of entity lists.
Unique identifier of an entity.
View on a vector of entities.
List of properties.
Definition Properties.h:65
Implementation of a mesh.
Definition DynamicMesh.h:98
ItemVariableScalarRefT< Int32 > VariableItemInt32
32-bit integer type quantity
eReduceType
Supported reduction types.
Concurrency implementation.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
Collection< ItemGroup > ItemGroupCollection
Collection of mesh item groups.
std::int64_t Int64
Signed integer type of 64 bits.
Int32 Integer
Type representing an integer.
ConstArrayView< Int32 > Int32ConstArrayView
C equivalent of a 1D array of 32-bit integers.
Definition UtilsTypes.h:482
Collection< IItemFamily * > IItemFamilyCollection
Collection of item families.
ConstArrayView< Int64 > Int64ConstArrayView
C equivalent of a 1D array of 64-bit integers.
Definition UtilsTypes.h:480
ArrayView< Int32 > Int32ArrayView
C equivalent of a 1D array of 32-bit integers.
Definition UtilsTypes.h:453
eItemKind
Mesh entity type.
Array< Int32 > Int32Array
Dynamic one-dimensional array of 32-bit integers.
Definition UtilsTypes.h:127
std::int32_t Int32
Signed integer type of 32 bits.