12#ifndef ARCANE_ACCELERATOR_VARIABLEVIEWS_H 
   13#define ARCANE_ACCELERATOR_VARIABLEVIEWS_H 
   19#include "arcane/core/ItemLocalId.h" 
   21#include "arcane/core/GroupIndexTable.h" 
   23#include "arcane/accelerator/core/ViewBuildInfo.h" 
   24#include "arcane/accelerator/AcceleratorGlobal.h" 
   44class ARCANE_ACCELERATOR_EXPORT VariableViewBase
 
 
   56template <
typename DataType>
 
   64  using ValueType = DataType;
 
   65  using DataTypeReturnReference = View1DSetter<DataType>;
 
   69  ARCCORE_HOST_DEVICE DataViewSetter<DataType> operator[](
Int32 index)
 const 
   71    return DataViewSetter<DataType>(m_data.ptrAt(index));
 
   73  ARCCORE_HOST_DEVICE DataViewSetter<DataType> operator()(
Int32 index)
 const 
   75    return DataViewSetter<DataType>(m_data.ptrAt(index));
 
   77  DataTypeReturnReference& operator=(
const View1DSetter<DataType>& rhs) = 
delete;
 
 
   96template <
typename DataType>
 
   97class View1DGetterSetter
 
   98: 
public View1DSetter<DataType>
 
  100  using View1DSetter<DataType>::m_data;
 
  104  using ValueType = DataType;
 
  105  using DataTypeReturnReference = View1DGetterSetter<DataType>;
 
  110  : View1DSetter<DataType>(data)
 
  112  DataTypeReturnReference& operator=(
const View1DGetterSetter<DataType>& rhs) = 
delete;
 
  116  ARCCORE_HOST_DEVICE DataViewGetterSetter<DataType> operator[](
Int32 index)
 const 
  118    return DataViewGetterSetter<DataType>(m_data.ptrAt(index));
 
  126  ARCCORE_HOST_DEVICE 
operator Span<DataType>() { 
return { m_data.data(), m_data.size() }; }
 
  127  ARCCORE_HOST_DEVICE 
operator Span<const DataType>()
 const { 
return { m_data.data(), m_data.size() }; }
 
 
  135template <
typename _ItemType, 
typename _Accessor, 
typename _IndexerType, 
bool _HasSimd>
 
  136class ItemVariableScalarOutViewBaseT
 
  137: 
public VariableViewBase
 
  139  using Accessor = _Accessor;
 
  143  using ItemType = _ItemType;
 
  144  using IndexerType = _IndexerType;
 
  145  using DataType = 
typename _Accessor::ValueType;
 
  146  using DataTypeReturnReference = DataType&;
 
  151  : VariableViewBase(command, var)
 
  169  ARCCORE_HOST_DEVICE Accessor 
operator[](IndexerType item)
 const 
  171    ARCANE_CHECK_AT(item.asInt32(), m_size);
 
  172    return Accessor(this->m_values + item.asInt32());
 
 
  176  ARCCORE_HOST_DEVICE Accessor 
operator()(IndexerType item)
 const 
  178    ARCANE_CHECK_AT(item.asInt32(), m_size);
 
  179    return Accessor(this->m_values + item.asInt32());
 
 
  183  ARCCORE_HOST_DEVICE Accessor 
value(IndexerType item)
 const 
  185    ARCANE_CHECK_AT(item.asInt32(), m_size);
 
  186    return Accessor(this->m_values + item.asInt32());
 
 
  190  ARCCORE_HOST_DEVICE 
void setValue(IndexerType item, 
const DataType& v)
 const 
  192    ARCANE_CHECK_AT(item.asInt32(), m_size);
 
  193    this->m_values[item.asInt32()] = v;
 
 
 
  207template <
typename _ItemType, 
typename _Accessor>
 
  208class ItemVariableScalarOutViewT
 
  209: 
public VariableViewBase
 
  213  using DataType = 
