12#ifndef ARCANE_VARIABLEVIEW_H
13#define ARCANE_VARIABLEVIEW_H
20#include "arcane/core/ItemLocalId.h"
46template<
typename DataType>
48template<
typename DataType>
69template<
typename DataType>
73 using ValueType = DataType;
82template<
typename DataType>
86 using ValueType = DataType;
87 using DataTypeReturnReference = View1DSetter<DataType>;
102template<
typename ItemType,
typename Accessor>
103class ItemVariableScalarOutViewT
104:
public VariableViewBase
108 using DataType =
typename Accessor::ValueType;
109 using DataTypeReturnReference = DataType&;
115 : VariableViewBase(var), m_values(v.
data()),
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>
162class ItemVariableScalarInViewT
163:
public VariableViewBase
172 : VariableViewBase(var), m_values(v){}
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>
212class ItemVariableArrayInViewT
213:
public VariableViewBase
222 : VariableViewBase(var), m_values(v){}
227 return this->m_values[i.localId()];
233 return this->m_values[i.localId()];
245template<
typename ItemType,
typename Accessor>
246class ItemVariableArrayOutViewT
247:
public VariableViewBase
251 using DataType =
typename Accessor::ValueType;
252 using DataTypeReturnType =
typename Accessor::DataTypeReturnReference;
258 : VariableViewBase(var), m_values(v){}
263 return DataTypeReturnType(this->m_values[i.localId()]);
269 return DataTypeReturnType(this->m_values[i.localId()]);
297template<
typename ItemType,
typename Accessor>
299:
public VariableViewBase
303 using DataType =
typename Accessor::ValueType;
304 using DataTypeReturnReference = DataType&;
311 : VariableViewBase(var), m_values(v.data()), m_size(v.size()){}
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.
Vue en lecture sur une variable tableau du maillage.
Vue en écriture sur une variable tableau du maillage.
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.
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.
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.
Interface d'une variable.
Caractéristiques des éléments 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.
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.
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.
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.
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.
Objet permettant de positionner les valeurs d'un vecteur SIMD.
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.
Vue d'un tableau d'éléments de type T.
IVariable * variable() const
Variable associée.
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.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
std::int64_t Int64
Type entier signé sur 64 bits.