12#ifndef ARCANE_VARIABLEVIEW_H
13#define ARCANE_VARIABLEVIEW_H
20#include "arcane/core/ItemLocalId.h"
46template<
typename DataType>
47using ViewSetter ARCANE_DEPRECATED_REASON(
"Use 'DataViewSetter' type instead") = DataViewSetter<DataType>;
48template<
typename DataType>
49using ViewGetterSetter ARCANE_DEPRECATED_REASON(
"Use 'DataViewGetterSetter' type instead") = DataViewGetterSetter<DataType>;
69template<
typename DataType>
73 using ValueType = DataType;
82template<
typename DataType>
86 using ValueType = DataType;
102template<
typename ItemType,
typename Accessor>
108 using DataType =
typename Accessor::ValueType;
109 using DataTypeReturnReference = DataType&;
133 ARCANE_CHECK_AT(i.localId(),m_size);
134 return Accessor(this->m_values + i.localId());
138 Accessor
value(ItemIndexType i)
const
140 ARCANE_CHECK_AT(i.localId(),m_size);
141 return Accessor(this->m_values + i.localId());
145 void setValue(ItemIndexType i,
const DataType& v)
const
147 ARCANE_CHECK_AT(i.localId(),m_size);
148 this->m_values[i.localId()] = v;
161template<
typename ItemType,
typename DataType>
175 typename SimdTypeTraits<DataType>::SimdType
178 typedef typename SimdTypeTraits<DataType>::SimdType SimdType;
183 typename SimdTypeTraits<DataType>::SimdType
186 typedef typename SimdTypeTraits<DataType>::SimdType SimdType;
187 return SimdType(m_values.
data()+simd_item.baseLocalId());
193 return this->m_values[i.localId()];
197 const DataType&
value(ItemIndexType i)
const
199 return this->m_values[i.localId()];
211template<
typename ItemType,
typename DataType>
227 return this->m_values[i.localId()];
233 return this->m_values[i.localId()];
245template<
typename ItemType,
typename Accessor>
251 using DataType =
typename Accessor::ValueType;
252 using DataTypeReturnType =
typename Accessor::DataTypeReturnReference;
263 return DataTypeReturnType(this->m_values[i.localId()]);
269 return DataTypeReturnType(this->m_values[i.localId()]);
297template<
typename ItemType,
typename Accessor>
303 using DataType =
typename Accessor::ValueType;
304 using DataTypeReturnReference = DataType&;
328 ARCANE_CHECK_AT(item.localId(),m_size);
329 return Accessor(this->m_values+item.localId());
333 Accessor
value(ItemIndexType item)
const
335 ARCANE_CHECK_AT(item.localId(),m_size);
336 return Accessor(this->m_values+item.localId());
340 void setValue(ItemIndexType item,
const DataType& v)
const
342 ARCANE_CHECK_AT(item.localId(),m_size);
343 this->m_values[item.localId()] = v;
356template<
typename ItemType,
typename DataType>
auto
366template<
typename ItemType>
auto
376template<
typename ItemType>
auto
386template<
typename ItemType,
typename DataType>
auto
398template<
typename ItemType,
typename DataType>
auto
408template<
typename ItemType>
auto
418template<
typename ItemType>
auto
428template<
typename ItemType,
typename DataType>
auto
440template<
typename ItemType,
typename DataType>
auto
449template<
typename ItemType,
typename DataType>
auto
458typedef ItemVariableScalarInViewT<Node,Byte> VariableNodeByteInView;
459typedef ItemVariableScalarInViewT<Edge,Byte> VariableEdgeByteInView;
460typedef ItemVariableScalarInViewT<Face,Byte> VariableFaceByteInView;
461typedef ItemVariableScalarInViewT<Cell,Byte> VariableCellByteInView;
462typedef ItemVariableScalarInViewT<Particle,Byte> VariableParticleByteInView;
464typedef ItemVariableScalarInViewT<Node,Int16> VariableNodeInt16InView;
465typedef ItemVariableScalarInViewT<Edge,Int16> VariableEdgeInt16InView;
466typedef ItemVariableScalarInViewT<Face,Int16> VariableFaceInt16InView;
467typedef ItemVariableScalarInViewT<Cell,Int16> VariableCellInt16InView;
468typedef ItemVariableScalarInViewT<Particle,Int16> VariableParticleInt16InView;
470typedef ItemVariableScalarInViewT<Node,Int32> VariableNodeInt32InView;
471typedef ItemVariableScalarInViewT<Edge,Int32> VariableEdgeInt32InView;
472typedef ItemVariableScalarInViewT<Face,Int32> VariableFaceInt32InView;
473typedef ItemVariableScalarInViewT<Cell,Int32> VariableCellInt32InView;
474typedef ItemVariableScalarInViewT<Particle,Int32> VariableParticleInt32InView;
476typedef ItemVariableScalarInViewT<Node,Int64> VariableNodeInt64InView;
477typedef ItemVariableScalarInViewT<Edge,Int64> VariableEdgeInt64InView;
478typedef ItemVariableScalarInViewT<Face,Int64> VariableFaceInt64InView;
479typedef ItemVariableScalarInViewT<Cell,Int64> VariableCellInt64InView;
480typedef ItemVariableScalarInViewT<Particle,Int64> VariableParticleInt64InView;
482typedef ItemVariableScalarInViewT<Node,Real> VariableNodeRealInView;
483typedef ItemVariableScalarInViewT<Edge,Real> VariableEdgeRealInView;
484typedef ItemVariableScalarInViewT<Face,Real> VariableFaceRealInView;
485typedef ItemVariableScalarInViewT<Cell,Real> VariableCellRealInView;
486typedef ItemVariableScalarInViewT<Particle,Real> VariableParticleRealInView;
488typedef ItemVariableScalarInViewT<Node,Real2> VariableNodeReal2InView;
489typedef ItemVariableScalarInViewT<Edge,Real2> VariableEdgeReal2InView;
490typedef ItemVariableScalarInViewT<Face,Real2> VariableFaceReal2InView;
491typedef ItemVariableScalarInViewT<Cell,Real2> VariableCellReal2InView;
492typedef ItemVariableScalarInViewT<Particle,Real2> VariableParticleReal2InView;
494typedef ItemVariableScalarInViewT<Node,Real3> VariableNodeReal3InView;
495typedef ItemVariableScalarInViewT<Edge,Real3> VariableEdgeReal3InView;
496typedef ItemVariableScalarInViewT<Face,Real3> VariableFaceReal3InView;
497typedef ItemVariableScalarInViewT<Cell,Real3> VariableCellReal3InView;
498typedef ItemVariableScalarInViewT<Particle,Real3> VariableParticleReal3InView;
503typedef ItemVariableScalarOutViewT<Node,DataViewSetter<Byte>> VariableNodeByteOutView;
504typedef ItemVariableScalarOutViewT<Edge,DataViewSetter<Byte>> VariableEdgeByteOutView;
505typedef ItemVariableScalarOutViewT<Face,DataViewSetter<Byte>> VariableFaceByteOutView;
506typedef ItemVariableScalarOutViewT<Cell,DataViewSetter<Byte>> VariableCellByteOutView;
507typedef ItemVariableScalarOutViewT<Particle,DataViewSetter<Byte>> VariableParticleByteOutView;
509typedef ItemVariableScalarOutViewT<Node,DataViewSetter<Int16>> VariableNodeInt16OutView;
510typedef ItemVariableScalarOutViewT<Edge,DataViewSetter<Int16>> VariableEdgeInt16OutView;
511typedef ItemVariableScalarOutViewT<Face,DataViewSetter<Int16>> VariableFaceInt16OutView;
512typedef ItemVariableScalarOutViewT<Cell,DataViewSetter<Int16>> VariableCellInt16OutView;
513typedef ItemVariableScalarOutViewT<Particle,DataViewSetter<Int16>> VariableParticleInt16OutView;
515typedef ItemVariableScalarOutViewT<Node,DataViewSetter<Int32>> VariableNodeInt32OutView;
516typedef ItemVariableScalarOutViewT<Edge,DataViewSetter<Int32>> VariableEdgeInt32OutView;
517typedef ItemVariableScalarOutViewT<Face,DataViewSetter<Int32>> VariableFaceInt32OutView;
518typedef ItemVariableScalarOutViewT<Cell,DataViewSetter<Int32>> VariableCellInt32OutView;
519typedef ItemVariableScalarOutViewT<Particle,DataViewSetter<Int32>> VariableParticleInt32OutView;
521typedef ItemVariableScalarOutViewT<Node,DataViewSetter<Int64>> VariableNodeInt64OutView;
522typedef ItemVariableScalarOutViewT<Edge,DataViewSetter<Int64>> VariableEdgeInt64OutView;
523typedef ItemVariableScalarOutViewT<Face,DataViewSetter<Int64>> VariableFaceInt64OutView;
524typedef ItemVariableScalarOutViewT<Cell,DataViewSetter<Int64>> VariableCellInt64OutView;
525typedef ItemVariableScalarOutViewT<Particle,DataViewSetter<Int64>> VariableParticleInt64OutView;
527typedef ItemVariableScalarOutViewT<Node,DataViewSetter<Real>> VariableNodeRealOutView;
528typedef ItemVariableScalarOutViewT<Edge,DataViewSetter<Real>> VariableEdgeRealOutView;
529typedef ItemVariableScalarOutViewT<Face,DataViewSetter<Real>> VariableFaceRealOutView;
530typedef ItemVariableScalarOutViewT<Cell,DataViewSetter<Real>> VariableCellRealOutView;
531typedef ItemVariableScalarOutViewT<Particle,DataViewSetter<Real>> VariableParticleRealOutView;
533typedef ItemVariableRealNScalarOutViewT<Node,DataViewSetter<Real2>> VariableNodeReal2OutView;
534typedef ItemVariableRealNScalarOutViewT<Edge,DataViewSetter<Real2>> VariableEdgeReal2OutView;
535typedef ItemVariableRealNScalarOutViewT<Face,DataViewSetter<Real2>> VariableFaceReal2OutView;
536typedef ItemVariableRealNScalarOutViewT<Cell,DataViewSetter<Real2>> VariableCellReal2OutView;
537typedef ItemVariableRealNScalarOutViewT<Particle,DataViewSetter<Real2>> VariableParticleReal2OutView;
539typedef ItemVariableRealNScalarOutViewT<Node,DataViewSetter<Real3>> VariableNodeReal3OutView;
540typedef ItemVariableRealNScalarOutViewT<Edge,DataViewSetter<Real3>> VariableEdgeReal3OutView;
541typedef ItemVariableRealNScalarOutViewT<Face,DataViewSetter<Real3>> VariableFaceReal3OutView;
542typedef ItemVariableRealNScalarOutViewT<Cell,DataViewSetter<Real3>> VariableCellReal3OutView;
543typedef ItemVariableRealNScalarOutViewT<Particle,DataViewSetter<Real3>> VariableParticleReal3OutView;
Déclarations de types sur les entités.
Classe pour accéder à un élément d'une vue en lecture/écriture.
Classe pour accéder à un élément d'une vue en écriture.
Vue en lecture sur une variable tableau du maillage.
Span< const DataType > value(ItemIndexType i) const
Opérateur d'accès pour l'entité item.
Span< const DataType > operator[](ItemIndexType i) const
Opérateur d'accès pour l'entité item.
Vue en écriture sur une variable tableau du maillage.
Span< DataType > value(ItemIndexType i) const
Opérateur d'accès pour l'entité item.
DataTypeReturnType operator[](ItemIndexType i) const
Opérateur d'accès pour l'entité item.
Vue en écriture sur une variable scalaire de type 'RealN' du maillage.
ItemVariableRealNScalarOutViewT(IVariable *var, Span< DataType > v)
Construit la vue.
void setValue(ItemIndexType 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.
Accessor operator[](ItemIndexType 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.
Accessor value(ItemIndexType item) const
Opérateur d'accès pour l'entité item.
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.
const DataType & value(ItemIndexType i) const
Opérateur d'accès pour l'entité item.
const DataType & operator[](ItemIndexType i) 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.
Vue en écriture sur une variable scalaire du maillage.
void setValue(ItemIndexType i, const DataType &v) const
Positionne la valeur pour l'entité item à v.
SimdDirectSetter< DataType > operator[](SimdItemDirectIndexT< ItemType > simd_item) const
Opérateur d'accès vectoriel sans indirection.
Accessor operator[](ItemIndexType i) const
Opérateur d'accès pour l'entité item.
Accessor value(ItemIndexType i) 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.
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.
IVariable * variable() const
Variable associée.
Classe de base des vues sur les variables.
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.
Vue pour un tableau 2D dont la taille est un 'Int64'.
constexpr __host__ __device__ SizeType size() const noexcept
Retourne la taille du tableau.
constexpr __host__ __device__ pointer data() const noexcept
Pointeur sur le début de la vue.
constexpr __host__ __device__ pointer ptrAt(SizeType index) const
Addresse du index-ème élément.
Vue d'un tableau d'éléments de type T.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
auto viewOut(MeshVariableScalarRefT< ItemType, DataType > &var)
Vue en écriture.
auto viewIn(const MeshVariableScalarRefT< ItemType, DataType > &var)
Vue en lecture.
auto viewInOut(MeshVariableScalarRefT< ItemType, DataType > &var)
Vue en lecture/écriture.