Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
core/materials/IMeshMaterialVariable.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2023 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/* IMeshMaterialVariable.h (C) 2000-2023 */
9/* */
10/* Interface d'un variable sur un matériau du maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_MATERIALS_IMESHMATERIALVARIABLE_H
13#define ARCANE_CORE_MATERIALS_IMESHMATERIALVARIABLE_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/ItemTypes.h"
18#include "arcane/core/materials/MaterialsCoreGlobal.h"
19
20/*---------------------------------------------------------------------------*/
21/*---------------------------------------------------------------------------*/
22
23namespace Arcane
24{
25class VariableDependInfo;
26}
27
28namespace Arcane::Materials
29{
30
31/*---------------------------------------------------------------------------*/
32/*---------------------------------------------------------------------------*/
33
34class IMeshMaterialVariableComputeFunction;
35class MeshMaterialVariableSynchronizerList;
36class MeshMaterialVariableDependInfo;
37class MeshMaterialVariableRef;
38class ComponentItemListBuilder;
39class IMeshMaterialVariableInternal;
40
41/*---------------------------------------------------------------------------*/
42/*---------------------------------------------------------------------------*/
43/*!
44 * \brief Interface d'une variable matériau d'un maillage.
45 */
46class ARCANE_CORE_EXPORT IMeshMaterialVariable
47{
48 public:
49
50 virtual ~IMeshMaterialVariable() = default;
51
52 public:
53
54 //! Nom de la variable.
55 virtual String name() const =0;
56
57 //! Variable globale sur le maillage associée.
58 virtual IVariable* globalVariable() const =0;
59
60 /*!
61 * \internal
62 * \brief Construit les infos de la variable.
63 * A usage interne à Arcane.
64 */
65 virtual void buildFromManager(bool is_continue) =0;
66
67 /*!
68 * \brief Synchronise les références.
69 *
70 * Synchronise les valeurs des références (VariableRef) à cette variable
71 * avec la valeur actuelle de la variable. Cette méthode est appelé
72 * automatiquement lorsque le nombre d'éléments d'une variable tableau change.
73 */
74 virtual void syncReferences() =0;
75
76 /*!
77 * \brief Ajoute une référence à cette variable
78 *
79 * \pre \a var_ref ne doit pas déjà référencer une variable.
80 */
81 virtual void addVariableRef(MeshMaterialVariableRef* var_ref) =0;
82
83 /*!
84 * \brief Supprime une référence à cette variable
85 *
86 * \pre \a var_ref doit référencer cette variable (un appel à addVariableRef()
87 * doit avoir été effectué sur cette variable).
88 */
89 virtual void removeVariableRef(MeshMaterialVariableRef* var_ref) =0;
90
91 //! \internal
92 virtual MeshMaterialVariableRef* firstReference() const =0;
93
94 /*!
95 * \internal
96 * \brief Variable contenant les valeurs spécifiques du matériau \a mat.
97 */
98 virtual IVariable* materialVariable(IMeshMaterial* mat) =0;
99
100 /*!
101 * \brief Indique si on souhaite conserver la valeur de la variable
102 * apres un changement de la liste des matériaux.
103 */
104 virtual void setKeepOnChange(bool v) =0;
105
106 /*!
107 * \brief Indique si on souhaite conserver la valeur de la variable
108 * apres un changement de la liste des matériaux.
109 */
110 virtual bool keepOnChange() const =0;
111
112 /*!
113 * \brief Synchronise la variable.
114 *
115 * La synchronisation se fait sur tous les matériaux de la maille.
116 * Il est indispensable que toutes mailles fantômes aient déjà le bon
117 * nombre de matériaux.
118 */
119 virtual void synchronize() =0;
120
121 virtual void synchronize(MeshMaterialVariableSynchronizerList& sync_list) =0;
122
123 /*!
124 * \brief Affiche les valeurs de la variable sur le flot \a ostr.
125 */
126 virtual void dumpValues(std::ostream& ostr) =0;
127
128 /*!
129 * \brief Affiche les valeurs de la variable pour la vue \a view sur le flot \a ostr.
130 */
131 virtual void dumpValues(std::ostream& ostr,AllEnvCellVectorView view) =0;
132
133 /*!
134 * \brief Remplit les valeurs partielles avec la valeur de la maille globale associée.
135 */
137
138 /*!
139 * \brief Remplit les valeurs partielles avec la valeur de la maille du dessus.
140 * Si \a level vaut LEVEL_MATERIAL, copie les valeurs matériaux avec celle du milieu.
141 * Si \a level vaut LEVEL_ENVIRONNEMENT, copie les valeurs des milieux avec
142 * celui de la maille globale.
143 * Si \a level vaut LEVEL_ALLENVIRONMENT, remplit toutes les valeurs partielles
144 * avec celle de la maille globale (cela rend cette méthode équivalente à
145 * fillGlobalValuesWithGlobalValues().
146 */
147 virtual void fillPartialValuesWithSuperValues(Int32 level) =0;
148
149 //! Sérialise la variable pour les entités de numéro local \a ids
150 virtual void serialize(ISerializer* sbuffer,Int32ConstArrayView ids) =0;
151
152 //! Espace de définition de la variable (matériau+milieu ou milieu uniquement)
153 virtual MatVarSpace space() const =0;
154
155 public:
156
157 //! @name Gestion des dépendances
158 //@{
159 /*! \brief Recalcule la variable pour le matériau \a mat si nécessaire
160 *
161 * Par le mécanisme de dépendances, cette opération est appelée récursivement
162 * sur toutes les variables dont dépend l'instance. La fonction de recalcul
163 * computeFunction() est ensuite appelée s'il s'avère qu'une des variables
164 * dont elle dépend a été modifiée plus récemment.
165 *
166 * \pre computeFunction() != 0
167 */
168 virtual void update(IMeshMaterial* mat) =0;
169
170 /*! \brief Indique que la variable vient d'être mise à jour.
171 *
172 * Pour une gestion correcte des dépendances, il faut que cette propriété
173 * soit appelée toutes les fois où la mise à jour d'une variable a été
174 * effectuée.
175 */
176 virtual void setUpToDate(IMeshMaterial* mat) =0;
177
178 //! Temps auquel la variable a été mise à jour
179 virtual Int64 modifiedTime(IMeshMaterial* mat) =0;
180
181 //! Ajoute \a var à la liste des dépendances
182 virtual void addDepend(IMeshMaterialVariable* var) =0;
183
184 //! Ajoute \a var à la liste des dépendances avec les infos de trace \a tinfo
185 virtual void addDepend(IMeshMaterialVariable* var,const TraceInfo& tinfo) =0;
186
187 //! Ajoute \a var à la liste des dépendances
188 virtual void addDepend(IVariable* var) =0;
189
190 //! Ajoute \a var à la liste des dépendances avec les infos de trace \a tinfo
191 virtual void addDepend(IVariable* var,const TraceInfo& tinfo) =0;
192
193 /*! \brief Supprime \a var de la liste des dépendances
194 */
195 virtual void removeDepend(IMeshMaterialVariable* var) =0;
196
197 /*! \brief Supprime \a var de la liste des dépendances
198 */
199 virtual void removeDepend(IVariable* var) =0;
200
201 /*! \brief Positionne la fonction de recalcule de la variable.
202 *
203 * Si une fonction de recalcule existait déjà, elle est détruite
204 * et remplacée par celle-ci.
205 */
207
208 //! Fonction utilisée pour mettre à jour la variable
210
211 /*!
212 * \brief Infos de dépendances.
213 *
214 * Remplit le tableau \a infos avec les infos de dépendance sur les variables
215 * globales et le tableau \a mat_infos avec celles sur les variables matériaux.
216 */
219 //@}
220
221 public:
222
223 virtual IMeshMaterialVariableInternal* _internalApi() =0;
224};
225
226/*---------------------------------------------------------------------------*/
227/*---------------------------------------------------------------------------*/
228/*!
229 * \brief Classe pour gérer la création du type concret de la variable matériaux.
230 */
231template<typename TrueType>
233{
234 public:
235 static ARCANE_CORE_EXPORT MaterialVariableTypeInfo _buildVarTypeInfo(MatVarSpace space);
236 static ARCANE_CORE_EXPORT TrueType* getVariableReference(const MaterialVariableBuildInfo& v,MatVarSpace mvs);
237};
238
239/*---------------------------------------------------------------------------*/
240/*---------------------------------------------------------------------------*/
241
242} // End namespace Arcane::Materials
243
244/*---------------------------------------------------------------------------*/
245/*---------------------------------------------------------------------------*/
246
247#endif
248
Interface d'une variable matériau d'un maillage.
virtual void addDepend(IVariable *var, const TraceInfo &tinfo)=0
Ajoute var à la liste des dépendances avec les infos de trace tinfo.
virtual void addVariableRef(MeshMaterialVariableRef *var_ref)=0
Ajoute une référence à cette variable.
virtual bool keepOnChange() const =0
Indique si on souhaite conserver la valeur de la variable apres un changement de la liste des matéria...
virtual void setComputeFunction(IMeshMaterialVariableComputeFunction *v)=0
Positionne la fonction de recalcule de la variable.
virtual void synchronize()=0
Synchronise la variable.
virtual void addDepend(IMeshMaterialVariable *var)=0
Ajoute var à la liste des dépendances.
virtual void setKeepOnChange(bool v)=0
Indique si on souhaite conserver la valeur de la variable apres un changement de la liste des matéria...
virtual MatVarSpace space() const =0
Espace de définition de la variable (matériau+milieu ou milieu uniquement)
virtual Int64 modifiedTime(IMeshMaterial *mat)=0
Temps auquel la variable a été mise à jour.
virtual void removeDepend(IMeshMaterialVariable *var)=0
Supprime var de la liste des dépendances.
virtual void dependInfos(Array< VariableDependInfo > &infos, Array< MeshMaterialVariableDependInfo > &mat_infos)=0
Infos de dépendances.
virtual void removeVariableRef(MeshMaterialVariableRef *var_ref)=0
Supprime une référence à cette variable.
virtual void dumpValues(std::ostream &ostr, AllEnvCellVectorView view)=0
Affiche les valeurs de la variable pour la vue view sur le flot ostr.
virtual void fillPartialValuesWithGlobalValues()=0
Remplit les valeurs partielles avec la valeur de la maille globale associée.
virtual void syncReferences()=0
Synchronise les références.
virtual void addDepend(IMeshMaterialVariable *var, const TraceInfo &tinfo)=0
Ajoute var à la liste des dépendances avec les infos de trace tinfo.
virtual void fillPartialValuesWithSuperValues(Int32 level)=0
Remplit les valeurs partielles avec la valeur de la maille du dessus. Si level vaut LEVEL_MATERIAL,...
virtual IVariable * globalVariable() const =0
Variable globale sur le maillage associée.
virtual void addDepend(IVariable *var)=0
Ajoute var à la liste des dépendances.
virtual IMeshMaterialVariableComputeFunction * computeFunction()=0
Fonction utilisée pour mettre à jour la variable.
virtual void setUpToDate(IMeshMaterial *mat)=0
Indique que la variable vient d'être mise à jour.
virtual void dumpValues(std::ostream &ostr)=0
Affiche les valeurs de la variable sur le flot ostr.
virtual void removeDepend(IVariable *var)=0
Supprime var de la liste des dépendances.
virtual void serialize(ISerializer *sbuffer, Int32ConstArrayView ids)=0
Sérialise la variable pour les entités de numéro local ids.
virtual void update(IMeshMaterial *mat)=0
Recalcule la variable pour le matériau mat si nécessaire.
virtual String name() const =0
Nom de la variable.
Interface d'un matériau d'un maillage.
Informations caractérisant le type d'une variable matériau.
Classe pour gérer la création du type concret de la variable matériaux.
Classe de base des références aux variables matériaux.
Classe de base des vecteurs 1D de données.
Vue constante d'un tableau de type T.
Chaîne de caractères unicode.
Active toujours les traces dans les parties Arcane concernant les matériaux.
MatVarSpace
Espace de définition d'une variable matériau.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-