typename _Accessor::ValueType;
 
  214  using Accessor = _Accessor;
 
  215  using ItemType = _ItemType;
 
  217  using DataTypeReturnReference = DataType&;
 
  222  : VariableViewBase(command, var)
 
  240  ARCCORE_HOST_DEVICE Accessor 
operator[](IndexerType item)
 const 
  242    ARCANE_CHECK_AT(item.asInt32(), m_size);
 
  243    return Accessor(this->m_values + item.asInt32());
 
 
  247  ARCCORE_HOST_DEVICE Accessor 
operator()(IndexerType item)
 const 
  249    ARCANE_CHECK_AT(item.asInt32(), m_size);
 
  250    return Accessor(this->m_values + item.asInt32());
 
 
  254  ARCCORE_HOST_DEVICE Accessor 
value(IndexerType item)
 const 
  256    ARCANE_CHECK_AT(item.asInt32(), m_size);
 
  257    return Accessor(this->m_values + item.asInt32());
 
 
  261  ARCCORE_HOST_DEVICE 
void setValue(IndexerType item, 
const DataType& v)
 const 
  263    ARCANE_CHECK_AT(item.asInt32(), m_size);
 
  264    this->m_values[item.asInt32()] = v;
 
 
 
  278template <
typename _ItemType, 
typename _Accessor>
 
  279class ItemPartialVariableScalarOutViewT
 
  280: 
public VariableViewBase
 
  284  using DataType = 
typename _Accessor::ValueType;
 
  285  using Accessor = _Accessor;
 
  286  using ItemType = _ItemType;
 
  288  using DataTypeReturnReference = DataType&;
 
  295  : VariableViewBase(command, var)
 
  298  , m_table_view(table_view)
 
  302  ARCCORE_HOST_DEVICE Accessor 
operator[](IndexerType item)
 const 
  304    ARCANE_CHECK_AT(item.asInt32(), m_size);
 
  305    return Accessor(this->m_values + item.asInt32());
 
 
  309  ARCCORE_HOST_DEVICE Accessor 
operator()(IndexerType item)
 const 
  311    ARCANE_CHECK_AT(item.asInt32(), m_size);
 
  312    return Accessor(this->m_values + item.asInt32());
 
 
  316  ARCCORE_HOST_DEVICE Accessor 
value(IndexerType item)
 const 
  318    ARCANE_CHECK_AT(item.asInt32(), m_size);
 
  319    return Accessor(this->m_values + item.asInt32());
 
 
  323  ARCCORE_HOST_DEVICE 
void setValue(IndexerType item, 
const DataType& v)
 const 
  325    ARCANE_CHECK_AT(item.asInt32(), m_size);
 
  326    this->m_values[item.asInt32()] = v;
 
 
  332  ARCCORE_HOST_DEVICE Accessor 
operator[](ItemLocalIdType lid)
 const 
  334    Int32 index = _toIndex(lid);
 
  335    ARCANE_CHECK_AT(index, m_size);
 
  336    return Accessor(m_values + index);
 
 
  340  ARCCORE_HOST_DEVICE Accessor 
operator()(ItemLocalIdType lid)
 const 
  342    Int32 index = _toIndex(lid);
 
  343    ARCANE_CHECK_AT(index, m_size);
 
  344    return Accessor(m_values + index);
 
 
  348  ARCCORE_HOST_DEVICE Accessor 
value(ItemLocalIdType lid)
 const 
  350    Int32 index = _toIndex(lid);
 
  351    ARCANE_CHECK_AT(index, m_size);
 
  352    return Accessor(m_values + index);
 
 
  356  ARCCORE_HOST_DEVICE 
void setValue(ItemLocalIdType lid, 
const DataType& v)
 const 
  358    Int32 index = _toIndex(lid);
 
  359    ARCANE_CHECK_AT(index, m_size);
 
  360    this->m_values[index] = v;
 
 
  365  ARCCORE_HOST_DEVICE 
