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"
52class ItemGroupInternal
54 friend class ItemGroupImplInternal;
73 : m_update_mutex(mutex)
75 m_update_mutex._lock();
79 m_update_mutex._unlock();
95 m_mutex =
new std::mutex();
100 std::mutex* m_mutex =
nullptr;
119 ItemGroupInternal(IItemFamily* family,
const String& name);
120 ItemGroupInternal(IItemFamily* family, ItemGroupImpl* parent,
const String& name);
121 ~ItemGroupInternal();
125 const String& name()
const {
return m_name; }
126 const String& fullName()
const {
return m_full_name; }
128 IMesh* mesh()
const {
return m_mesh; }
132 ItemInfoListView itemInfoListView()
const;
140 bool isContiguous()
const {
return m_is_contiguous; }
143 void updateTimestamp()
146 m_is_contiguous =
false;
149 void setNeedRecompute()
165 bool isOwn()
const {
return m_is_own; }
166 Int32 nbItem()
const {
return itemsLocalId().size(); }
171 void _removeItems(SmallSpan<const Int32> items_local_id);
175 void _notifyDirectRemoveItems(SmallSpan<const Int32> removed_ids,
Int32 nb_remaining);
179 ItemGroupImplInternal m_internal_api;
240 void notifyInvalidateObservers();
242 void resetSubGroups();
253 bool m_is_contiguous =
false;
255 bool m_is_print_check_simd_padding =
false;
256 bool m_is_print_apply_simd_padding =
false;
257 bool m_is_print_stack_apply_simd_padding =
false;
287 bool m_is_debug_apply_operation =
false;
Déclarations des types généraux de Arcane.
Fonctions de gestion mémoire et des allocateurs.
Tableau d'items de types quelconques.
Interface d'une famille d'entités.
Implémentation d'un groupe d'entités de maillage.
Mutex pour protéger les appels à ItemGroupImpl::_checkNeedUpdate().
ItemGroupImpl * m_node_group
Groupe des noeuds.
std::map< Integer, ItemGroupImpl * > m_own_level_cell_group
Groupe des mailles propres de niveau.
String m_full_name
Nom complet du groupe.
String m_variable_name
Groupe parent (groupe null si aucun)
IMesh * m_mesh
Gestionnaire de groupe associé
UniqueArray< ItemGroupImpl * > m_children_by_type
Liste des fils de ce groupe par type d'entité
SharedPtrT< GroupIndexTable > m_group_index_table
Table de hachage du local id des items vers leur position en enumeration.
ItemGroupImpl * m_interface_group
Items on the boundary of two subdomains.
UniqueArray< UniqueArray< Int32 > > m_children_by_type_ids
Liste des localId() par type d'entité.
bool m_is_check_simd_padding
Vrai si les localIds sont consécutifs.
bool m_need_invalidate_on_recompute
Vrai si l'on doit activer les invalidate observers en cas de recalcul.
bool m_need_recompute
Vrai si le groupe doit être recalculé
eItemKind m_kind
Genre des entités du groupe.
ItemGroupImpl * m_inner_face_group
Groupe des faces internes.
Int64 m_timestamp
Temps de la derniere modification.
bool m_use_v2_for_apply_operation
Gestion pour applyOperation() Version 2.
std::map< String, AutoRefT< ItemGroupImpl > > m_sub_groups
Ensemble de tous les sous-groupes.
bool m_transaction_mode
Vrai si le groupe est en mode de transaction directe.
bool m_is_own
true si groupe contient uniquement les entités dont on est propriétaire.
Ref< IVariableSynchronizer > m_synchronizer
Synchronizer du groupe.
void checkUpdateSimdPadding()
Remplit les derniers éléments du groupe pour avoir un vecteur SIMD complet.
bool m_observer_need_info
Synthése de besoin de observers en informations de transition.
void applySimdPadding()
Applique le padding pour la vectorisation.
ItemGroupImpl * m_ghost_group
Items not owned by the subdomain.
bool m_is_local_to_sub_domain
Vrai si le groupe est local au sous-domaine.
bool m_is_all_items
Indique s'il s'agit du groupe de toutes les entités.
ItemGroupImpl * m_own_group
Items owned by the subdomain.
ItemTypeId m_unique_children_type
Indique le type des entités du groupe.
IItemFamily * m_item_family
Famille associée.
ItemGroupImpl * m_edge_group
Groupe des arêtes.
ItemGroupImpl * m_face_group
Groupe des faces.
std::map< Integer, ItemGroupImpl * > m_level_cell_group
Groupe des mailles de niveau.
Int64 m_simd_timestamp
Temps de la derniere modification pour le calcul des infos SIMD.
Array< Int32 > * m_items_local_id
Liste des numéros locaux des entités de ce groupe.
std::map< const void *, IItemGroupObserver * > m_observers
localids -> index (UNIQUEMENT ALLITEMS)
Int64 m_children_by_type_ids_computed_timestamp
Timestamp indiquant quand a été calculé la liste des ids des enfants.
IFunctor * m_compute_functor
Fonction de calcul du groupe.
ItemGroupImpl * m_outer_face_group
bool m_is_constituent_group
Indique si le groupe est associé à un constituant (IMeshComponent)
CheckNeedUpdateMutex m_check_need_update_mutex
Mutex pour protéger la mise à jour.
ItemGroupImpl * m_inner_active_face_group
Groupe des faces internes actives.
ItemGroupImpl * m_own_active_cell_group
Groupe des mailles propres actives.
bool m_is_null
true si le groupe est nul
ItemGroupImpl * m_cell_group
Groupe des mailles.
ItemGroupImpl * m_active_cell_group
AMR.
ItemGroupImpl * m_own_active_face_group
Groupe des faces actives propres.
ItemGroupImpl * m_active_face_group
Groupe des faces actives.
ItemGroupImpl * m_outer_active_face_group
Groupe des faces externes actives.
void checkIsContiguous()
Vérifie que les localIds() sont contigüs.
String m_name
Nom du groupe.
Type d'une entité (Item).
Référence à une instance.
Chaîne de caractères unicode.
Vecteur 1D de données avec sémantique par valeur (style STL).
VariableRefArrayT< Int32 > VariableArrayInt32
Variable tableau de type entier 32 bits.
MemoryAllocationOptions getAllocatorForMostlyReadOnlyData()
Allocateur par défaut pour les données essentiellement en lecture.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
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.
ConstArrayView< ItemInternal * > ItemInternalList
Type de la liste interne des entités.
UniqueArray< Int32 > Int32UniqueArray
Tableau dynamique à une dimension d'entiers 32 bits.
ArrayView< Int32 > Int32ArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
eItemKind
Genre d'entité de maillage.
@ IK_Unknown
Entité de maillage de genre inconnu ou non initialisé
Array< Int32 > Int32Array
Tableau dynamique à une dimension d'entiers 32 bits.
std::int32_t Int32
Type entier signé sur 32 bits.