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();
109 bool m_is_debug_apply_operation =
false;
136class ItemGroupInternal
138 friend class ItemGroupImplInternal;
157 : m_update_mutex(mutex)
159 m_update_mutex._lock();
163 m_update_mutex._unlock();
179 m_mutex =
new std::mutex();
184 std::mutex* m_mutex =
nullptr;
203 ItemGroupInternal(IItemFamily* family,
const String& name);
204 ItemGroupInternal(IItemFamily* family, ItemGroupImpl* parent,
const String& name);
205 ~ItemGroupInternal();
209 const String& name()
const {
return m_name; }
210 const String& fullName()
const {
return m_full_name; }
212 IMesh* mesh()
const {
return m_mesh; }
216 ItemInfoListView itemInfoListView()
const;
224 bool isContiguous()
const {
return m_is_contiguous; }
227 void updateTimestamp()
230 m_is_contiguous =
false;
233 void setNeedRecompute()
249 bool isOwn()
const {
return m_is_own; }
250 Int32 nbItem()
const {
return itemsLocalId().size(); }
255 void _removeItems(SmallSpan<const Int32> items_local_id);
259 void _notifyDirectRemoveItems(SmallSpan<const Int32> removed_ids,
Int32 nb_remaining);
263 ItemGroupImplInternal m_internal_api;
323 void notifyInvalidateObservers();
325 void resetSubGroups();
332 bool m_is_contiguous =
false;
334 bool m_is_print_check_simd_padding =
false;
335 bool m_is_print_apply_simd_padding =
false;
336 bool m_is_print_stack_apply_simd_padding =
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.
Interface d'un opérateur sur des entités rangées par type.
Implémentation d'un groupe d'entités de maillage.
Mutex pour protéger les appels à ItemGroupImpl::_checkNeedUpdate().
Implémentation de la classe ItemGroupImpl.
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é
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.
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.
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.
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)
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.
ItemGroupSubPartsByType m_sub_parts_by_type
Sous-partie d'un groupe en fonction de son type.
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.
Gestion des sous-parties d'un groupe suivant le type de ses éléments.
ItemGroupImpl * m_group_impl
A supprimer quand la version V1 sera supprimée.
UniqueArray< UniqueArray< Int32 > > m_children_by_type_ids
Liste des localId() par type d'entité.
bool m_use_v2_for_apply_operation
Vrai si on utilise la version 2 de la gestion pour applyOperation().
Int64 m_children_by_type_ids_computed_timestamp
Timestamp indiquant quand a été calculé la liste des ids des enfants.
UniqueArray< ItemGroupImpl * > m_children_by_type
Liste des fils de ce groupe par type d'entité.
ItemTypeId m_unique_children_type
Indique le type des entités 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.
ARCCORE_COMMON_EXPORT 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.
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.