Int32 _toIndex(ItemLocalIdType lid)
 const 
  367    return m_table_view[lid];
 
 
  385template <
typename _ItemType, 
typename _DataType>
 
  386class ItemVariableScalarInViewT
 
  387: 
public VariableViewBase
 
  391  using ItemType = _ItemType;
 
  392  using DataType = _DataType;
 
  398  : VariableViewBase(command, var)
 
  406  typename SimdTypeTraits<DataType>::SimdType
 
  409    typedef typename SimdTypeTraits<DataType>::SimdType 
SimdType;
 
 
  414  typename SimdTypeTraits<DataType>::SimdType
 
  417    typedef typename SimdTypeTraits<DataType>::SimdType 
SimdType;
 
  418    return SimdType(m_values.data() + simd_item.baseLocalId());
 
 
  422  ARCCORE_HOST_DEVICE 
const DataType& 
operator[](IndexerType item)
 const 
  424    return this->m_values[item.asInt32()];
 
 
  428  ARCCORE_HOST_DEVICE 
const DataType& 
operator()(IndexerType item)
 const 
  430    return this->m_values[item.asInt32()];
 
 
  434  ARCCORE_HOST_DEVICE 
const DataType& 
value(IndexerType item)
 const 
  436    return this->m_values[item.asInt32()];
 
 
 
  449template <
typename _ItemType, 
typename _DataType>
 
  450class ItemPartialVariableScalarInViewT
 
  451: 
public VariableViewBase
 
  455  using ItemType = _ItemType;
 
  456  using DataType = _DataType;
 
  464  : VariableViewBase(command, var)
 
  466  , m_table_view(table_view)
 
  472  ARCCORE_HOST_DEVICE 
const DataType& 
operator[](IndexerType item)
 const 
  474    return m_values[item.asInt32()];
 
 
  478  ARCCORE_HOST_DEVICE 
const DataType& 
operator()(IndexerType item)
 const 
  480    return m_values[item.asInt32()];
 
 
  484  ARCCORE_HOST_DEVICE 
const DataType& 
value(IndexerType item)
 const 
  486    return m_values[item.asInt32()];
 
 
  490  ARCCORE_HOST_DEVICE 
const DataType& 
operator[](ItemLocalIdType lid)
 const 
  492    return m_values[_toIndex(lid)];
 
 
  496  ARCCORE_HOST_DEVICE 
const DataType& 
operator()(ItemLocalIdType lid)
 const 
  498    return m_values[_toIndex(lid)];
 
 
  502  ARCCORE_HOST_DEVICE 
const DataType& 
value(ItemLocalIdType lid)
 const 
  504    return m_values[_toIndex(lid)];
 
 
  509  ARCCORE_HOST_DEVICE 
Int32 _toIndex(ItemLocalIdType lid)
 const 
  511    return m_table_view[lid];
 
 
  528template <
typename _ItemType, 
typename _DataType>
 
  529class ItemPartialVariableArrayInViewT
 
  530: 
public VariableViewBase
 
  534  using ItemType = _ItemType;
 
  535  using DataType = _DataType;
 
  543  : VariableViewBase(command, var)
 
  545  , m_table_view(table_view)
 
  551    return this->m_values[i.asInt32()];
 
 
  557    return m_values[_toIndex(lid)];
 
 
  563    return m_values[item.asInt32()][i];
 
 
  569    return m_values[_toIndex(lid)][i];
 
 
  575    return m_values[i.asInt32()];
 
 
  581    return m_values[_toIndex(lid)];
 
 
  586  ARCCORE_HOST_DEVICE 
Int32 _toIndex(ItemLocalIdType lid)
 const 
  588    return m_table_view[lid];
 
 
  602template <
typename _ItemType, 
typename _DataType>
 
  603class ItemVariableArrayInViewT
 
  604: 
