Arcane  4.2.2.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
84class ARCANE_CORE_EXPORT IItemFamily
85{
86 friend mesh::DynamicMesh;
87 friend mesh::ItemFamily;
88
89 public:
90
91 virtual ~IItemFamily() {} //<! Frees resources
92
93 public:
94
95 virtual void build() = 0;
96
97 public:
98
100 virtual String name() const = 0;
101
103 virtual String fullName() const = 0;
104
106 virtual eItemKind itemKind() const = 0;
107
109 virtual Integer nbItem() const = 0;
110
117 virtual Int32 maxLocalId() const = 0;
118
119 public:
120
121 // TODO: to be removed. Use itemInfoListView instead
123 virtual ItemInternalArrayView itemsInternal() = 0;
124
125 public:
126
129
136 virtual IItemFamily* parentFamily() const = 0;
137
147 virtual void setParentFamily(IItemFamily* parent) = 0;
148
150 virtual Integer parentFamilyDepth() const = 0;
151
160 virtual void addChildFamily(IItemFamily* family) = 0;
161
164
172
174 virtual void checkValid() = 0;
175
180 virtual void checkValidConnectivity() = 0;
181
192 virtual void checkUniqueIds(Int64ConstArrayView unique_ids) = 0;
193
194 public:
195
206
210 virtual ItemVectorView view() = 0;
211
219 virtual void removeItems2(mesh::ItemDataList& item_data_list) = 0;
220
233 virtual void removeNeedRemoveMarkedItems() = 0;
234
242 ARCANE_DEPRECATED_REASON("Use MeshUtils::findOneItem() instead")
243 virtual ItemInternal* findOneItem(Int64 unique_id) = 0;
244
250 virtual void endUpdate() = 0;
251
265 virtual void partialEndUpdate() = 0;
266
276 virtual void partialEndUpdateGroup(const ItemGroup& group) = 0;
277
287 virtual void partialEndUpdateVariable(IVariable* variable) = 0;
288
290 virtual void notifyItemsOwnerChanged() = 0;
291
293 virtual void notifyItemsUniqueIdChanged() = 0;
294
295 public:
296
299
302
303 public:
304
318 virtual void setHasUniqueIdMap(bool v) = 0;
319
321 virtual bool hasUniqueIdMap() const = 0;
322
323 public:
324
342 Int64ConstArrayView unique_ids,
343 bool do_fatal = true) const = 0;
344
360 ConstArrayView<ItemUniqueId> unique_ids,
361 bool do_fatal = true) const = 0;
362
363 public:
364
375 virtual void setItemSortFunction(IItemInternalSortFunction* sort_function) = 0;
376
385
386 public:
387
389 ARCCORE_DEPRECATED_2020("Do not use this method. Try to get 'ISubDomain' from another way")
390 virtual ISubDomain* subDomain() const = 0;
391
393 virtual ITraceMng* traceMng() const = 0;
394
396 virtual IMesh* mesh() const = 0;
397
399 virtual IParallelMng* parallelMng() const = 0;
400
401 public:
402
404 virtual ItemGroup allItems() const = 0;
405
407 virtual ItemGroupCollection groups() const = 0;
408
409 public:
410
412
413
418 virtual ItemGroup findGroup(const String& name) const = 0;
419
429 virtual ItemGroup findGroup(const String& name, bool create_if_needed) = 0;
430
441 virtual ItemGroup createGroup(const String& name, Int32ConstArrayView local_ids, bool do_override = false) = 0;
442
451 virtual ItemGroup createGroup(const String& name) = 0;
452
456 virtual void destroyGroups() = 0;
457
462 virtual ItemGroup createGroup(const String& name, const ItemGroup& parent, bool do_override = false) = 0;
463
465
472 virtual IVariable* findVariable(const String& name, bool throw_exception = false) = 0;
473
477 virtual void usedVariables(VariableCollection collection) = 0;
478
479 public:
480
482 virtual void prepareForDump() = 0;
483
485 virtual void readFromDump() = 0;
486
494 virtual void copyItemsValues(Int32ConstArrayView source, Int32ConstArrayView destination) = 0;
495
505 virtual void copyItemsMeanValues(Int32ConstArrayView first_source,
506 Int32ConstArrayView second_source,
507 Int32ConstArrayView destination) = 0;
508
515 virtual void clearItems() = 0;
516
518 virtual void compactItems(bool do_sort) = 0;
519
520 public:
521
530 virtual void computeSynchronizeInfos() = 0;
531
533 virtual void getCommunicatingSubDomains(Int32Array& sub_domains) const = 0;
534
536
537
540
547 virtual void synchronize(VariableCollection variables) = 0;
548
549 // TODO: make pure virtual (December 2024)
560 virtual void synchronize(VariableCollection variables, Int32ConstArrayView local_ids);
562
572 virtual void reduceFromGhostItems(IVariable* v, IDataOperation* operation) = 0;
582 virtual void reduceFromGhostItems(IVariable* v, Parallel::eReduceType operation) = 0;
583
585 ARCANE_DEPRECATED_REASON("Y2024: use findAdjacency() instead")
587 const ItemGroup& sub_group,
588 eItemKind link_kind,
589 Integer nb_layer) = 0;
604 virtual ItemPairGroup findAdjacencyItems(const ItemGroup& group,
605 const ItemGroup& sub_group,
606 eItemKind link_kind,
607 Integer nb_layer);
608
617
624 virtual IDoFFamily* toDoFFamily() { return nullptr; }
625
633 virtual void internalRemoveItems(Int32ConstArrayView local_ids, bool keep_ghost = false) = 0;
634
646 virtual void addSourceConnectivity(IItemConnectivity* connectivity) = 0;
647 virtual void addTargetConnectivity(IItemConnectivity* connectivity) = 0;
648 virtual void removeSourceConnectivity(IItemConnectivity* connectivity) = 0;
649 virtual void removeTargetConnectivity(IItemConnectivity* connectivity) = 0;
650 virtual void setConnectivityMng(IItemConnectivityMng* connectivity_mng) = 0;
652
667 virtual void addGhostItems(Int64ConstArrayView unique_ids, Int32ArrayView items,
668 Int32ConstArrayView owners) = 0;
669
670 public:
671
674
676 virtual Properties* properties() = 0;
677
678 public:
679
682
683 public:
684
694 virtual void experimentalChangeUniqueId(ItemLocalId local_id, ItemUniqueId unique_id) = 0;
695
696 public:
697
703 virtual void resizeVariables(bool force_resize) = 0;
704
705 public:
706
709
710 public:
711
714};
715
716/*---------------------------------------------------------------------------*/
717/*---------------------------------------------------------------------------*/
718
719} // End namespace Arcane
720
721/*---------------------------------------------------------------------------*/
722/*---------------------------------------------------------------------------*/
723
724#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:85
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:78
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:476
Collection< IItemFamily * > IItemFamilyCollection
Collection of item families.
ConstArrayView< Int64 > Int64ConstArrayView
C equivalent of a 1D array of 64-bit integers.
Definition UtilsTypes.h:474
ArrayView< Int32 > Int32ArrayView
C equivalent of a 1D array of 32-bit integers.
Definition UtilsTypes.h:447
eItemKind
Mesh entity type.
Array< Int32 > Int32Array
Dynamic one-dimensional array of 32-bit integers.
Definition UtilsTypes.h:121
std::int32_t Int32
Signed integer type of 32 bits.