Arcane  v3.16.0.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-2024 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-2024 */
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 private:
107
108 void _resizeItemsInternal(Int32 nb_item);
109 void _setVariableIndexer(MeshMaterialVariableIndexer* indexer);
110 void _setItems(const ItemGroup& group);
112 void _rebuildPartData(RunQueue& queue);
113 void _buildPartData();
114 MeshComponentPartData* _partData() const { return m_part_data; }
115
116 private:
117
120
126
129
132
134 bool m_is_indexer_owner = false;
135
138
141
142 MeshComponentPartData* m_part_data = nullptr;
143 FunctorT<MeshComponentData> m_recompute_part_data_functor;
144
145 private:
146
147 void _setPartInfo();
148 void _rebuildPartDataDirect();
149};
150
151/*---------------------------------------------------------------------------*/
152/*---------------------------------------------------------------------------*/
153
154}
155
156/*---------------------------------------------------------------------------*/
157/*---------------------------------------------------------------------------*/
158
159#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.
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.
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.