public VariableViewBase
 
  612  using DataType = _DataType;
 
  617  : VariableViewBase(command, var)
 
  626    return this->m_values[i.asInt32()];
 
 
  632    return this->m_values[item.asInt32()][i];
 
 
  638    return this->m_values[i.asInt32()];
 
 
 
  654template <
typename _ItemType, 
typename _Accessor, 
typename _Indexer>
 
  655class ItemVariableArrayOutViewBaseT
 
  656: 
public VariableViewBase
 
  660  using ItemType = _ItemType;
 
  661  using Accessor = _Accessor;
 
  662  using IndexerType = _Indexer;
 
  663  using DataType = 
typename Accessor::ValueType;
 
  664  using DataTypeReturnType = 
typename Accessor::DataTypeReturnReference;
 
  669  : VariableViewBase(command, var)
 
  674  ARCCORE_HOST_DEVICE DataTypeReturnType 
operator[](IndexerType item)
 const 
  676    return DataTypeReturnType(this->m_values[item.asInt32()]);
 
 
  682    return this->m_values[item.asInt32()][i];
 
 
  688    return DataTypeReturnType(this->m_values[item.asInt32()]);
 
 
 
  701template <
typename _ItemType, 
typename _Accessor>
 
  702class ItemVariableArrayOutViewT
 
  703: 
public VariableViewBase
 
  707  using ItemType = _ItemType;
 
  708  using Accessor = _Accessor;
 
  710  using DataType = 
typename Accessor::ValueType;
 
  711  using DataTypeReturnType = 
typename Accessor::DataTypeReturnReference;
 
  716  : VariableViewBase(command, var)
 
  721  ARCCORE_HOST_DEVICE DataTypeReturnType 
operator[](IndexerType item)
 const 
  723    return DataTypeReturnType(this->m_values[item.asInt32()]);
 
 
  729    return this->m_values[item.asInt32()][i];
 
 
  735    return DataTypeReturnType(this->m_values[item.asInt32()]);
 
 
 
  748template <
typename _ItemType, 
typename _Accessor>
 
  749class ItemPartialVariableArrayOutViewT
 
  750: 
public VariableViewBase
 
  754  using ItemType = _ItemType;
 
  755  using Accessor = _Accessor;
 
  757  using DataType = 
typename Accessor::ValueType;
 
  758  using DataTypeReturnType = 
typename Accessor::DataTypeReturnReference;
 
  765  : VariableViewBase(command, var)
 
  767  , m_table_view(table_view)
 
  773  ARCCORE_HOST_DEVICE DataTypeReturnType 
operator[](IndexerType item)
 const 
  775    return DataTypeReturnType(m_values[item.asInt32()]);
 
 
  781    return m_values[item.asInt32()][i];
 
 
  787    return DataTypeReturnType(m_values[item.asInt32()]);
 
 
  793  ARCCORE_HOST_DEVICE DataTypeReturnType 
operator[](ItemLocalIdType lid)
 const 
  795    return DataTypeReturnType(m_values[_toIndex(lid)]);
 
 
  801    return m_values[_toIndex(lid)][i];
 
 
  807    return DataTypeReturnType(m_values[_toIndex(lid)]);
 
 
  812  ARCCORE_HOST_DEVICE 
Int32 _toIndex(ItemLocalIdType lid)
 const 
  814    return m_table_view[lid];
 
 
  844template <
typename _ItemType, 
typename _Accessor>
 
  846: 
public VariableViewBase
 
  850  using ItemType = _ItemType;
 
  851  using Accessor = _Accessor;
 
  853  using DataType = 
typename _Accessor::ValueType;
 
  854  using DataTypeReturnReference = DataType&;
 
  860  : VariableViewBase(command, var)
 
 
  890  ARCCORE_HOST_DEVICE Accessor 
operator[](IndexerType item)
 const 
  892    ARCANE_CHECK_AT(item.asInt32(), m_size);
 
  893    return Accessor(m_values + item.asInt32());
 
 
  897  ARCCORE_HOST_DEVICE Accessor 
