12#ifndef ARCANE_MATERIALS_MESHMATERIALVARIABLE_H
13#define ARCANE_MATERIALS_MESHMATERIALVARIABLE_H
17#include "arcane/utils/NotImplementedException.h"
18#include "arcane/utils/Array.h"
19#include "arcane/utils/MemoryView.h"
21#include "arcane/core/materials/IMeshMaterialVariable.h"
22#include "arcane/core/materials/MatVarIndex.h"
26#include "arcane/materials/MeshMaterialVariableFactoryRegisterer.h"
28#include "arcane/core/materials/IScalarMeshMaterialVariable.h"
29#include "arcane/core/materials/IArrayMeshMaterialVariable.h"
38class VariableBuildInfo;
39template <
typename ItemType,
typename DataTypeT>
class MeshVariableScalarRefT;
51class MaterialVariableBuildInfo;
52class MeshMaterialVariablePrivate;
53class MeshMaterialVariableSynchronizerList;
54class CopyBetweenPartialAndGlobalArgs;
55class ResizeVariableIndexerArgs;
56class InitializeWithZeroArgs;
83 String name()
const override;
89 void setKeepOnChange(
bool v)
override;
90 bool keepOnChange()
const override;
135 void incrementReference();
177template<
typename DataType>
182 using ValueType = DataType;
184 using SubViewType = DataType;
185 using SubConstViewType = DataType;
186 using SubInputViewType = DataType;
198 ARCANE_MATERIALS_EXPORT
static void
200 ARCANE_MATERIALS_EXPORT
static void
204 ARCANE_MATERIALS_EXPORT
static void
207 static ARCCORE_HOST_DEVICE
void setValue(DataType& view,
const DataType& v)
211 ARCANE_MATERIALS_EXPORT
static void
213 static Integer dimension() {
return 0; }
217 return asWritableBytes(view);
225template<
typename DataType>
230 using ValueType = DataType;
246 ARCANE_MATERIALS_EXPORT
249 ARCANE_MATERIALS_EXPORT
253 ARCANE_MATERIALS_EXPORT
264 ARCANE_MATERIALS_EXPORT
269 return asWritableBytes(s);
272 static Integer dimension() {
return 0; }
282template<
typename Traits>
288 using TraitsType = Traits;
289 using ValueType =
typename Traits::ValueType;
290 using DataType =
typename Traits::ValueType;
293 using SubViewType =
typename Traits::SubViewType;
294 using SubConstViewType =
typename Traits::SubConstViewType;
295 using SubInputViewType =
typename Traits::SubInputViewType;
296 using ContainerSpanType =
typename Traits::ContainerSpanType;
297 using ContainerViewType =
typename Traits::ContainerViewType;
298 using ContainerConstViewType =
typename Traits::ContainerConstViewType;
299 using PrivatePartType =
typename Traits::PrivatePartType;
300 using ValueDataType =
typename Traits::ValueDataType;
301 using ContainerType =
typename Traits::ContainerType;
302 using UniqueContainerType =
typename Traits::UniqueContainerType;
303 using VariableRefType =
typename Traits::VariableRefType;
307 ARCANE_MATERIALS_EXPORT
319 ARCANE_MATERIALS_EXPORT
Ref<IData> _internalCreateSaveDataRef(Integer
nb_value)
override;
321 ARCANE_MATERIALS_EXPORT
324 ARCANE_MATERIALS_EXPORT
326 ARCANE_MATERIALS_EXPORT
330 ARCANE_MATERIALS_EXPORT
void
352 void _syncFromGlobalVariable();
353 PrivatePartType* _trueGlobalVariable()
355 return m_global_variable;
359 ARCANE_MATERIALS_EXPORT
void
361 ARCANE_MATERIALS_EXPORT
void _syncReferences(
bool check_resize)
override;
363 ARCANE_MATERIALS_EXPORT
void _copyHostViewsToViews(
RunQueue* queue);
370 PrivatePartType* m_global_variable =
nullptr;
389 ContainerViewType view;
391 view =
m_vars[index]->valueView();
393 m_views_as_bytes[index] = TraitsType::toBytes(view);
398 bool _isValidAndUsedAndGlobalUsed(PrivatePartType*
partial_var);
404template<
typename TrueType>
424template<
typename DataType>
442 ARCANE_MATERIALS_EXPORT
462 using BaseClass::setValue;
463 using BaseClass::value;
465 ARCANE_MATERIALS_EXPORT
void synchronize()
override;
467 ARCANE_MATERIALS_EXPORT
void dumpValues(std::ostream&
ostr)
override;
473 ARCANE_MATERIALS_EXPORT
475 ARCANE_MATERIALS_EXPORT
485 ARCANE_MATERIALS_EXPORT Int32 dataTypeSize()
const override;
486 ARCANE_MATERIALS_EXPORT
489 ARCANE_MATERIALS_EXPORT
495 using BaseClass::m_p;
499 using BaseClass::m_global_variable;
500 using BaseClass::m_global_variable_ref;
506 void _synchronizeV1();
507 void _synchronizeV2();
508 void _synchronizeV5();
509 Int64 _synchronize2();
526template<
typename ItemType,
typename DataType>
535 using BuilderType =
typename ThatInterface::BuilderType;
537 using ItemTypeTemplate = ItemType;
541 using PrivatePartType =
typename BaseClass::PrivatePartType;
547 ARCANE_MATERIALS_EXPORT
551 ARCANE_MATERIALS_EXPORT
556 VariableRefType* globalVariableReference()
const final {
return m_true_global_variable_ref; }
590template<
typename DataType>
609 ARCANE_MATERIALS_EXPORT
616 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use internal storage accessor")
621 ARCANE_MATERIALS_EXPORT
void synchronize()
override;
623 ARCANE_MATERIALS_EXPORT
void dumpValues(std::ostream&
ostr)
override;
629 ARCANE_MATERIALS_EXPORT Int32 dataTypeSize()
const override;
631 ARCANE_MATERIALS_EXPORT
635 ARCANE_MATERIALS_EXPORT
641 ARCANE_MATERIALS_EXPORT
void resize(Integer dim2_size);
650 using BaseClass::setValue;
651 using BaseClass::value;
655 using BaseClass::m_p;
660 using BaseClass::m_global_variable;
661 using BaseClass::m_global_variable_ref;
678template<
typename ItemType,
typename DataType>
687 using BuilderType =
typename ThatInterface::BuilderType;
689 using ItemTypeTemplate = ItemType;
693 using PrivatePartType =
typename BaseClass::PrivatePartType;
699 ARCANE_MATERIALS_EXPORT
708 void resize(Int32 dim2_size)
final { BaseClass::resize(dim2_size); }
709 VariableRefType* globalVariableReference()
const final {
return m_true_global_variable_ref; }
File d'exécution pour un accélérateur.
Variable sur un tableau 2D.
Tableau 2D d'items de types quelconques.
Tableau d'items de types quelconques.
Interface d'une donnée tableau bi-dimensionnel d'un type T.
Interface d'une donnée tableau d'un type T.
Interface d'une variable.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Vue sur une liste de mailles avec infos sur les milieux.
Arguments des méthodes de copie entre valeurs partielles et globales.
Interface d'accès pour CellMaterialVariableArrayRef.
Interface d'un composant (matériau ou milieu) d'un maillage.
Interface de la classe fonctor de recalcul d'une variable.
API interne Arcane de 'IMeshMaterialVariable'.
Interface d'une variable matériau d'un maillage.
Interface d'un matériau d'un maillage.
Interface d'accès pour CellMaterialVariableScalarRef.
Arguments des méthodes de copie entre valeurs partielles et globales.
Variable tableau sur un matériau du maillage.
void synchronize() override
Synchronise la variable.
void serialize(ISerializer *sbuffer, Int32ConstArrayView ids) override
Sérialise la variable pour les entités de numéro local ids.
void dumpValues(std::ostream &ostr) override
Affiche les valeurs de la variable sur le flot ostr.
Classe de base des variables matériaux de avec les caractéristiques spécifiées par Traits.
void syncReferences() override
Synchronise les références.
void buildFromManager(bool is_continue) override
Construit les infos de la variable. A usage interne à Arcane.
IVariable * globalVariable() const override
Variable globale sur le maillage associée.
UniqueArray< ContainerViewType > m_host_views
Liste des vues visibles uniquement depuis l'ĥote.
UniqueArray< PrivatePartType * > m_vars
Variables pour les différents matériaux.
UniqueArray< ContainerViewType > m_device_views
Liste des vues visibles uniquement depuis l'accélérateur.
void fillPartialValuesWithGlobalValues() override
Remplit les valeurs partielles avec la valeur de la maille globale associée.
void _setView(Int32 index)
Positionne les vues à partir du conteneur.
void fillPartialValuesWithSuperValues(Int32 level) override
Remplit les valeurs partielles avec la valeur de la maille du dessus. Si level vaut LEVEL_MATERIAL,...
Variable scalaire sur un matériau du maillage.
void fillPartialValues(const DataType &value)
Remplit les valeurs partielles avec la valeur value.
void synchronize() override
Synchronise la variable.
void fillToArray(IMeshMaterial *mat, ArrayView< DataType > values)
Remplit un tableau à partir des valeurs de la variable pour un matériau.
void serialize(ISerializer *sbuffer, Int32ConstArrayView ids) override
Sérialise la variable pour les entités de numéro local ids.
void dumpValues(std::ostream &ostr) override
Affiche les valeurs de la variable sur le flot ostr.
void fillFromArray(IMeshMaterial *mat, ConstArrayView< DataType > values)
Remplit les valeurs de la variable pour un matériau à partir d'un tableau.
Représente un index sur les variables matériaux et milieux.
constexpr ARCCORE_HOST_DEVICE Int32 arrayIndex() const
Retourne l'indice du tableau de valeur dans la liste des variables.
Caractéristiques pour une variable matériaux tableau.
Caractéristiques pour une variable matériaux scalaire.
Variable tableau sur un matériau du maillage.
static IMeshMaterialVariable * getReference(const MaterialVariableBuildInfo &v, MatVarSpace mvs)
Récupère ou construit une variable.
Enregistreur d'une fabrique de variables matériaux..
Partie privée d'une variable matériau.
Classe de base des références aux variables matériaux.
Variable scalaire sur un matériau du maillage.
Synchronisation d'une liste de variables matériaux.
Classe de base des variables matériaux.
void incrementReference()
Arguments des méthodes de copie entre valeurs partielles et globales.
Variable scalaire sur un type d'entité du maillage.
Implémentation d'une variable sur un tableau 1D.
Référence à une variable.
Vue modifiable pour un tableau 2D.
Vue modifiable d'un tableau d'un type T.
const T * data() const
Accès à la racine du tableau hors toute protection.
Vue pour un tableau 2D constant.
Vue constante d'un tableau de type T.
Interface d'un sérialiseur.
Interface du gestionnaire de traces.
Vue pour un tableau 2D dont la taille est un 'Int32'.
Vue d'un tableau d'éléments de type T.
Chaîne de caractères unicode.
Vecteur de données 2D avec sémantique par valeur (style STL).
Vecteur 1D de données avec sémantique par valeur (style STL).
Active toujours les traces dans les parties Arcane concernant les matériaux.
MatVarSpace
Espace de définition d'une variable matériau.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
ARCANE_DATATYPE_EXPORT Integer dataTypeSize(eDataType type)
Taille du type de donnée type (qui doit être différent de DT_String)