14#include "arcane/utils/NotImplementedException.h"
15#include "arcane/utils/TraceInfo.h"
16#include "arcane/utils/NumericTypes.h"
18#include "arcane/core/MeshVariableScalarRef.h"
19#include "arcane/core/VariableBuildInfo.h"
20#include "arcane/core/ArcaneException.h"
22#include "arcane/core/materials/IMeshMaterialMng.h"
23#include "arcane/core/materials/IMeshMaterial.h"
24#include "arcane/core/materials/MaterialVariableBuildInfo.h"
36MeshMaterialVariableRef::
37MeshMaterialVariableRef()
38: m_material_variable(nullptr)
39, m_previous_reference(nullptr)
40, m_next_reference(nullptr)
41, m_global_variable(nullptr)
42, m_is_registered(false)
49MeshMaterialVariableRef::
50~MeshMaterialVariableRef()
59void MeshMaterialVariableRef::
63 m_material_variable->removeVariableRef(
this);
64 m_is_registered =
false;
70void MeshMaterialVariableRef::
74 m_material_variable->addVariableRef(
this);
75 m_is_registered =
true;
81void MeshMaterialVariableRef::
96 return m_previous_reference;
105 return m_next_reference;
111void MeshMaterialVariableRef::
114 m_previous_reference = v;
120void MeshMaterialVariableRef::
123 m_next_reference = v;
129void MeshMaterialVariableRef::
138void MeshMaterialVariableRef::
142 m_material_variable->synchronize();
148void MeshMaterialVariableRef::
152 m_material_variable->synchronize(
sync_list);
158String MeshMaterialVariableRef::
161 return m_global_variable->name();
163void MeshMaterialVariableRef::
166 m_global_variable->setUpToDate();
168bool MeshMaterialVariableRef::
171 return m_global_variable->isUsed();
173void MeshMaterialVariableRef::
176 m_global_variable->update();
179void MeshMaterialVariableRef::
180addDependCurrentTime(
const VariableRef& var)
182 m_global_variable->addDepend(var.variable(),IVariable::DPT_CurrentTime);
184void MeshMaterialVariableRef::
185addDependCurrentTime(
const VariableRef& var,
const TraceInfo& tinfo)
187 m_global_variable->addDepend(var.variable(),IVariable::DPT_CurrentTime,tinfo);
190void MeshMaterialVariableRef::
191addDependCurrentTime(
const MeshMaterialVariableRef& var)
193 m_global_variable->addDepend(var.m_global_variable,IVariable::DPT_CurrentTime);
196void MeshMaterialVariableRef::
197addDependPreviousTime(
const MeshMaterialVariableRef& var)
199 m_global_variable->addDepend(var.m_global_variable,IVariable::DPT_PreviousTime);
202void MeshMaterialVariableRef::
203removeDepend(
const MeshMaterialVariableRef& var)
205 m_global_variable->removeDepend(var.m_global_variable);
211void MeshMaterialVariableRef::
214 m_material_variable->setUpToDate(
mat);
217void MeshMaterialVariableRef::
220 m_material_variable->update(
mat);
223void MeshMaterialVariableRef::
226 m_material_variable->addDepend(
var.variable());
229void MeshMaterialVariableRef::
232 m_material_variable->addDepend(
var.variable(),
tinfo);
235void MeshMaterialVariableRef::
238 m_material_variable->addDepend(
var.materialVariable());
241void MeshMaterialVariableRef::
244 m_material_variable->addDepend(
var.materialVariable(),
tinfo);
275: m_private_part(
rhs.m_private_part)
281 m_private_part->incrementReference();
292template<
typename DataType>
void
298 _internalInit(m_private_part->toMeshMaterialVariable());
305template<
typename DataType>
void
309 if (
rhs.m_private_part==m_private_part)
312 unregisterVariable();
313 m_private_part =
rhs.m_private_part;
314 m_container_value = {};
320 m_private_part->incrementReference();
327template<
typename DataType>
void
337template<
typename DataType> DataType
344 Int32
mid =
mc.materialId();
355template<
typename DataType> DataType
361 Int32
eid =
ec.environmentId();
382template<
typename DataType>
void
386 m_private_part->fillFromArray(
mat,values);
403template<
typename DataType>
void
407 m_private_part->fillFromArray(
mat,values,indexes);
424template<
typename DataType>
void
428 m_private_part->fillToArray(
mat,values);
445template<
typename DataType>
void
449 m_private_part->fillToArray(
mat,values,indexes);
459template<
typename DataType>
void
463 values.resize(
mat->cells().size());
464 fillToArray(
mat,values.view());
474template<
typename DataType>
void
478 values.resize(
mat->cells().size());
479 fillToArray(
mat,values.view(),indexes);
487template<
typename DataType>
void
491 globalVariable().fill(value);
492 fillPartialValues(value);
500template<
typename DataType>
void
504 m_private_part->fillPartialValues(value);
539template<
typename DataType>
void
544 m_container_value = m_private_part->_internalFullValuesView();
545 m_value = m_container_value.data();
548 m_container_value = {};
562: CellMaterialVariableArrayRef(MaterialVariableBuildInfo(nullptr,vb))
584: m_private_part(
rhs.m_private_part)
590 m_private_part->incrementReference();
599template<
typename DataType>
void
605 _internalInit(m_private_part->toMeshMaterialVariable());
613template<
typename DataType>
void
617 if (
rhs.m_private_part==m_private_part)
620 unregisterVariable();
622 m_private_part =
rhs.m_private_part;
624 m_container_value = {};
629 m_private_part->incrementReference();
637template<
typename DataType>
void
673template<
typename DataType>
void
677 m_private_part->resize(dim2_size);
683template<
typename DataType>
void
688 m_container_value = m_private_part->_internalFullValuesView();
689 m_value = m_container_value.data();
692 m_container_value = {};
703#define ARCANE_INSTANTIATE_MAT(type) \
704 template class ARCANE_TEMPLATE_EXPORT CellMaterialVariableScalarRef<type>;\
705 template class ARCANE_TEMPLATE_EXPORT CellMaterialVariableArrayRef<type>
707ARCANE_INSTANTIATE_MAT(
Byte);
708ARCANE_INSTANTIATE_MAT(
Int8);
709ARCANE_INSTANTIATE_MAT(
Int16);
710ARCANE_INSTANTIATE_MAT(
Int32);
711ARCANE_INSTANTIATE_MAT(
Int64);
713ARCANE_INSTANTIATE_MAT(
Float16);
714ARCANE_INSTANTIATE_MAT(
Float32);
715ARCANE_INSTANTIATE_MAT(
Real);
716ARCANE_INSTANTIATE_MAT(Real2);
717ARCANE_INSTANTIATE_MAT(Real3);
718ARCANE_INSTANTIATE_MAT(Real2x2);
719ARCANE_INSTANTIATE_MAT(Real3x3);
#define ARCANE_THROW(exception_class,...)
Macro pour envoyer une exception avec formattage.
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Exception lorsqu'une erreur interne survient.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
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...
CellMaterialVariableArrayRef()=delete
Constructeur vide (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.
void updateFromInternal() override
void resize(Integer dim2_size)
Redimensionne le nombre d'éléments du tableau.
Variable scalaire sur les mailles d'un matériau du maillage. Pour l'instant, cette classe n'est insta...
DataType matValue(AllEnvCell c, Int32 mat_id) const
Valeur de la variable pour le matériau d'index mat_id de la maille ou 0 si absent de la maille.
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.
void fill(const DataType &value)
Remplit les valeurs partielles et globales de la variable avec la valeur value.
void fillPartialValues(const DataType &value)
Remplit les valeurs partielles de la variable avec la valeur value.
void fillFromArray(IMeshMaterial *mat, ConstArrayView< DataType > values)
Remplit les valeurs de la variable pour un matériau.
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.
void updateFromInternal() override
CellMaterialVariableScalarRef()=delete
Constructeur vide (interdit)
void fillToArray(IMeshMaterial *mat, ArrayView< DataType > values)
Remplit un tableau à partir des valeurs de la variable pour un matériau.
Maille arcane d'un milieu.
Interface d'une variable matériau d'un maillage.
Interface d'un matériau d'un maillage.
Représente un matériau d'une maille multi-matériau.
Classe de base des références aux variables matériaux.
Synchronisation d'une liste de variables matériaux.
Paramètres nécessaires à la construction d'une variable.
Référence à une variable.
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.
@ MaterialAndEnvironment
Variable ayant des valeurs sur les milieux et matériaux.
Arccore::Float16 Float16
Type 'Float16' (binary16)
Arccore::Int8 Int8
Type représentant un entier sur 8 bits.
Arccore::BFloat16 BFloat16
Type 'Brain Float16'.
float Float32
Type flottant IEEE-753 simple précision (binary32)
unsigned char Byte
Type d'un octet.