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()
44MeshMaterialVariableRef::
45~MeshMaterialVariableRef()
59 m_is_registered =
false;
70 m_is_registered =
true;
76void MeshMaterialVariableRef::
124void MeshMaterialVariableRef::
153String MeshMaterialVariableRef::
158void MeshMaterialVariableRef::
163bool MeshMaterialVariableRef::
168void MeshMaterialVariableRef::
174void MeshMaterialVariableRef::
175addDependCurrentTime(
const VariableRef& var)
179void MeshMaterialVariableRef::
180addDependCurrentTime(
const VariableRef& var,
const TraceInfo& tinfo)
185void MeshMaterialVariableRef::
191void MeshMaterialVariableRef::
197void MeshMaterialVariableRef::
206void MeshMaterialVariableRef::
212void MeshMaterialVariableRef::
218void MeshMaterialVariableRef::
224void MeshMaterialVariableRef::
230void MeshMaterialVariableRef::
236void MeshMaterialVariableRef::
269: m_private_part(rhs.m_private_part)
274 m_private_part->incrementReference();
284: m_private_part(PrivatePartType::BuilderType::getVariableReference(var))
288 m_private_part->incrementReference();
299template<
typename DataType>
void
305 _internalInit(m_private_part->toMeshMaterialVariable());
312template<
typename DataType>
void
316 if (rhs.m_private_part==m_private_part)
320 m_private_part = rhs.m_private_part;
321 m_container_value = {};
327 m_private_part->incrementReference();
334template<
typename DataType>
void
344template<
typename DataType> DataType
353 return this->operator[](imatcell);
362template<
typename DataType> DataType
370 return this->operator[](ienvcell);
389template<
typename DataType>
void
393 m_private_part->fillFromArray(mat,values);
410template<
typename DataType>
void
414 m_private_part->fillFromArray(mat,values,indexes);
431template<
typename DataType>
void
435 m_private_part->fillToArray(mat,values);
452template<
typename DataType>
void
456 m_private_part->fillToArray(mat,values,indexes);
466template<
typename DataType>
void
481template<
typename DataType>
void
494template<
typename DataType>
void
496fill(
const DataType& value)
507template<
typename DataType>
void
511 m_private_part->fillPartialValues(value);
524 GlobalVariableRefType* rt = m_private_part->globalVariableReference();
537 GlobalVariableRefType* rt = m_private_part->globalVariableReference();
546template<
typename DataType>
void
551 m_container_value = m_private_part->_internalFullValuesView();
552 m_value = m_container_value.data();
555 m_container_value = {};
589: m_private_part(PrivatePartType::BuilderType::getVariableReference(var))
593 m_private_part->incrementReference();
604: m_private_part(rhs.m_private_part)
610 m_private_part->incrementReference();
619template<
typename DataType>
void
625 _internalInit(m_private_part->toMeshMaterialVariable());
633template<
typename DataType>
void
637 if (rhs.m_private_part==m_private_part)
642 m_private_part = rhs.m_private_part;
644 m_container_value = {};
649 m_private_part->incrementReference();
657template<
typename DataType>
void
671 GlobalVariableRefType* rt = m_private_part->globalVariableReference();
684 GlobalVariableRefType* rt = m_private_part->globalVariableReference();
693template<
typename DataType>
void
697 m_private_part->resize(dim2_size);
703template<
typename DataType>
void
708 m_container_value = m_private_part->_internalFullValuesView();
709 m_value = m_container_value.data();
712 m_container_value = {};
723#define ARCANE_INSTANTIATE_MAT(type) \
724 template class ARCANE_TEMPLATE_EXPORT CellMaterialVariableScalarRef<type>;\
725 template class ARCANE_TEMPLATE_EXPORT CellMaterialVariableArrayRef<type>
727ARCANE_INSTANTIATE_MAT(
Byte);
728ARCANE_INSTANTIATE_MAT(
Int8);
729ARCANE_INSTANTIATE_MAT(
Int16);
730ARCANE_INSTANTIATE_MAT(
Int32);
731ARCANE_INSTANTIATE_MAT(
Int64);
732ARCANE_INSTANTIATE_MAT(BFloat16);
733ARCANE_INSTANTIATE_MAT(
Float16);
734ARCANE_INSTANTIATE_MAT(
Float32);
735ARCANE_INSTANTIATE_MAT(
Real);
736ARCANE_INSTANTIATE_MAT(Real2);
737ARCANE_INSTANTIATE_MAT(Real3);
738ARCANE_INSTANTIATE_MAT(Real2x2);
739ARCANE_INSTANTIATE_MAT(Real3x3);
#define ARCANE_THROW(exception_class,...)
Macro pour envoyer une exception avec formattage.
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Vue modifiable d'un tableau d'un type T.
Tableau d'items de types quelconques.
void resize(Int64 s)
Change le nombre d'éléments du tableau à s.
ArrayView< T > view() const
Vue mutable sur ce tableau.
Vue constante d'un tableau de type T.
virtual void setUpToDate()=0
Indique que la variable vient d'être mise à jour.
virtual bool isUsed() const =0
Etat d'utilisation de la variable.
virtual String name() const =0
Nom de la variable.
Exception lorsqu'une erreur interne survient.
Integer size() const
Nombre d'éléments du groupe.
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)
CellMaterialVariableArrayRef(const VariableBuildInfo &vb)
Construit une référence à la variable spécifiée dans vb.
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.
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.
CellMaterialVariableScalarRef(const VariableBuildInfo &vb)
Construit une référence à la variable spécifiée dans vb.
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.
__host__ __device__ Int32 environmentId() const
Identifiant du milieu.
virtual CellGroup cells() const =0
Groupe des mailles de ce matériau.
Interface d'une variable matériau d'un maillage.
virtual void addDepend(IMeshMaterialVariable *var)=0
Ajoute var à la liste des dépendances.
virtual IVariable * globalVariable() const =0
Variable globale sur le maillage associée.
virtual void update(IMeshMaterial *mat)=0
Recalcule la variable pour le matériau mat si nécessaire.
Interface d'un matériau d'un maillage.
Représente un matériau d'une maille multi-matériau.
__host__ __device__ Int32 materialId() const
Identifiant du matériau.
Classe de base des références aux variables matériaux.
MeshMaterialVariableRef * nextReference()
Référence suivante (ou null) sur variable()
IMeshMaterialVariable * materialVariable() const
Variable matériau associée.
void setNextReference(MeshMaterialVariableRef *v)
Positionne la référence suivante.
IMeshMaterialVariable * m_material_variable
Variable associée.
MeshMaterialVariableRef * previousReference()
Référence précédente (ou null) sur variable()
IVariable * m_global_variable
Variable globale associée.
void unregisterVariable()
Supprime l'enregistrement de la variable (interne)
void registerVariable()
Enregistre la variable (interne)
MeshMaterialVariableRef * m_next_reference
Référence suivante sur m_variable.
void synchronize()
Synchronise les valeurs entre les sous-domaines.
MeshMaterialVariableRef * m_previous_reference
Référence précédente sur m_variable.
void setPreviousReference(MeshMaterialVariableRef *v)
Positionne la référence précédente.
Synchronisation d'une liste de variables matériaux.
Variable tableau sur un type d'entité du maillage.
Variable scalaire sur un type d'entité du maillage.
Chaîne de caractères unicode.
Paramètres nécessaires à la construction d'une variable.
Référence à une variable.
IVariable * variable() const
Variable associée.
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.
std::int8_t Int8
Type entier signé sur 8 bits.
std::int64_t Int64
Type entier signé sur 64 bits.
Int32 Integer
Type représentant un entier.
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
@ Float16
Donnée de type Float16.
std::int16_t Int16
Type entier signé sur 16 bits.
double Real
Type représentant un réel.
unsigned char Byte
Type d'un octet.
float Float32
Type flottant IEEE-753 simple précision.
std::int32_t Int32
Type entier signé sur 32 bits.