Arcane  v3.16.3.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
MeshMaterial.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/* MeshMaterial.h (C) 2000-2025 */
9/* */
10/* Matériau d'un maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_MATERIALS_INTERNAL_MESHMATERIAL_H
13#define ARCANE_MATERIALS_INTERNAL_MESHMATERIAL_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/TraceAccessor.h"
18
19#include "arcane/core/ItemGroup.h"
20#include "arcane/core/materials/IMeshMaterial.h"
21#include "arcane/core/materials/MatItem.h"
22#include "arcane/core/materials/internal/IMeshComponentInternal.h"
23
24#include "arcane/materials/internal/MeshComponentData.h"
25#include "arcane/materials/internal/MeshMaterialVariableIndexer.h"
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
30namespace Arcane::Materials
31{
32
33/*---------------------------------------------------------------------------*/
34/*---------------------------------------------------------------------------*/
35
37class MeshEnvironment;
39
40/*---------------------------------------------------------------------------*/
41/*---------------------------------------------------------------------------*/
50class MeshMaterial
51: public TraceAccessor
52, public IMeshMaterial
53{
54 class InternalApi
56 {
57 public:
58
59 explicit InternalApi(MeshMaterial* mat)
60 : m_material(mat)
61 {}
62
63 public:
64
66 {
67 return m_material->variableIndexer();
68 }
70 {
71 return m_material->constituentItemListView();
72 }
73 Int32 variableIndexerIndex() const override;
76
77 private:
78
79 MeshMaterial* m_material = nullptr;
80 };
81
82 public:
83
85 const String& name,Int16 mat_id);
86
87 public:
88
89 IMeshMaterialMng* materialMng() override { return m_material_mng; }
90 ITraceMng* traceMng() override { return TraceAccessor::traceMng(); }
91 MeshMaterialInfo* infos() const override { return m_infos; }
92 String name() const override { return m_data.name(); }
93 IMeshEnvironment* environment() const override;
94 CellGroup cells() const override;
95
96 MeshMaterialVariableIndexer* variableIndexer() const
97 {
98 return m_data.variableIndexer();
99 }
100
101 ConstituentItemLocalIdListView constituentItemListView() const
102 {
103 return m_data.constituentItemListView();
104 }
105
106 Int32 id() const override { return m_data.componentId(); }
107
108 IUserMeshMaterial* userMaterial() const override { return m_user_material; }
109 void setUserMaterial(IUserMeshMaterial* umm) override { m_user_material = umm; }
110
111 MatCell findMatCell(AllEnvCell c) const override;
112 ComponentCell findComponentCell(AllEnvCell c) const override;
113
114 MatItemVectorView matView() const override;
115 ComponentItemVectorView view() const override;
116
117 void checkValid() override;
118
119 bool isMaterial() const override { return true; }
120 bool isEnvironment() const override { return false; }
121 bool hasSpace(MatVarSpace space) const override { return space==MatVarSpace::MaterialAndEnvironment; }
122 IMeshMaterial* asMaterial() override { return this; }
123 IMeshEnvironment* asEnvironment() override { return nullptr; }
124
128
131 MatPartItemVectorView partMatItems(eMatPart part) const override;
132
134 {
135 m_data.setSpecificExecutionPolicy(policy);
136 }
138 {
139 return m_data.specificExecutionPolicy();
140 }
141
142 public:
143
144 IMeshComponentInternal* _internalApi() override { return &m_internal_api; }
145
146 public:
147
148 void setConstituentItem(Int32 index, ConstituentItemIndex id)
149 {
150 m_data._setConstituentItem(index,id);
151 }
152 Int16 componentId() const { return m_data.componentId(); }
153
154 public:
155
157
158 void build();
159 void resizeItemsInternal(Integer nb_item);
160 MeshComponentData* componentData() { return &m_data; }
161 MeshEnvironment* trueEnvironment() { return m_environment; }
162 const MeshEnvironment* trueEnvironment() const { return m_environment; }
164
165 private:
166
167 IMeshMaterialMng* m_material_mng = nullptr;
168 MeshMaterialInfo* m_infos = nullptr;
169 MeshEnvironment* m_environment = nullptr;
170 IUserMeshMaterial* m_user_material = nullptr;
171 MeshComponentData m_data;
172 MeshMaterial* m_non_const_this = nullptr;
173 InternalApi m_internal_api;
174};
175
176/*---------------------------------------------------------------------------*/
177/*---------------------------------------------------------------------------*/
178
179} // End namespace Arcane::Materials
180
181/*---------------------------------------------------------------------------*/
182/*---------------------------------------------------------------------------*/
183
184#endif
185
Interface du gestionnaire de traces.
Maille arcane avec info matériaux et milieux.
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.
API interne Arcane de 'IMeshComponent'.
Interface du gestionnaire des matériaux et des milieux d'un maillage.
Interface d'un matériau utilisateur.
Représente un matériau d'une maille multi-matériau.
Vue sur la partie impure des entités d'un matériau.
Vue sur un vecteur sur les entités d'un matériau.
Vue sur une partie pure ou partielles des entités d'un matériau.
Vue sur la partie pure des entités d'un matériau.
Infos d'un matériau d'un maillage.
ConstituentItemLocalIdListView constituentItemListView() const override
Vue sur les mailles du constituant.
Ref< IConstituentItemVectorImpl > createItemVectorImpl() const override
Créé une instance de l'implémentation de 'ConstituentItemVectorImpl'.
MeshMaterialVariableIndexer * variableIndexer() const override
Indexeur pour accéder aux variables partielles.
Int32 variableIndexerIndex() const override
Index pour accéder aux variables partielles.
Matériau d'un maillage.
void build()
Fonctions publiques mais réservées au IMeshMaterialMng.
Int32 id() const override
Identifiant du composant.
IMeshEnvironment * environment() const override
Milieu auquel appartient ce matériau.
void setSpecificExecutionPolicy(Accelerator::eExecutionPolicy policy) override
Positionne une politique d'exécution pour ce constituant.
bool hasSpace(MatVarSpace space) const override
Indique si le composant est défini pour l'espace space.
MatItemVectorView matView() const override
Vue associée à ce matériau.
ComponentImpurePartItemVectorView impureItems() const override
Vue sur la liste des entités impures (partielles) partielles du composant.
Accelerator::eExecutionPolicy specificExecutionPolicy() const override
Politique d'exécution spécifique.
MatCell findMatCell(AllEnvCell c) const override
Maille de ce matériau pour la maille c.
IMeshComponentInternal * _internalApi() override
API interne.
bool isMaterial() const override
Vrai si le composant est un matériau.
ComponentPurePartItemVectorView pureItems() const override
Vue sur la liste des entités pures (associées à la maille globale) du composant.
ComponentItemVectorView view() const override
Vue associée à ce composant.
ComponentCell findComponentCell(AllEnvCell c) const override
Maille de ce composant pour la maille c.
IMeshEnvironment * asEnvironment() override
Retourne le composant sous la forme d'un IMeshMaterial.
IMeshMaterialMng * materialMng() override
Gestionnaire associé.
ComponentPartItemVectorView partItems(eMatPart part) const override
Vue sur la partie pure ou impure des entités du composant.
MatPurePartItemVectorView pureMatItems() const override
Vue sur la liste des entités pures (associées à la maille globale) du matériau.
String name() const override
Nom du composant.
void checkValid() override
Vérifie que le composant est valide.
MatPartItemVectorView partMatItems(eMatPart part) const override
Vue sur la partie pure ou impure des entités du matériau.
void setUserMaterial(IUserMeshMaterial *umm) override
Positionne le matériau utilisateur associé
MeshMaterialInfo * infos() const override
Infos du matériau.
MatImpurePartItemVectorView impureMatItems() const override
Vue sur la liste des entités impures (partielles) partielles du matériau.
IUserMeshMaterial * userMaterial() const override
Matériau utilisateur associé
IMeshMaterial * asMaterial() override
Retourne le composant sous la forme d'un IMeshMaterial.
ITraceMng * traceMng() override
Gestionnaire de trace associé.
CellGroup cells() const override
Groupe des mailles de ce matériau.
bool isEnvironment() const override
Vrai si le composant est un milieu.
Référence à une instance.
Chaîne de caractères unicode.
TraceAccessor(ITraceMng *m)
Construit un accesseur via le gestionnaire de trace m.
ITraceMng * traceMng() const
Gestionnaire de trace.
ItemGroupT< Cell > CellGroup
Groupe de mailles.
Definition ItemTypes.h:183
eExecutionPolicy
Politique d'exécution pour un Runner.
Active toujours les traces dans les parties Arcane concernant les matériaux.
MatVarSpace
Espace de définition d'une variable matériau.
@ MaterialAndEnvironment
Variable ayant des valeurs sur les milieux et matériaux.
eMatPart
Partie d'un composant.
Int32 Integer
Type représentant un entier.
std::int16_t Int16
Type entier signé sur 16 bits.
std::int32_t Int32
Type entier signé sur 32 bits.