Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
MeshEnvironment.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/* MeshEnvironment.h (C) 2000-2024 */
9/* */
10/* Milieu d'un maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_MATERIALS_INTERNAL_MESHENVIRONMENT_H
13#define ARCANE_MATERIALS_INTERNAL_MESHENVIRONMENT_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/TraceAccessor.h"
18
19#include "arcane/core/ItemGroup.h"
20#include "arcane/core/MeshVariableScalarRef.h"
22#include "arcane/core/materials/IMeshEnvironment.h"
23#include "arcane/core/materials/ComponentItemInternal.h"
24#include "arcane/core/materials/internal/IMeshComponentInternal.h"
25
26#include "arcane/materials/internal/ComponentItemInternalData.h"
27#include "arcane/materials/internal/MeshComponentData.h"
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
31
32namespace Arcane::Materials
33{
34
35/*---------------------------------------------------------------------------*/
36/*---------------------------------------------------------------------------*/
37
38class IMeshMaterialMng;
39class MeshMaterial;
40class ComponentItemInternalData;
41
42/*---------------------------------------------------------------------------*/
43/*---------------------------------------------------------------------------*/
52: public TraceAccessor
53, public IMeshEnvironment
54{
57 {
58 public:
59 InternalApi(MeshEnvironment* env) : m_environment(env){}
60 public:
62 {
63 return m_environment->variableIndexer();
64 }
66 {
67 return m_environment->constituentItemListView();
68 }
69 Int32 variableIndexerIndex() const override;
72
73 private:
74
75 MeshEnvironment* m_environment;
76 };
77
78 public:
79
81
82 public:
83
85 ITraceMng* traceMng() override { return TraceAccessor::traceMng(); }
86 String name() const override { return m_data.name(); }
87 CellGroup cells() const override { return m_data.items(); }
89 {
90 return m_materials;
91 }
92 Integer nbMaterial() const override
93 {
94 return m_materials.size();
95 }
96 MeshMaterialVariableIndexer* variableIndexer() const
97 {
98 return m_data.variableIndexer();
99 }
100 ConstituentItemLocalIdListView constituentItemListView() const
101 {
102 return m_data.constituentItemListView();
103 }
104 Int32 id() const override
105 {
106 return m_data.componentId();
107 }
108
109 IUserMeshEnvironment* userEnvironment() const override { return m_user_environment; }
110 void setUserEnvironment(IUserMeshEnvironment* umm) override { m_user_environment = umm; }
111
113 EnvCell findEnvCell(AllEnvCell c) const override;
114
115 ComponentItemVectorView view() const override;
116 EnvItemVectorView envView() const override;
117
118 void checkValid() override;
119
120 bool isMaterial() const override { return false; }
121 bool isEnvironment() const override { return true; }
122 bool hasSpace(MatVarSpace space) const override
123 {
125 }
126 IMeshMaterial* asMaterial() override { return nullptr; }
127 IMeshEnvironment* asEnvironment() override { return this; }
128
132
135 EnvPartItemVectorView partEnvItems(eMatPart part) const override;
136
138 bool isMonoMaterial() const;
139
140 public:
141
142 IMeshComponentInternal* _internalApi() override { return &m_internal_api; }
143
144 public:
145
146 void setConstituentItem(Int32 index, ConstituentItemIndex id)
147 {
148 m_data._setConstituentItem(index,id);
149 }
150 Int16 componentId() const { return m_data.componentId(); }
151
152 public:
153
155
156 void build();
157 void addMaterial(MeshMaterial* mm);
158 void setVariableIndexer(MeshMaterialVariableIndexer* idx);
160 void computeNbMatPerCell();
161
162 void computeItemListForMaterials(const ConstituentConnectivityList& connectivity_list);
163
165 Integer totalNbCellMat() const { return m_total_nb_cell_mat; }
166 void addToTotalNbCellMat(Int32 v) { m_total_nb_cell_mat += v; }
167
168 void resizeItemsInternal(Integer nb_item);
170 void notifyLocalIdsChanged(Int32ConstArrayView old_to_new_ids);
171 MeshComponentData* componentData() { return &m_data; }
172
173 ConstArrayView<MeshMaterial*> trueMaterials()
174 {
175 return m_true_materials;
176 }
177 void setMatInternalDataRange(ComponentItemInternalRange v) { m_mat_internal_data_range = v; }
179
180 private:
181
184
185 IUserMeshEnvironment* m_user_environment = nullptr;
186
187 UniqueArray<IMeshMaterial*> m_materials;
188 UniqueArray<MeshMaterial*> m_true_materials;
189
192 IItemGroupObserver* m_group_observer = nullptr;
193 MeshComponentData m_data;
194 MeshEnvironment* m_non_const_this = nullptr;
195 InternalApi m_internal_api;
196 ComponentItemInternalRange m_mat_internal_data_range;
197
198 public:
199
200 void _computeMaterialIndexes(ComponentItemInternalData* item_internal_data, RunQueue& queue);
202
203 private:
204
206};
207
208/*---------------------------------------------------------------------------*/
209/*---------------------------------------------------------------------------*/
210
211} // End namespace Arcane::Materials
212
213/*---------------------------------------------------------------------------*/
214/*---------------------------------------------------------------------------*/
215
216#endif
File d'exécution pour un accélérateur.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Maille arcane avec info matériaux et milieux.
Représente un composant d'une maille multi-matériau.
Gestion des listes de 'ComponentItemInternal'.
Interval des identifiants des constituants dans la liste des ComponentItemInternal.
Vue sur un vecteur sur les entités d'un composant.
Vue sur une partie pure ou partielles des entités d'un composant.
Index d'une entité constituant dans la liste des entités constituants.
Vue sur une instance de ConstituentItemLocalIdList.
Maille arcane d'un milieu.
Vue sur un vecteur sur les entités d'un milieu.
Vue sur une partie pure ou partielles des entités d'un milieu.
API interne Arcane de 'IMeshComponent'.
Interface du gestionnaire des matériaux et des milieux d'un maillage.
Interface d'un matériau d'un maillage.
Données d'un constituant (matériau ou milieu) d'un maillage.
MeshMaterialVariableIndexer * variableIndexer() const override
Indexeur pour accéder aux variables partielles.
Ref< IConstituentItemVectorImpl > createItemVectorImpl() const override
Créé une instance de l'implémentation de 'ConstituentItemVectorImpl'.
ConstituentItemLocalIdListView constituentItemListView() const override
Vue sur les mailles du constituant.
Int32 variableIndexerIndex() const override
Index pour accéder aux variables partielles.
bool isEnvironment() const override
Vrai si le composant est un milieu.
void _computeMaterialIndexesMonoMat(ComponentItemInternalData *item_internal_data, RunQueue &queue)
Calcul les infos sur les matériaux en mono-matériaux.
IMeshMaterialMng * m_material_mng
Gestionnaire de matériaux.
void checkValid() override
Vérifie que le composant est valide.
void build()
Fonctions publiques mais réservées au IMeshMaterialMng.
ComponentItemVectorView view() const override
Vue associée à ce composant.
IMeshMaterial * asMaterial() override
Retourne le composant sous la forme d'un IMeshMaterial.
ComponentPartItemVectorView partItems(eMatPart part) const override
Vue sur la partie pure ou impure des entités du composant.
IMeshEnvironment * asEnvironment() override
Retourne le composant sous la forme d'un IMeshMaterial.
bool hasSpace(MatVarSpace space) const override
Indique si le composant est défini pour l'espace space.
ComponentImpurePartItemVectorView impureItems() const override
Vue sur la liste des entités impures (partielles) partielles du composant.
EnvImpurePartItemVectorView impureEnvItems() const override
Vue sur la liste des entités impures (partielles) partielles du milieu.
EnvPartItemVectorView partEnvItems(eMatPart part) const override
Vue sur la partie pure ou impure des entités du milieu.
void computeItemListForMaterials(const ConstituentConnectivityList &connectivity_list)
Calcul pour les mailles des matériaux du milieu leur emplacement dans le tableau d'indexation des var...
ConstArrayView< IMeshMaterial * > materials() override
Liste des matériaux de ce milieu.
void computeMaterialIndexes(ComponentItemInternalData *item_internal_data, RunQueue &queue)
Calcul les infos sur les matériaux.
Int32 id() const override
Identifiant du composant.
IUserMeshEnvironment * userEnvironment() const override
Identifiant du milieu. Il s'agit aussi de l'indice (en commencant par 0) de ce milieu dans la liste d...
ComponentCell findComponentCell(AllEnvCell c) const override
Maille de ce composant pour la maille c.
Integer totalNbCellMat() const
Nombre total de mailles pour tous les matériaux.
EnvCell findEnvCell(AllEnvCell c) const override
Maille de ce milieu pour la maille c.
CellGroup cells() const override
Groupe des mailles de ce matériau.
void computeNbMatPerCell()
Recalcule le nombre de mailles par matériau et de mailles totales.
ComponentPurePartItemVectorView pureItems() const override
Vue sur la liste des entités pures (associées à la maille globale) du composant.
IMeshMaterialMng * materialMng() override
Gestionnaire associé.
Integer nbMaterial() const override
Nombre de matériaux dans le milieu.
EnvPurePartItemVectorView pureEnvItems() const override
Vue sur la liste des entités pures (associées à la maille globale) du milieu.
void setUserEnvironment(IUserMeshEnvironment *umm) override
Positionne le milieu utilisateur associé
IMeshComponentInternal * _internalApi() override
API interne.
EnvItemVectorView envView() const override
Vue associée à ce milieu.
Integer m_total_nb_cell_mat
Nombre total de mailles pour tous les matériaux.
ITraceMng * traceMng() override
Gestionnaire de trace associé.
bool isMonoMaterial() const
Indique si le milieu est mono-matériau.
bool isMaterial() const override
Vrai si le composant est un matériau.
String name() const override
Nom du composant.
Vue constante d'un tableau de type T.
Interface du gestionnaire de traces.
Chaîne de caractères unicode.
ITraceMng * traceMng() const
Gestionnaire de trace.
Active toujours les traces dans les parties Arcane concernant les matériaux.
MatVarSpace
Espace de définition d'une variable matériau.
@ Environment
Variable ayant des valeurs uniquement sur les milieux.
@ MaterialAndEnvironment
Variable ayant des valeurs sur les milieux et matériaux.
eMatPart
Partie d'un composant.