14#include "arcane/utils/NotImplementedException.h"
15#include "arcane/utils/TraceInfo.h"
16#include "arcane/utils/Real2.h"
17#include "arcane/utils/Real3.h"
18#include "arcane/utils/Real2x2.h"
19#include "arcane/utils/Real3x3.h"
21#include "arcane/MeshVariableScalarRef.h"
22#include "arcane/VariableBuildInfo.h"
23#include "arcane/ArcaneException.h"
25#include "arcane/core/materials/IMeshMaterialMng.h"
26#include "arcane/core/materials/IMeshMaterial.h"
27#include "arcane/core/materials/MaterialVariableBuildInfo.h"
39MeshMaterialVariableRef::
40MeshMaterialVariableRef()
41: m_material_variable(nullptr)
42, m_previous_reference(nullptr)
43, m_next_reference(nullptr)
44, m_global_variable(nullptr)
45, m_is_registered(false)
52MeshMaterialVariableRef::
53~MeshMaterialVariableRef()
62void MeshMaterialVariableRef::
66 m_material_variable->removeVariableRef(
this);
67 m_is_registered =
false;
73void MeshMaterialVariableRef::
77 m_material_variable->addVariableRef(
this);
78 m_is_registered =
true;
84void MeshMaterialVariableRef::
99 return m_previous_reference;
108 return m_next_reference;
114void MeshMaterialVariableRef::
117 m_previous_reference = v;
123void MeshMaterialVariableRef::
126 m_next_reference = v;
132void MeshMaterialVariableRef::
141void MeshMaterialVariableRef::
145 m_material_variable->synchronize();
151void MeshMaterialVariableRef::
155 m_material_variable->synchronize(
sync_list);
161String MeshMaterialVariableRef::
164 return m_global_variable->name();
166void MeshMaterialVariableRef::
169 m_global_variable->setUpToDate();
171bool MeshMaterialVariableRef::
174 return m_global_variable->isUsed();
176void MeshMaterialVariableRef::
179 m_global_variable->update();
182void MeshMaterialVariableRef::
183addDependCurrentTime(
const VariableRef& var)
185 m_global_variable->addDepend(var.variable(),IVariable::DPT_CurrentTime);
187void MeshMaterialVariableRef::
188addDependCurrentTime(
const VariableRef& var,
const TraceInfo& tinfo)
190 m_global_variable->addDepend(var.variable(),IVariable::DPT_CurrentTime,tinfo);
193void MeshMaterialVariableRef::
194addDependCurrentTime(
const MeshMaterialVariableRef& var)
196 m_global_variable->addDepend(var.m_global_variable,IVariable::DPT_CurrentTime);
199void MeshMaterialVariableRef::
200addDependPreviousTime(
const MeshMaterialVariableRef& var)
202 m_global_variable->addDepend(var.m_global_variable,IVariable::DPT_PreviousTime);
205void MeshMaterialVariableRef::
206removeDepend(
const MeshMaterialVariableRef& var)
208 m_global_variable->removeDepend(var.m_global_variable);
214void MeshMaterialVariableRef::
217 m_material_variable->setUpToDate(
mat);
220void MeshMaterialVariableRef::
223 m_material_variable->update(
mat);
226void MeshMaterialVariableRef::
229 m_material_variable->addDepend(
var.variable());
232void MeshMaterialVariableRef::
235 m_material_variable->addDepend(
var.variable(),
tinfo);
238void MeshMaterialVariableRef::
241 m_material_variable->addDepend(
var.materialVariable());
244void MeshMaterialVariableRef::
247 m_material_variable->addDepend(
var.materialVariable(),
tinfo);
278: m_private_part(
rhs.m_private_part)
284 m_private_part->incrementReference();
295template<
typename DataType>
void
301 _internalInit(m_private_part->toMeshMaterialVariable());
308template<
typename DataType>
void
312 if (
rhs.m_private_part==m_private_part)
315 unregisterVariable();
316 m_private_part =
rhs.m_private_part;
317 m_container_value = {};
323 m_private_part->incrementReference();
330template<
typename DataType>
void
340template<
typename DataType> DataType
347 Int32
mid =
mc.materialId();
358template<
typename DataType> DataType
364 Int32
eid =
ec.environmentId();
385template<
typename DataType>
void
389 m_private_part->fillFromArray(
mat,values);
406template<
typename DataType>
void
410 m_private_part->fillFromArray(
mat,values,indexes);
427template<
typename DataType>
void
431 m_private_part->fillToArray(
mat,values);
448template<
typename DataType>
void
452 m_private_part->fillToArray(
mat,values,indexes);
462template<
typename DataType>
void
466 values.resize(
mat->cells().size());
467 fillToArray(
mat,values.view());
477template<
typename DataType>
void
481 values.resize(
mat->cells().size());
482 fillToArray(
mat,values.view(),indexes);
490template<
typename DataType>
void
494 globalVariable().fill(value);
495 fillPartialValues(value);
503template<
typename DataType>
void
507 m_private_part->fillPartialValues(value);
542template<
typename DataType>
void
547 m_container_value = m_private_part->_internalFullValuesView();
548 m_value = m_container_value.data();
551 m_container_value = {};
565: CellMaterialVariableArrayRef(MaterialVariableBuildInfo(nullptr,vb))
587: m_private_part(
rhs.m_private_part)
593 m_private_part->incrementReference();
602template<
typename DataType>
void
608 _internalInit(m_private_part->toMeshMaterialVariable());
616template<
typename DataType>
void
620 if (
rhs.m_private_part==m_private_part)
623 unregisterVariable();
625 m_private_part =
rhs.m_private_part;
627 m_container_value = {};
632 m_private_part->incrementReference();
640template<
typename DataType>
void
676template<
typename DataType>
void
680 m_private_part->resize(dim2_size);
686template<
typename DataType>
void
691 m_container_value = m_private_part->_internalFullValuesView();
692 m_value = m_container_value.data();
695 m_container_value = {};
706#define ARCANE_INSTANTIATE_MAT(type) \
707 template class ARCANE_TEMPLATE_EXPORT CellMaterialVariableScalarRef<type>;\
708 template class ARCANE_TEMPLATE_EXPORT CellMaterialVariableArrayRef<type>
710ARCANE_INSTANTIATE_MAT(
Byte);
711ARCANE_INSTANTIATE_MAT(
Int16);
712ARCANE_INSTANTIATE_MAT(
Int32);
713ARCANE_INSTANTIATE_MAT(
Int64);
714ARCANE_INSTANTIATE_MAT(
Real);
715ARCANE_INSTANTIATE_MAT(Real2);
716ARCANE_INSTANTIATE_MAT(Real3);
717ARCANE_INSTANTIATE_MAT(Real2x2);
718ARCANE_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.
unsigned char Byte
Type d'un octet.