12#ifndef ARCANE_CORE_MESHVARIABLESCALARREF_H
13#define ARCANE_CORE_MESHVARIABLESCALARREF_H
17#include "arcane/utils/FatalErrorException.h"
19#include "arcane/core/MeshVariableRef.h"
20#include "arcane/core/PrivateVariableScalar.h"
22#include "arcane/core/ItemGroupRangeIterator.h"
23#include "arcane/core/ItemPairEnumerator.h"
34template<
typename DataTypeT>
45 static void _notSupported()
46 {
ARCANE_FATAL(
"ItemNumeraticOperation: operation not supported"); }
61 static ARCANE_CORE_EXPORT
void mult (
VarType& out,Real v,
const ItemGroup& group);
62 static ARCANE_CORE_EXPORT
void power(
VarType& out,Real v,
const ItemGroup& group);
71template<
typename DataTypeT>
116 add(v,this->itemGroup());
118 void sub(
const ItemVariableScalarRefT<DataTypeT>& v)
120 sub(v,this->itemGroup());
122 void mult(
const ItemVariableScalarRefT<DataTypeT>& v)
124 mult(v,this->itemGroup());
126 void mult(
const DataTypeT& v)
128 mult(v,this->itemGroup());
130 void copy(
const ItemVariableScalarRefT<DataTypeT>& v)
132 copy(v,this->itemGroup());
134 void power(
const DataTypeT& v)
136 power(v,this->itemGroup());
139 void add(
const ItemVariableScalarRefT<DataTypeT>& v,
const ItemGroup& group)
141 ItemNumericOperation<DataTypeT>::add(*
this,v,group);
143 void sub(
const ItemVariableScalarRefT<DataTypeT>& v,
const ItemGroup& group)
145 ItemNumericOperation<DataTypeT>::sub(*
this,v,group);
147 void mult(
const ItemVariableScalarRefT<DataTypeT>& v,
const ItemGroup& group)
149 ItemNumericOperation<DataTypeT>::mult(*
this,v,group);
151 void mult(
const DataTypeT& v,
const ItemGroup& group)
153 ItemNumericOperation<DataTypeT>::mult(*
this,v,group);
155 void power(
const DataTypeT& v,
const ItemGroup& group)
157 ItemNumericOperation<DataTypeT>::power(*
this,v,group);
161 ARCANE_CORE_EXPORT
void copy(
const ItemVariableScalarRefT<DataTypeT>& v,
const ItemGroup& group);
162 ARCANE_CORE_EXPORT
void fill(
const DataTypeT& value);
163 ARCANE_CORE_EXPORT
void fill(
const DataTypeT& value,
const ItemGroup& group);
170 ARCANE_CORE_EXPORT
void copy(
const ItemVariableScalarRefT<DataTypeT>& v,RunQueue* queue);
176 ARCANE_CORE_EXPORT
void fill(
const DataTypeT& value,RunQueue* queue);
204template<
typename ItemTypeT,
typename DataTypeT>
218 typedef typename ItemType::Index ItemIndexType;
219 typedef typename ItemType::LocalIdType ItemLocalIdType;
224 typedef typename BaseClass::DataTypeReturnReference DataTypeReturnReference;
248 ThatClass& _Internal() {
return *
this; }
252 void fill(
const DataTypeT& value) { BaseClass::fill(value); }
253 void fill(
const DataTypeT& value,RunQueue* queue) { BaseClass::fill(value,queue); }
254 void fill(
const DataTypeT& value,
const GroupType& group) { BaseClass::fill(value,group); }
256 ARCANE_CORE_EXPORT
void swapValues(MeshVariableScalarRefT<ItemType,DataType>& rhs);
259 ARCANE_CORE_EXPORT GroupType
itemGroup()
const;
261 ARCANE_CORE_EXPORT
void setIsSynchronized();
262 ARCANE_CORE_EXPORT
void setIsSynchronized(
const GroupType& group);
270 DataTypeReturnReference
operator[](ItemLocalIdType i) {
return this->_value(i.localId()); }
276 DataTypeReturnReference
operator()(ItemLocalIdType i) {
return this->_value(i.localId()); }
281 return this->_value(item.localId());
284 const DataTypeT& item(ItemLocalIdType i)
const
286 return this->_value(i.localId());
288 void setItem(ItemLocalIdType i,
const DataTypeT& v)
290 this->_value(i.localId()) = v;
292#ifdef ARCANE_DOTNET_WRAPPER
293 const DataTypeT& item(
Int32 i)
const
295 return this->_value(i);
297 void setItem(
Int32 i,
const DataTypeT& v)
305 static ARCANE_CORE_EXPORT VariableTypeInfo _internalVariableTypeInfo();
306 static ARCANE_CORE_EXPORT VariableInfo _internalVariableInfo(
const VariableBuildInfo& vbi);
310 static VariableFactoryRegisterer m_auto_registerer;
311 static VariableRef* _autoCreate(
const VariableBuildInfo& vb);
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Interface d'une variable.
Groupe d'entités de maillage.
Index d'un Item dans une variable.
Caractéristiques des éléments du maillage.
void operator=(const ItemVariableScalarRefT< DataTypeT > &rhs)
Positionne la référence de l'instance à la variable rhs.
ItemVariableScalarRefT()
Constructeur vide.
const DataType & operator[](ItemLocalId item) const
Valeur non modifiable de l'entité item.
DataTypeReturnReference operator[](ItemLocalId item)
Valeur modifiable de l'entité item.
DataTypeReturnReference operator()(ItemLocalId item)
Valeur modifiable de l'entité item.
const DataType & operator()(ItemLocalId item) const
Valeur non modifiable de l'entité item.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Variable scalaire sur un type d'entité du maillage.
DataTypeReturnReference operator[](ItemLocalIdType i)
Valeur modifiable de l'entité item.
MeshVariableScalarRefT()
Constructeur vide.
GroupType itemGroup() const
Groupe associé à la grandeur.
DataTypeReturnReference operator()(ItemLocalIdType i)
Valeur modifiable de l'entité item.
DataTypeT & getReference(ItemLocalIdType item)
Valeur modifiable de l'entité item.
void refersTo(const MeshVariableScalarRefT< ItemType, DataTypeT > &rhs)
Positionne la référence de l'instance à la variable rhs.
void swapValues(MeshVariableScalarRefT< ItemType, DataType > &rhs)
Échange les valeurs de la variable rhs avec celles de l'instance.
const DataTypeT & operator[](ItemLocalIdType i) const
Valeur non modifiable de l'entité item.
const DataTypeT & operator()(ItemLocalIdType i) const
Valeur non modifiable de l'entité item.
Classe de factorisation des variables scalaires sur des entités du maillage.
Paramètres nécessaires à la construction d'une variable.
Infos caractérisant une variable.
VariableRef(const VariableBuildInfo &vbi)
Construit une référence sur une variable avec les infos vbi.
Informations caractérisant le type d'une variable.
Vue modifiable d'un tableau d'un type T.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eItemKind
Genre d'entité de maillage.