12#ifndef ARCANE_ACCELERATOR_MATERIALVARIABLEVIEWS_H
13#define ARCANE_ACCELERATOR_MATERIALVARIABLEVIEWS_H
17#include "arcane/core/materials/IMeshMaterialVariable.h"
21#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 ItemType,
typename DataType>
181class MatItemVariableArrayInViewT
182:
public MatVariableViewBase
195 const ContainerViewType& v)
196 : MatVariableViewBase(vbi, var)
199 MatItemVariableArrayInViewT() =
default;
210 return m_value[pmvi];
216 return m_value[item];
228 return m_value[item];
233 ContainerViewType m_value;
241template <
typename ItemType,
typename Accessor>
242class MatItemVariableArrayOutViewT
243:
public MatVariableViewBase
247 using DataType =
typename Accessor::ValueType;
248 using DataTypeReturnType = DataType&;
255 : MatVariableViewBase(vbi, var)
258 MatItemVariableArrayOutViewT() =
default;
261 ARCCORE_HOST_DEVICE Accessor
operator[](ComponentItemLocalId lid)
const
263 return Accessor(m_value[lid]);
268 return Accessor(m_value[pmvi]);
272 ARCCORE_HOST_DEVICE Accessor
operator[](ItemIndexType item)
const
274 return Accessor(m_value[item]);
278 ARCCORE_HOST_DEVICE Accessor
value(ComponentItemLocalId lid)
const
280 return Accessor(m_value[lid]);
285 ContainerViewType m_value;
293template <
typename DataType>
auto
296 using Accessor = DataViewSetter<DataType>;
305template <
typename DataType>
auto
318template <
typename DataType>
auto
321 using Accessor = DataViewSetter<DataType>;
330template <
typename DataType>
auto
346template <
typename DataType>
auto
349 using Accessor = DataViewGetterSetter<DataType>;
358template <
typename DataType>
auto
371template <
typename DataType>
auto
374 using Accessor = DataViewGetterSetter<DataType>;
383template <
typename DataType>
auto
399template <
typename DataType>
auto
410template <
typename DataType>
auto
421template <
typename DataType>
auto
432template <
typename DataType>
auto
Vue en lecture seule sur une variable constituante de tableau 1D.
__host__ __device__ SmallSpan< const DataType > value(ComponentItemLocalId mvi) const
Opérateur d'accès pour l'entité item.
__host__ __device__ SmallSpan< const DataType > value(ItemIndexType item) const
Surcharge pour accéder à la valeur globale à partir de l'identifiant de cellule.
__host__ __device__ SmallSpan< const DataType > operator[](ItemIndexType item) const
Surcharge pour accéder à la valeur globale à partir de l'identifiant de cellule.
__host__ __device__ SmallSpan< const DataType > operator[](ComponentItemLocalId lid) const
Opérateur d'accès pour l'entité item.
__host__ __device__ SmallSpan< const DataType > operator[](PureMatVarIndex pmvi) const
Opérateur d'accès pour l'entité item.
Vue d'écriture sur une variable constituante de tableau 1D.
__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__ Accessor operator[](ItemIndexType item) const
Surcharge pour accéder à la valeur globale à partir de l'identifiant de cellule.
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.
Classe pour accéder à un tableau 1D d'une vue en lecture/écriture.
Classe pour accéder à un tableau 1D d'une vue en lecture/écriture.
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 tableau sur les mailles d'un matériau du maillage. Pour l'instant, cette classe n'est instan...
Variable scalaire sur les mailles d'un milieu du maillage.
Variable tableau sur les mailles d'un matériau du maillage. Pour l'instant, cette classe n'est instan...
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.
Vue du conteneur des variables constitutives de tableau 1D.
IMeshMaterialVariable * materialVariable() const
Variable matériau associée.
Index d'un Item matériaux pure dans une variable.
Vue d'un tableau d'éléments de type T.
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 scalaires.
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 --