operator()(IndexerType item)
 const 
  899    ARCANE_CHECK_AT(item.asInt32(), m_size);
 
  900    return Accessor(m_values + item.asInt32());
 
 
  904  ARCCORE_HOST_DEVICE Accessor 
value(IndexerType item)
 const 
  906    ARCANE_CHECK_AT(item.asInt32(), m_size);
 
  907    return Accessor(m_values + item.asInt32());
 
 
  911  ARCCORE_HOST_DEVICE 
void setValue(IndexerType item, 
const DataType& v)
 const 
  913    ARCANE_CHECK_AT(item.asInt32(), m_size);
 
  914    this->m_values[item.asInt32()] = v;
 
 
 
  926template <
typename _ItemType, 
typename _Accessor>
 
  928: 
public VariableViewBase
 
  932  using ItemType = _ItemType;
 
  933  using Accessor = _Accessor;
 
  935  using DataType = 
typename _Accessor::ValueType;
 
  936  using DataTypeReturnReference = DataType&;
 
  944  : VariableViewBase(command, var)
 
  947  , m_table_view(table_view)
 
 
  953  ARCCORE_HOST_DEVICE Accessor 
operator[](IndexerType item)
 const 
  955    ARCANE_CHECK_AT(item.asInt32(), m_size);
 
  956    return Accessor(this->m_values + item.asInt32());
 
 
  960  ARCCORE_HOST_DEVICE Accessor 
operator()(IndexerType item)
 const 
  962    ARCANE_CHECK_AT(item.asInt32(), m_size);
 
  963    return Accessor(this->m_values + item.asInt32());
 
 
  967  ARCCORE_HOST_DEVICE Accessor 
value(IndexerType item)
 const 
  969    ARCANE_CHECK_AT(item.asInt32(), m_size);
 
  970    return Accessor(this->m_values + item.asInt32());
 
 
  974  ARCCORE_HOST_DEVICE 
void setValue(IndexerType item, 
const DataType& v)
 const 
  976    ARCANE_CHECK_AT(item.asInt32(), m_size);
 
  977    this->m_values[item.asInt32()] = v;
 
 
  983  ARCCORE_HOST_DEVICE Accessor 
operator[](ItemLocalIdType lid)
 const 
  985    Int32 index = _toIndex(lid);
 
  986    ARCANE_CHECK_AT(index, m_size);
 
  987    return Accessor(m_values + index);
 
 
  991  ARCCORE_HOST_DEVICE Accessor 
operator()(ItemLocalIdType lid)
 const 
  993    Int32 index = _toIndex(lid);
 
  994    ARCANE_CHECK_AT(index, m_size);
 
  995    return Accessor(m_values + index);
 
 
  999  ARCCORE_HOST_DEVICE Accessor 
value(ItemLocalIdType lid)
 const 
 1001    Int32 index = _toIndex(lid);
 
 1002    ARCANE_CHECK_AT(index, m_size);
 
 1003    return Accessor(m_values + index);
 
 
 1007  ARCCORE_HOST_DEVICE 
void setValue(ItemLocalIdType lid, 
const DataType& v)
 const 
 1009    Int32 index = _toIndex(lid);
 
 1010    ARCANE_CHECK_AT(index, m_size);
 
 1011    m_values[index] = v;
 
 
 1016  ARCCORE_HOST_DEVICE 
Int32 _toIndex(ItemLocalIdType lid)
 const 
 1018    return m_table_view[lid];
 
 1023  DataType* m_values = 
nullptr;
 
 
 1036template <
typename DataType> 
auto 
 1039  using Accessor = DataViewSetter<DataType>;
 
 
 1046template <
typename ItemType, 
typename DataType> 
auto 
 1049  using Accessor = DataViewSetter<DataType>;
 
 
 1056template <
typename ItemType, 
typename DataType> 
auto 
 1059  using Accessor = DataViewSetter<DataType>;
 
 
 1067template <
