Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
core/materials/MeshEnvironmentVariableRef.h
Aller à la documentation de ce fichier.
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/* MeshEnvironmentVariableRef.h (C) 2000-2024 */
9/* */
10/* Référence à une variable sur un milieu du maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_MATERIALS_MESHENVIRONMENTVARIABLEREF_H
13#define ARCANE_MATERIALS_MESHENVIRONMENTVARIABLEREF_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16/*!
17 * \file MeshEnvironmentVariableRef.h
18 *
19 * Ce fichier contient les différents types gérant les références
20 * sur les variables milieux.
21 */
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27namespace Arcane::Materials
28{
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
32/*!
33 * \ingroup ArcaneMaterials
34 * \brief Variable scalaire sur les mailles d'un milieu du maillage.
35 *
36 * Ce type de variable est identique à ceci près qu'elle n'a de valeurs
37 * que sur les milieux et les mailles globales mais pas sur les matériaux.
38 */
39template <typename DataType_>
42{
43 public:
44
45 using DataType = DataType_;
46 using PrivatePartType = IScalarMeshMaterialVariable<Cell, DataType>;
48 using ItemType = Cell;
49 using GlobalVariableRefType = MeshVariableScalarRefT<ItemType, DataType>;
50
51 public:
52
53 explicit ARCANE_CORE_EXPORT CellEnvironmentVariableScalarRef(const VariableBuildInfo& vb);
54 //! Construit une référence à la variable spécifiée dans \a vb
55 explicit ARCANE_CORE_EXPORT CellEnvironmentVariableScalarRef(const MaterialVariableBuildInfo& vb);
56 ARCANE_CORE_EXPORT CellEnvironmentVariableScalarRef(const ThatClass& rhs);
57
58 public:
59
60 //! Opérateur de recopie (interdit)
61 ARCANE_CORE_EXPORT ThatClass& operator=(const ThatClass& rhs) = delete;
62 //! Constructeur vide (interdit)
64
65 public:
66
67 //! Positionne la référence de l'instance à la variable \a rhs.
68 ARCANE_CORE_EXPORT virtual void refersTo(const ThatClass& rhs);
69
70 /*!
71 * \internal
72 */
73 ARCANE_CORE_EXPORT void updateFromInternal() override;
74
75 protected:
76
77 DataType operator[](MatVarIndex mvi) const
78 {
79 return m_value[mvi.arrayIndex()][mvi.valueIndex()];
80 }
81 DataType& operator[](MatVarIndex mvi)
82 {
83 return m_value[mvi.arrayIndex()][mvi.valueIndex()];
84 }
85
86 public:
87
88 //! Valeur partielle de la variable pour la maille matériau \a mc
90 {
91 return this->operator[](mc.localId());
92 }
93
94 //! Valeur partielle de la variable pour la maille matériau \a mc
96 {
97 return this->operator[](mc.localId());
98 }
99
100 //! Valeur globale de la variable pour la maille \a c
101 DataType operator[](CellLocalId c) const
102 {
103 return m_value[0][c.localId()];
104 }
105
106 //! Valeur globale de la variable pour la maille \a c
108 {
109 return m_value[0][c.localId()];
110 }
111
112 /*!
113 * \brief Valeur de la variable pour le milieu d'index \a env_id de
114 * la maille \a ou 0 si absent de la maille.
115 */
116 ARCANE_CORE_EXPORT DataType envValue(AllEnvCell c,Int32 env_id) const;
117
118 public:
119
120 ARCANE_CORE_EXPORT void fill(const DataType& value);
121 ARCANE_CORE_EXPORT void fillPartialValues(const DataType& value);
122
123 public:
124
125 //! Variable globale associée à cette variable matériau
126 ARCANE_CORE_EXPORT GlobalVariableRefType& globalVariable();
127 //! Variable globale associée à cette variable matériau
128 ARCANE_CORE_EXPORT const GlobalVariableRefType& globalVariable() const;
129
130 private:
131
132 PrivatePartType* m_private_part = nullptr;
133 ArrayView<DataType>* m_value = nullptr;
134 ArrayView<ArrayView<DataType>> m_container_value;
135
136 public:
137
138 // TODO: Temporaire. a supprimer.
139 ArrayView<DataType>* _internalValue() const { return m_value; }
140
141 private:
142
143 void _init();
144 void _setContainerView();
145};
146
147/*---------------------------------------------------------------------------*/
148/*---------------------------------------------------------------------------*/
149/*!
150 * \ingroup ArcaneMaterials
151 * \brief Variable tableau sur les mailles d'un matériau du maillage.
152 * Pour l'instant, cette classe n'est instanciée que pour les mailles
153 */
154template<typename DataType_>
157{
158 public:
159
160 using DataType = DataType_;
161 using PrivatePartType = IArrayMeshMaterialVariable<Cell,DataType>;
162 using ItemType = Cell;
165
166 public:
167
168 explicit ARCANE_CORE_EXPORT CellEnvironmentVariableArrayRef(const VariableBuildInfo& vb);
169 //! Construit une référence à la variable spécifiée dans \a vb
170 explicit ARCANE_CORE_EXPORT CellEnvironmentVariableArrayRef(const MaterialVariableBuildInfo& vb);
171 ARCANE_CORE_EXPORT CellEnvironmentVariableArrayRef(const ThatClass& rhs);
172
173 public:
174
175 //! Opérateur de recopie (interdit)
176 ThatClass& operator=(const ThatClass& rhs) = delete;
177 //! Constructeur vide (interdit)
179
180 public:
181
182 //! Positionne la référence de l'instance à la variable \a rhs.
183 ARCANE_CORE_EXPORT virtual void refersTo(const ThatClass& rhs);
184
185 /*!
186 * \internal
187 */
188 ARCANE_CORE_EXPORT void updateFromInternal() override;
189
190 public:
191
192 //! Variable globale associée à cette variable matériau
193 ARCANE_CORE_EXPORT GlobalVariableRefType& globalVariable();
194 //! Variable globale associée à cette variable matériau
195 ARCANE_CORE_EXPORT const GlobalVariableRefType& globalVariable() const;
196
197 public:
198
199 /*!
200 * \brief Redimensionne le nombre d'éléments du tableau.
201 *
202 * La première dimension reste toujours égale au nombre d'éléments du maillage.
203 * Seule la deuxième composante est retaillée.
204 */
205 ARCANE_CORE_EXPORT void resize(Integer dim2_size);
206
207
208 protected:
209
210 ConstArrayView<DataType> operator[](MatVarIndex mvi) const
211 {
212 return m_value[mvi.arrayIndex()][mvi.valueIndex()];
213 }
214 ArrayView<DataType> operator[](MatVarIndex mvi)
215 {
216 return m_value[mvi.arrayIndex()][mvi.valueIndex()];
217 }
218
219 public:
220
221 //! Valeur partielle de la variable pour la maille matériau \a mc
223 {
224 return this->operator[](mc.localId());
225 }
226
227 //! Valeur partielle de la variable pour la maille matériau \a mc
229 {
230 return this->operator[](mc.localId());
231 }
232
233 //! Valeur globale de la variable pour la maille \a c
235 {
236 return m_value[0][c.localId()];
237 }
238
239 //! Valeur globale de la variable pour la maille \a c
241 {
242 return m_value[0][c.localId()];
243 }
244
245 private:
246
247 PrivatePartType* m_private_part = nullptr;
248 Array2View<DataType>* m_value = nullptr;
249 ArrayView<Array2View<DataType>> m_container_value;
250
251 private:
252
253 void _init();
254 void _setContainerView();
255};
256
257/*---------------------------------------------------------------------------*/
258/*---------------------------------------------------------------------------*/
259
260//! %Variable milieu de type \a #Byte
262//! %Variable milieu de type \a #Real
264//! %Variable milieu de type \a #Int16
266//! %Variable milieu de type \a #Int32
268//! %Variable milieu de type \a #Int64
270//! %Variable milieu de type \a Real2
272//! %Variable milieu de type \a Real3
274//! %Variable milieu de type \a Real2x2
276//! %Variable milieu de type \a Real3x3
278
279#ifdef ARCANE_64BIT
280//! %Variable milieu de type \a #Integer
282#else
283//! %Variable milieu de type \a #Integer
285#endif
286
287/*---------------------------------------------------------------------------*/
288/*---------------------------------------------------------------------------*/
289
290//! %Variable milieu de type tableau de \a #Byte
292//! %Variable milieu de type tableau de \a #Real
294//! %Variable milieu de type tableau de \a #Int16
296//! %Variable milieu de type tableau de \a #Int32
298//! %Variable milieu de type tableau de \a #Int64
300//! %Variable milieu de type tableau de \a Real2
302//! %Variable milieu de type tableau de \a Real3
304//! %Variable milieu de type tableau de \a Real2x2
306//! %Variable milieu de type tableau de \a Real3x3
308
309#ifdef ARCANE_64BIT
310//! %Variable milieu de type tableau de \a #Integer
312#else
313//! %Variable milieu de type tableau de \a #Integer
315#endif
316
317/*---------------------------------------------------------------------------*/
318/*---------------------------------------------------------------------------*/
319
320} // End namespace Arcane::Materials
321
322/*---------------------------------------------------------------------------*/
323/*---------------------------------------------------------------------------*/
324
325#endif
326
Maille d'un maillage.
Definition Item.h:1178
Maille arcane avec info matériaux et milieux.
Variable tableau sur les mailles d'un matériau du maillage. Pour l'instant, cette classe n'est instan...
ThatClass & operator=(const ThatClass &rhs)=delete
Opérateur de recopie (interdit)
GlobalVariableRefType & globalVariable()
Variable globale associée à cette variable matériau.
virtual void refersTo(const ThatClass &rhs)
Positionne la référence de l'instance à la variable rhs.
ArrayView< DataType > operator[](CellLocalId c)
Valeur globale de la variable pour la maille c.
CellEnvironmentVariableArrayRef()=delete
Constructeur vide (interdit)
ArrayView< DataType > operator[](ComponentItemLocalId mc)
Valeur partielle de la variable pour la maille matériau mc.
ConstArrayView< DataType > operator[](CellLocalId c) const
Valeur globale de la variable pour la maille c.
void resize(Integer dim2_size)
Redimensionne le nombre d'éléments du tableau.
ConstArrayView< DataType > operator[](ComponentItemLocalId mc) const
Valeur partielle de la variable pour la maille matériau mc.
Variable scalaire sur les mailles d'un milieu du maillage.
DataType envValue(AllEnvCell c, Int32 env_id) const
Valeur de la variable pour le milieu d'index env_id de la maille ou 0 si absent de la maille.
ThatClass & operator=(const ThatClass &rhs)=delete
Opérateur de recopie (interdit)
void fillPartialValues(const DataType &value)
Remplit les valeurs partielles de la variable avec la valeur value.
DataType operator[](CellLocalId c) const
Valeur globale de la variable pour la maille c.
GlobalVariableRefType & globalVariable()
Variable globale associée à cette variable matériau.
virtual void refersTo(const ThatClass &rhs)
Positionne la référence de l'instance à la variable rhs.
CellEnvironmentVariableScalarRef()=delete
Constructeur vide (interdit)
DataType operator[](ComponentItemLocalId mc) const
Valeur partielle de la variable pour la maille matériau mc.
DataType & operator[](ComponentItemLocalId mc)
Valeur partielle de la variable pour la maille matériau mc.
DataType & operator[](CellLocalId c)
Valeur globale de la variable pour la maille c.
void fill(const DataType &value)
Remplit les valeurs partielles et globales de la variable avec la valeur value.
Index d'un Item matériaux dans une variable.
Représente un index sur les variables matériaux et milieux.
constexpr __host__ __device__ Int32 arrayIndex() const
Retourne l'indice du tableau de valeur dans la liste des variables.
constexpr __host__ __device__ Int32 valueIndex() const
Retourne l'indice dans le tableau de valeur.
Classe de base des références aux variables matériaux.
Variable scalaire sur un type d'entité du maillage.
Paramètres nécessaires à la construction d'une variable.
Vue modifiable pour un tableau 2D.
Vue modifiable d'un tableau d'un type T.
Vue constante d'un tableau de type T.
Active toujours les traces dans les parties Arcane concernant les matériaux.
CellEnvironmentVariableArrayRef< Int16 > EnvironmentVariableCellArrayInt16
Variable milieu de type tableau de Int16
CellEnvironmentVariableArrayRef< Int32 > EnvironmentVariableCellArrayInt32
Variable milieu de type tableau de Int32
CellEnvironmentVariableScalarRef< Int16 > EnvironmentVariableCellInt16
Variable milieu de type Int16
CellEnvironmentVariableArrayRef< Real3 > EnvironmentVariableCellArrayReal3
Variable milieu de type tableau de Real3
CellEnvironmentVariableScalarRef< Int64 > EnvironmentVariableCellInt64
Variable milieu de type Int64
CellEnvironmentVariableScalarRef< Real2 > EnvironmentVariableCellReal2
Variable milieu de type Real2
CellEnvironmentVariableScalarRef< Real2x2 > EnvironmentVariableCellReal2x2
Variable milieu de type Real2x2
CellEnvironmentVariableScalarRef< Real3x3 > EnvironmentVariableCellReal3x3
Variable milieu de type Real3x3
CellEnvironmentVariableArrayRef< Real > EnvironmentVariableCellArrayReal
Variable milieu de type tableau de #Real
CellEnvironmentVariableArrayRef< Real2x2 > EnvironmentVariableCellArrayReal2x2
Variable milieu de type tableau de Real2x2
EnvironmentVariableCellInt32 EnvironmentVariableCellInteger
Variable milieu de type #Integer
EnvironmentVariableCellInt32 EnvironmentVariableCellArrayInteger
Variable milieu de type tableau de #Integer
CellEnvironmentVariableScalarRef< Real > EnvironmentVariableCellReal
Variable milieu de type #Real
CellEnvironmentVariableArrayRef< Real2 > EnvironmentVariableCellArrayReal2
Variable milieu de type tableau de Real2
CellEnvironmentVariableArrayRef< Real3x3 > EnvironmentVariableCellArrayReal3x3
Variable milieu de type tableau de Real3x3
CellEnvironmentVariableArrayRef< Byte > EnvironmentVariableCellArrayByte
Variable milieu de type tableau de Byte
CellEnvironmentVariableScalarRef< Int32 > EnvironmentVariableCellInt32
Variable milieu de type Int32
CellEnvironmentVariableScalarRef< Real3 > EnvironmentVariableCellReal3
Variable milieu de type Real3
CellEnvironmentVariableScalarRef< Byte > EnvironmentVariableCellByte
Variable milieu de type Byte
CellEnvironmentVariableArrayRef< Int64 > EnvironmentVariableCellArrayInt64
Variable milieu de type tableau de Int64