12#ifndef ARCANE_ACCELERATOR_MATERIALVARIABLEVIEWS_H
13#define ARCANE_ACCELERATOR_MATERIALVARIABLEVIEWS_H
17#include "arcane/core/materials/IMeshMaterialVariable.h"
20#include "arcane/core/materials/MatItem.h"
22#include "arcane/accelerator/AcceleratorGlobal.h"
41class ARCANE_ACCELERATOR_EXPORT MatVariableViewBase
48 MatVariableViewBase() =
default;
56template <
typename ItemType,
typename DataType>
57class MatItemVariableScalarInViewT
58:
public MatVariableViewBase
69 : MatVariableViewBase(vbi, var)
72 MatItemVariableScalarInViewT() =
default;
75 ARCCORE_HOST_DEVICE
const DataType&
operator[](ComponentItemLocalId lid)
const
83 return this->m_value[0][pmvi.valueIndex()];
87 ARCCORE_HOST_DEVICE
const DataType&
operator[](ItemIndexType item)
const
89 return this->m_value[0][item.localId()];
93 ARCCORE_HOST_DEVICE
const DataType&
value(ComponentItemLocalId mvi)
const
100 return this->m_value[0][idx.valueIndex()];
113template <
typename ItemType,
typename Accessor>
114class MatItemVariableScalarOutViewT
115:
public MatVariableViewBase
119 using DataType =
typename Accessor::ValueType;
120 using DataTypeReturnType = DataType&;
130 : MatVariableViewBase(vbi, var)
133 MatItemVariableScalarOutViewT() =
default;
136 ARCCORE_HOST_DEVICE Accessor
operator[](ComponentItemLocalId lid)
const
143 return Accessor(this->m_value[0][pmvi.valueIndex()]);
147 ARCCORE_HOST_DEVICE Accessor
operator[](ItemIndexType item)
const
149 ARCANE_CHECK_AT(item.localId(), this->m_value[0].size());
150 return Accessor(this->m_value[0].data() + item.localId());
154 ARCCORE_HOST_DEVICE Accessor
value(ComponentItemLocalId lid)
const
160 ARCCORE_HOST_DEVICE
void setValue(ComponentItemLocalId lid,
const DataType& v)
const
167 return Accessor(this->m_value[0][idx.valueIndex()]);
180template <
typename DataType>
auto
183 using Accessor = DataViewSetter<DataType>;
192template <
typename DataType>
auto
195 using Accessor = DataViewSetter<DataType>;
204template <
typename DataType>
auto
207 using Accessor = DataViewGetterSetter<DataType>;
216template <
typename DataType>
auto
219 using Accessor = DataViewGetterSetter<DataType>;
229template <
typename DataType>
auto
241template <
typename DataType>
auto
Vue en lecture sur une variable scalaire du maillage.
__host__ __device__ const DataType & operator[](ComponentItemLocalId lid) const
Opérateur d'accès pour l'entité item.
__host__ __device__ const DataType & value(ComponentItemLocalId mvi) const
Opérateur d'accès pour l'entité item.
__host__ __device__ const DataType & operator[](PureMatVarIndex pmvi) const
Opérateur d'accès pour l'entité item.
__host__ __device__ const DataType & operator[](ItemIndexType item) const
Surcharge pour accéder à la valeure globale à partir du cell id.
Vue en écriture sur une variable scalaire du maillage.
__host__ __device__ Accessor operator[](ComponentItemLocalId lid) const
Opérateur d'accès pour l'entité item.
__host__ __device__ Accessor value(ComponentItemLocalId lid) const
Opérateur d'accès pour l'entité item.
__host__ __device__ void setValue(ComponentItemLocalId lid, const DataType &v) const
Positionne la valeur pour l'entité item à v.
__host__ __device__ Accessor operator[](ItemIndexType item) const
Surcharge pour accéder à la valeure globale à partir du cell id.
Informations pour construire une vue pour les données sur accélérateur.
Vue modifiable d'un tableau d'un type T.
Caractéristiques des éléments du maillage.
Variable scalaire sur les mailles d'un milieu du maillage.
Variable scalaire sur les mailles d'un matériau du maillage.
constexpr __host__ __device__ MatVarIndex localId() const
Index générique pour accéder aux valeurs d'une variable.
Interface d'une variable matériau d'un maillage.
constexpr __host__ __device__ Int32 arrayIndex() const
Retourne l'indice du tableau de valeur dans la liste des variables.
constexpr __host__ __device__ Int32 valueIndex() const
Retourne l'indice dans le tableau de valeur.
IMeshMaterialVariable * materialVariable() const
Variable matériau associée.
Index d'un Item matériaux pure dans une variable.
Espace de nom pour l'utilisation des accélérateurs.
auto viewInOut(const ViewBuildInfo &vbi, CellMaterialVariableScalarRef< DataType > &var)
Vue en lecture/écriture pour les variables materiaux scalaire.
auto viewOut(const ViewBuildInfo &vbi, CellMaterialVariableScalarRef< DataType > &var)
Vue en écriture pour les variables materiaux scalaire.
auto viewIn(const ViewBuildInfo &vbi, const CellMaterialVariableScalarRef< DataType > &var)
Vue en lecture pour les variables materiaux scalaire.
Active toujours les traces dans les parties Arcane concernant les matériaux.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-