typename ItemType> 
auto 
 1070  using Accessor = DataViewSetter<Real3>;
 
 
 1077template <
typename ItemType> 
auto 
 1080  using Accessor = DataViewSetter<Real3>;
 
 
 1088template <
typename ItemType> 
auto 
 1091  using Accessor = DataViewSetter<Real2>;
 
 
 1098template <
typename ItemType> 
auto 
 1101  using Accessor = DataViewSetter<Real2>;
 
 
 1109template <
typename ItemType, 
typename DataType> 
auto 
 1119template <
typename ItemType, 
typename DataType> 
auto 
 1132template <
typename DataType> 
auto 
 1135  using Accessor = DataViewGetterSetter<DataType>;
 
 
 1142template <
typename ItemType, 
typename DataType> 
auto 
 1145  using Accessor = DataViewGetterSetter<DataType>;
 
 
 1152template <
typename ItemType, 
typename DataType> 
auto 
 1155  using Accessor = DataViewGetterSetter<DataType>;
 
 
 1162template <
typename ItemType> 
auto 
 1165  using Accessor = DataViewGetterSetter<Real3>;
 
 
 1172template <
typename ItemType> 
auto 
 1175  using Accessor = DataViewGetterSetter<Real3>;
 
 
 1183template <
typename ItemType> 
auto 
 1186  using Accessor = DataViewGetterSetter<Real2>;
 
 
 1193template <
typename ItemType> 
auto 
 1196  using Accessor = DataViewGetterSetter<Real2>;
 
 
 1204template <
typename ItemType, 
typename DataType> 
auto 
 1214template <
typename ItemType, 
typename DataType> 
auto 
 1227template <
typename ItemType, 
typename DataType> 
auto 
 1236template <
typename ItemType, 
typename DataType> 
auto 
 1245template <
typename DataType> 
auto 
 1254template <
typename ItemType, 
typename DataType> 
auto 
 1263template <
