12#ifndef ARCANE_CORE_INTERNAL_ITEMGROUPINTERNAL_H
13#define ARCANE_CORE_INTERNAL_ITEMGROUPINTERNAL_H
20#include "arcane/core/VariableTypes.h"
21#include "arcane/core/internal/ItemGroupImplInternal.h"
50class ItemGroupSubPartsByType
67 void _computeChildrenByTypeV1();
71 void _initChildrenByTypeV2();
72 void _computeChildrenByTypeV2();
73 void _initChildrenByTypeV1();
108 bool m_is_debug_apply_operation =
false;
135class ItemGroupInternal
137 friend class ItemGroupImplInternal;
156 : m_update_mutex(mutex)
158 m_update_mutex._lock();
162 m_update_mutex._unlock();
178 m_mutex =
new std::mutex();
183 std::mutex* m_mutex =
nullptr;
202 ItemGroupInternal(IItemFamily* family,
const String& name);
203 ItemGroupInternal(IItemFamily* family, ItemGroupImpl* parent,
const String& name);
204 ~ItemGroupInternal();
208 const String& name()
const {
return m_name; }
209 const String& fullName()
const {
return m_full_name; }
211 IMesh* mesh()
const {
return m_mesh; }
215 ItemInfoListView itemInfoListView()
const;
223 bool isContiguous()
const {
return m_is_contiguous; }
226 void updateTimestamp()
229 m_is_contiguous =
false;
232 void setNeedRecompute()
248 bool isOwn()
const {
return m_is_own; }
249 Int32 nbItem()
const {
return itemsLocalId().size(); }
254 void _removeItems(SmallSpan<const Int32> items_local_id);
258 void _notifyDirectRemoveItems(SmallSpan<const Int32> removed_ids,
Int32 nb_remaining);
262 ItemGroupImplInternal m_internal_api;
322 void notifyInvalidateObservers();
324 void resetSubGroups();
331 bool m_is_contiguous =
false;
333 bool m_is_print_check_simd_padding =
false;
334 bool m_is_print_apply_simd_padding =
false;
335 bool m_is_print_stack_apply_simd_padding =
false;
Declarations of Arcane's general types.
Memory and allocator management functions.
Base class for 1D data vectors.
Interface of an entity family.
Interface of an operator on entities sorted by type.
Brief: Implementation of a mesh entity group.
Mutex to protect calls to ItemGroupImpl::_checkNeedUpdate().
Implementation of the ItemGroupImpl class.
ItemGroupImpl * m_node_group
Node group.
std::map< Integer, ItemGroupImpl * > m_own_level_cell_group
Level owned cell group.
String m_full_name
Full name of the group.
String m_variable_name
Parent group (null group if none).
IMesh * m_mesh
Associated group manager.
SharedPtrT< GroupIndexTable > m_group_index_table
Hash table of item local id to its enumeration position.
ItemGroupImpl * m_interface_group
Items on the boundary of two subdomains.
bool m_is_check_simd_padding
True if the localIds are consecutive.
bool m_need_invalidate_on_recompute
True if invalidate observers must be activated upon recalculation.
bool m_need_recompute
True if the group needs to be recalculated.
eItemKind m_kind
Kind of the group entities.
ItemGroupImpl * m_inner_face_group
Inner face group.
Int64 m_timestamp
Time of the last modification.
std::map< String, AutoRefT< ItemGroupImpl > > m_sub_groups
Set of all sub-groups.
bool m_transaction_mode
True if the group is in direct transaction mode.
bool m_is_own
true if the group contains only entities owned by us.
Ref< IVariableSynchronizer > m_synchronizer
Group synchronizer.
void checkUpdateSimdPadding()
Fills the last elements of the group to have a complete SIMD vector.
bool m_observer_need_info
Synthesis of observer need for transition information.
void applySimdPadding()
Apply padding for vectorization.
ItemGroupImpl * m_ghost_group
Items not owned by the subdomain.
bool m_is_local_to_sub_domain
True if the group is local to the subdomain.
bool m_is_all_items
Indicates if it is the group of all entities.
ItemGroupImpl * m_own_group
Items owned by the subdomain.
IItemFamily * m_item_family
Associated family.
ItemGroupImpl * m_edge_group
Edge group.
ItemGroupImpl * m_face_group
Face group.
std::map< Integer, ItemGroupImpl * > m_level_cell_group
Level cell group.
Int64 m_simd_timestamp
Time of the last modification for SIMD info calculation.
Array< Int32 > * m_items_local_id
List of local IDs of the entities in this group.
std::map< const void *, IItemGroupObserver * > m_observers
localids -> index (ONLY ALLITEMS)
IFunctor * m_compute_functor
Group computation function.
ItemGroupImpl * m_outer_face_group
bool m_is_constituent_group
Indicates if the group is associated with a constituent (IMeshComponent).
CheckNeedUpdateMutex m_check_need_update_mutex
Mutex to protect updates.
ItemGroupImpl * m_inner_active_face_group
Active inner face group.
ItemGroupImpl * m_own_active_cell_group
Active owned cell group.
bool m_is_null
true if the group is null
ItemGroupImpl * m_cell_group
Cell group.
ItemGroupImpl * m_active_cell_group
AMR.
ItemGroupImpl * m_own_active_face_group
Active owned face group.
ItemGroupImpl * m_active_face_group
Active face group.
ItemGroupSubPartsByType m_sub_parts_by_type
Sub-part of a group based on its type.
ItemGroupImpl * m_outer_active_face_group
Active outer face group.
void checkIsContiguous()
Checks that the localIds() are contiguous.
String m_name
Name of the group.
Management of sub-parts of a group based on the type of its elements.
ItemGroupImpl * m_group_impl
To be deleted when version V1 is removed.
UniqueArray< UniqueArray< Int32 > > m_children_by_type_ids
List of localIds by entity type.
bool m_use_v2_for_apply_operation
True if version 2 of the management is used for applyOperation().
Int64 m_children_by_type_ids_computed_timestamp
Timestamp indicating when the list of child ids was calculated.
UniqueArray< ItemGroupImpl * > m_children_by_type
List of children of this group by entity type.
ItemTypeId m_unique_children_type
Indicates the type of the entities in the group.
Type of an entity (Item).
Reference to an instance.
Unicode character string.
1D data vector with value semantics (STL style).
VariableRefArrayT< Int32 > VariableArrayInt32
Array variable of 32-bit integer type.
MemoryAllocationOptions getAllocatorForMostlyReadOnlyData()
Default allocator for mostly read-only data.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
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.
ConstArrayView< ItemInternal * > ItemInternalList
Type of the internal list of entities.
ArrayView< Int32 > Int32ArrayView
C equivalent of a 1D array of 32-bit integers.
eItemKind
Mesh entity type.
@ IK_Unknown
Unknown or uninitialized mesh entity.
Array< Int32 > Int32Array
Dynamic one-dimensional array of 32-bit integers.
std::int32_t Int32
Signed integer type of 32 bits.