14#include "arcane/core/materials/IMeshMaterialVariable.h"
15#include "arcane/core/materials/IScalarMeshMaterialVariable.h"
16#include "arcane/core/materials/IArrayMeshMaterialVariable.h"
17#include "arcane/core/materials/MaterialVariableTypeInfo.h"
18#include "arcane/core/materials/MaterialVariableBuildInfo.h"
19#include "arcane/core/materials/IMeshMaterialMng.h"
20#include "arcane/core/materials/IMeshMaterialVariableFactoryMng.h"
21#include "arcane/core/materials/internal/IMeshMaterialVariableInternal.h"
23#include "arcane/utils/FatalErrorException.h"
25#include "arcane/VariableDataTypeTraits.h"
36template<
typename TrueType> MaterialVariableTypeInfo
37MeshMaterialVariableBuildTraits<TrueType>::
40 using ItemType =
typename TrueType::ItemTypeType;
41 using DataType =
typename TrueType::DataTypeType;
42 int dim = TrueType::dimension();
44 eDataType dt = VariableDataTypeTraitsT<DataType>::type();
45 return MaterialVariableTypeInfo(ik,dt,dim,space);
51template<
typename TrueType> TrueType*
52MeshMaterialVariableBuildTraits<TrueType>::
53getVariableReference(
const MaterialVariableBuildInfo& v,
MatVarSpace mvs)
55 MaterialVariableTypeInfo x = _buildVarTypeInfo(mvs);
57 MeshHandle mesh_handle = v.meshHandle();
58 if (mesh_handle.isNull())
61 IMeshMaterialMng* mat_mng = v.materialMng();
67 IMeshMaterialVariableFactoryMng* vm = mat_mng->variableFactoryMng();
68 IMeshMaterialVariable* var = vm->createVariable(x.fullName(),v);
70 auto* true_var =
dynamic_cast<TrueType*
>(var);
78#define ARCANE_INSTANTIATE_MAT(type) \
79 template class ARCANE_TEMPLATE_EXPORT MeshMaterialVariableBuildTraits<IScalarMeshMaterialVariable<Cell,type>>; \
80 template class ARCANE_TEMPLATE_EXPORT MeshMaterialVariableBuildTraits<IArrayMeshMaterialVariable<Cell,type>>
82ARCANE_INSTANTIATE_MAT(
Byte);
83ARCANE_INSTANTIATE_MAT(Int16);
84ARCANE_INSTANTIATE_MAT(Int32);
85ARCANE_INSTANTIATE_MAT(Int64);
86ARCANE_INSTANTIATE_MAT(Real);
87ARCANE_INSTANTIATE_MAT(Real2);
88ARCANE_INSTANTIATE_MAT(Real3);
89ARCANE_INSTANTIATE_MAT(Real2x2);
90ARCANE_INSTANTIATE_MAT(Real3x3);
#define ARCANE_CHECK_POINTER(ptr)
Macro retournant le pointeur ptr s'il est non nul ou lancant une exception s'il est nul.
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
static eItemKind kind()
Genre de l'entité
static IMeshMaterialMng * getReference(const MeshHandleOrMesh &mesh_handle, bool create=true)
Récupère ou créé la référence associée à mesh.
Active toujours les traces dans les parties Arcane concernant les matériaux.
MatVarSpace
Espace de définition d'une variable matériau.
eItemKind
Genre d'entité de maillage.
unsigned char Byte
Type d'un octet.
eDataType
Type d'une donnée.