typename ItemType, 
typename DataType> 
auto 
Déclarations de types sur les entités.
Vue en lecture sur une variable partielle tableau du maillage.
__host__ __device__ const DataType & operator()(IndexerType item, Int32 i) const
Opérateur d'accès pour la i-ème valeur de l'entité item.
__host__ __device__ const SmallSpan< const DataType > operator[](IndexerType i) const
Opérateur d'accès pour l'entité item.
__host__ __device__ const SmallSpan< const DataType > operator[](ItemLocalIdType lid) const
Opérateur d'accès pour l'entité item.
__host__ __device__ const SmallSpan< const DataType > value(ItemLocalIdType lid) const
Opérateur d'accès pour l'entité item.
__host__ __device__ const DataType & operator()(ItemLocalIdType lid, Int32 i) const
Opérateur d'accès pour la i-ème valeur de l'entité item.
__host__ __device__ const SmallSpan< const DataType > value(IndexerType i) const
Opérateur d'accès pour l'entité item.
Vue en écriture sur une variable partielle tableau du maillage.
__host__ __device__ DataTypeReturnType operator[](ItemLocalIdType lid) const
Opérateur d'accès pour l'entité de numéro local lid.
__host__ __device__ DataTypeReturnType operator[](IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ SmallSpan< DataType > value(IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ SmallSpan< DataType > value(ItemLocalIdType lid) const
Opérateur d'accès pour la i-ème valeur de l'entité item.
__host__ __device__ DataType & operator()(ItemLocalIdType lid, Int32 i) const
Opérateur d'accès pour l'entité de numéro local lid.
__host__ __device__ DataType & operator()(IndexerType item, Int32 i) const
Opérateur d'accès pour la i-ème valeur de l'entité item.
__host__ __device__ void setValue(IndexerType item, const DataType &v) const
Positionne la valeur pour l'entité item à v.
__host__ __device__ Accessor operator[](IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ void setValue(ItemLocalIdType lid, const DataType &v) const
Positionne la valeur pour l'entité item à v.
__host__ __device__ Accessor value(ItemLocalIdType lid) const
Opérateur d'accès pour l'entité item.
__host__ __device__ Accessor operator()(ItemLocalIdType lid) const
Opérateur d'accès pour l'entité item.
__host__ __device__ Accessor operator[](ItemLocalIdType lid) const
Opérateur d'accès pour l'entité item.
ItemPartialVariableRealNScalarOutViewT(const ViewBuildInfo &command, IVariable *var, SmallSpan< DataType > v, GroupIndexTableView table_view)
Construit la vue.
__host__ __device__ Accessor operator()(IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ Accessor value(IndexerType item) const
Opérateur d'accès pour l'entité item.
Vue en lecture sur une variable partielle scalaire du maillage.
__host__ __device__ const DataType & operator()(ItemLocalIdType lid) const
Opérateur d'accès pour l'entité item.
__host__ __device__ const DataType & operator[](IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ const DataType & value(IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ const DataType & value(ItemLocalIdType lid) const
Opérateur d'accès pour l'entité item.
__host__ __device__ const DataType & operator[](ItemLocalIdType lid) const
Opérateur d'accès pour l'entité item.
__host__ __device__ const DataType & operator()(IndexerType item) const
Opérateur d'accès pour l'entité item.
Vue en écriture sur une variable partielle scalaire du maillage.
__host__ __device__ Accessor operator[](IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ void setValue(ItemLocalIdType lid, const DataType &v) const
Positionne la valeur pour l'entité de numéro local lid à v.
__host__ __device__ Accessor operator()(IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ Accessor value(ItemLocalIdType lid) const
Opérateur d'accès pour l'entité de numéro local lid.
__host__ __device__ Accessor value(IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ void setValue(IndexerType item, const DataType &v) const
Positionne la valeur pour l'entité item à v.
__host__ __device__ Accessor operator()(ItemLocalIdType lid) const
Opérateur d'accès pour l'entité de numéro local lid.
__host__ __device__ Accessor operator[](ItemLocalIdType lid) const
Opérateur d'accès pour l'entité de numéro local lid.
Vue en lecture sur une variable tableau du maillage.
__host__ __device__ const SmallSpan< const DataType > operator[](IndexerType i) const
Opérateur d'accès pour l'entité item.
__host__ __device__ const SmallSpan< const DataType > value(IndexerType i) const
Opérateur d'accès pour l'entité item.
__host__ __device__ const DataType & operator()(IndexerType item, Int32 i) const
Opérateur d'accès pour la i-ème valeur de l'entité item.
__host__ __device__ DataTypeReturnType operator[](IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ SmallSpan< DataType > value(IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ DataType & operator()(IndexerType item, Int32 i) const
Opérateur d'accès pour la i-ème valeur de l'entité item.
Vue en écriture sur une variable tableau du maillage.
__host__ __device__ DataTypeReturnType operator[](IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ SmallSpan< DataType > value(IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ DataType & operator()(IndexerType item, Int32 i) const
Opérateur d'accès pour la i-ème valeur de l'entité item.
Vue en écriture sur une variable scalaire de type 'RealN' du maillage.
ItemVariableRealNScalarOutViewT(const ViewBuildInfo &command, IVariable *var, SmallSpan< DataType > v)
Construit la vue.
SimdDirectSetter< DataType > operator()(SimdItemDirectIndexT< ItemType > simd_item) const
Opérateur d'accès vectoriel sans indirection.
SimdDirectSetter< DataType > operator[](SimdItemDirectIndexT< ItemType > simd_item) const
Opérateur d'accès vectoriel sans indirection.
__host__ __device__ Accessor operator()(IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ Accessor value(IndexerType item) const
Opérateur d'accès pour l'entité item.
SimdSetter< DataType > operator()(SimdItemIndexT< ItemType > simd_item) const
Opérateur d'accès vectoriel avec indirection.
__host__ __device__ Accessor operator[](IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ void setValue(IndexerType item, const DataType &v) const
Positionne la valeur pour l'entité item à v.
SimdSetter< DataType > operator[](SimdItemIndexT< ItemType > simd_item) const
Opérateur d'accès vectoriel avec indirection.
Vue en lecture sur une variable scalaire du maillage.
SimdTypeTraits< DataType >::SimdType operator[](SimdItemIndexT< ItemType > simd_item) const
Opérateur d'accès vectoriel avec indirection.
__host__ __device__ const DataType & operator[](IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ const DataType & operator()(IndexerType item) const
Opérateur d'accès pour l'entité item.
SimdTypeTraits< DataType >::SimdType operator[](SimdItemDirectIndexT< ItemType > simd_item) const
Opérateur d'accès vectoriel avec indirection.
__host__ __device__ const DataType & value(IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ void setValue(IndexerType item, const DataType &v) const
Positionne la valeur pour l'entité item à v.
__host__ __device__ Accessor value(IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ Accessor operator()(IndexerType item) const
Opérateur d'accès pour l'entité item.
SimdSetter< DataType > operator[](SimdItemIndexT< ItemType > simd_item) const
Opérateur d'accès vectoriel avec indirection.
SimdDirectSetter< DataType > operator[](SimdItemDirectIndexT< ItemType > simd_item) const
Opérateur d'accès vectoriel sans indirection.
__host__ __device__ Accessor operator[](IndexerType item) const
Opérateur d'accès pour l'entité item.
Vue en écriture sur une variable scalaire du maillage.
__host__ __device__ Accessor value(IndexerType item) const
Opérateur d'accès pour l'entité item.
SimdSetter< DataType > operator[](SimdItemIndexT< ItemType > simd_item) const
Opérateur d'accès vectoriel avec indirection.
__host__ __device__ void setValue(IndexerType item, const DataType &v) const
Positionne la valeur pour l'entité item à v.
__host__ __device__ Accessor operator()(IndexerType item) const
Opérateur d'accès pour l'entité item.
__host__ __device__ Accessor operator[](IndexerType item) const
Opérateur d'accès pour l'entité item.
SimdDirectSetter< DataType > operator[](SimdItemDirectIndexT< ItemType > simd_item) const
Opérateur d'accès vectoriel sans indirection.
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.
Interface d'une variable.
typename ItemTraitsT< ItemType >::LocalIdType LocalIdType
Type du localId()
GroupIndexTableView tableView() const
Vue sur table d'indirection du groupe.
GroupIndexTableView tableView() const
Vue sur table d'indirection du groupe.
Vue en écriture sur une variable scalaire de type 'RealN' du maillage.
Vue en lecture sur une variable scalaire du maillage.
Vue en écriture sur une variable scalaire du maillage.
Variable scalaire sur un type d'entité du maillage.
Variable scalaire sur un type d'entité du maillage.
Variable scalaire sur un type d'entité du maillage.
Variable tableau sur un type d'entité du maillage.
Variable scalaire sur un type d'entité du maillage.
Objet permettant de positionner les valeurs d'un vecteur SIMD.
Index vectoriel sans indirection pour un type d'entité
Index vectoriel avec indirection pour un type d'entité. TODO: stocker les index dans un registre vect...
const SimdIndexType &ARCANE_RESTRICT simdLocalIds() const
Liste des numéros locaux des entités de l'instance.
Vue pour un tableau 2D dont la taille est un 'Int32'.
Vue d'un tableau d'éléments de type T.
constexpr __host__ __device__ pointer data() const noexcept
Pointeur sur le début de la vue.
constexpr __host__ __device__ SizeType size() const noexcept
Retourne la taille du tableau.
Vue d'un tableau d'éléments de type T.
IVariable * variable() const
Variable associée.
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.
std::int32_t Int32
Type entier signé sur 32 bits.