Arcane  v3.16.3.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
MeshComponentData.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 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/* MeshComponentData.h (C) 2000-2025 */
9/* */
10/* Données d'un constituant (matériau ou milieu) d'un maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_MATERIALS_MESHCOMPONENTDATA_H
13#define ARCANE_MATERIALS_MESHCOMPONENTDATA_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/TraceAccessor.h"
18#include "arcane/utils/Functor.h"
19
20#include "arcane/core/ItemGroup.h"
21#include "arcane/core/materials/MatItem.h"
22#include "arcane/core/materials/internal/ConstituentItemLocalIdList.h"
23
25
26/*---------------------------------------------------------------------------*/
27/*---------------------------------------------------------------------------*/
28
29namespace Arcane::Materials
30{
31
32/*---------------------------------------------------------------------------*/
33/*---------------------------------------------------------------------------*/
34
36class MeshEnvironment;
40
41/*---------------------------------------------------------------------------*/
42/*---------------------------------------------------------------------------*/
51class MeshComponentData
52: public TraceAccessor
53{
54 friend class MeshEnvironment;
55 friend class MeshMaterial;
56 friend class AllEnvData;
57
58 public:
59
60 MeshComponentData(IMeshComponent* component, const String& name,
61 Int16 component_id, ComponentItemSharedInfo* shared_info,
62 bool create_indexer);
63 ~MeshComponentData() override;
64
65 public:
66
67 const String& name() const { return m_name; }
68
69 MeshMaterialVariableIndexer* variableIndexer() const
70 {
71 return m_variable_indexer;
72 }
73
74 ConstituentItemLocalIdListView constituentItemListView() const
75 {
76 return m_constituent_local_id_list.view();
77 }
78
79 private:
80
83 {
84 return m_constituent_local_id_list.itemBase(index);
85 }
86
87 void _setConstituentItem(Int32 index, ConstituentItemIndex id)
88 {
89 return m_constituent_local_id_list.setConstituentItem(index, id);
90 }
91
92 void checkValid();
93
94 public:
95
96 const ItemGroup& items() const
97 {
98 return m_items;
99 }
100
101 Int16 componentId() const
102 {
103 return m_component_id;
104 }
105
106 void setSpecificExecutionPolicy(Accelerator::eExecutionPolicy policy)
107 {
109 }
110
111 Accelerator::eExecutionPolicy specificExecutionPolicy() const
112 {
114 }
115
116 private:
117
118 void _resizeItemsInternal(Int32 nb_item);
119 void _setVariableIndexer(MeshMaterialVariableIndexer* indexer);
120 void _setItems(const ItemGroup& group);
122 void _rebuildPartData(RunQueue& queue);
123 void _buildPartData();
124 MeshComponentPartData* _partData() const { return m_part_data; }
125
126 private:
127
130
136
139
142
144 bool m_is_indexer_owner = false;
145
148
151
152 MeshComponentPartData* m_part_data = nullptr;
153 FunctorT<MeshComponentData> m_recompute_part_data_functor;
154
157
158 private:
159
160 void _setPartInfo();
161 void _rebuildPartDataDirect();
162};
163
164/*---------------------------------------------------------------------------*/
165/*---------------------------------------------------------------------------*/
166
167}
168
169/*---------------------------------------------------------------------------*/
170/*---------------------------------------------------------------------------*/
171
172#endif
Functor associé à une méthode d'une classe T.
Groupe d'entités de maillage.
Definition ItemGroup.h:49
Index d'une entité constituant dans la liste des entités constituants.
Vue sur une instance de ConstituentItemLocalIdList.
Liste d'indices locaux pour les 'ComponentItemInternal'.
Interface d'un composant (matériau ou milieu) d'un maillage.
Interface du gestionnaire des matériaux et des milieux d'un maillage.
Vue sur un vecteur sur les entités d'un matériau.
Accelerator::eExecutionPolicy m_specific_execution_policy
Politique d'exécution spécifique.
IMeshComponent * m_component
Constituant dont on gère les données.
void _changeLocalIdsForInternalList(Int32ConstArrayView old_to_new_ids)
Met à jour les m_items_internal du constituant après changement de la numérotation locale.
MeshMaterialVariableIndexer * m_variable_indexer
Infos pour l'indexation des variables partielles.
matimpl::ConstituentItemBase _itemBase(Int32 index) const
Retourne une instance vers la index-ème entité de la liste.
bool m_is_indexer_owner
Indique si on est propriétaire de l'indexeur (dans ce cas on le détruira avec l'instance)
ConstituentItemLocalIdList m_constituent_local_id_list
Liste des ConstituentItemIndex pour ce constituant.
Int16 m_component_id
Indice du constituant (dans la liste des constituants de ce type).
ItemGroup m_items
Liste des entités de ce constituant.
Données d'une partie (pure ou partielle) d'un constituant.
Informations génériques sur une entité d'un constituant.
Chaîne de caractères unicode.
TraceAccessor(ITraceMng *m)
Construit un accesseur via le gestionnaire de trace m.
eExecutionPolicy
Politique d'exécution pour un Runner.
@ None
Aucune politique d'exécution.
Active toujours les traces dans les parties Arcane concernant les matériaux.
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:569
std::int16_t Int16
Type entier signé sur 16 bits.
std::int32_t Int32
Type entier signé sur 32 bits.