Arcane  v3.14.10.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
35class IMeshMaterialMng;
36class MeshEnvironment;
37class MatItemVectorView;
38class MeshMaterialVariableIndexer;
39class MeshComponentPartData;
40
41/*---------------------------------------------------------------------------*/
42/*---------------------------------------------------------------------------*/
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,
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
125 Int16 m_component_id = -1;
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
Groupe d'entités de maillage.
Definition ItemGroup.h:49
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Informations sur les valeurs des milieux.
Definition AllEnvData.h:44
Informations partagées sur les 'ComponentItem'.
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.
Données d'un constituant (matériau ou milieu) d'un maillage.
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.
Matériau d'un maillage.
Informations générique sur une entité d'un constituant.
Chaîne de caractères unicode.
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:640