Arcane  v3.16.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
MeshVariableArrayRef.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2024 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* MeshVariableArrayRef.h (C) 2000-2024 */
9/* */
10/* Classe gérant une variable vectorielle sur une entité du maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_MESHVARIABLEARRAYREF_H
13#define ARCANE_CORE_MESHVARIABLEARRAYREF_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/core/PrivateVariableArray.h"
19#include "arcane/core/ItemGroupRangeIterator.h"
20#include "arcane/core/ItemPairEnumerator.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
33template<class DataTypeT>
35: public PrivateVariableArrayT<DataTypeT>
36{
37 public:
38
39 typedef DataTypeT DataType;
40 typedef UniqueArray2<DataType> ValueType;
41 typedef ConstArrayView<DataType> ConstReturnReferenceType;
42 typedef ArrayView<DataType> ReturnReferenceType;
43
44 protected:
45
46 typedef PrivateVariableArrayT<DataType> BaseClass;
47 typedef typename BaseClass::PrivatePartType PrivatePartType;
48
49 typedef ArrayView<DataType> ArrayType;
50 typedef ConstArrayView<DataType> ConstArrayType;
51
52 public:
53
55 ARCANE_CORE_EXPORT ItemVariableArrayRefT(const VariableBuildInfo& b,eItemKind ik);
56
58 explicit ARCANE_CORE_EXPORT ItemVariableArrayRefT(IVariable* var);
59
61 ARCANE_CORE_EXPORT ItemVariableArrayRefT(const ItemVariableArrayRefT<DataType>& rhs);
62
63 protected:
64
67
68 public:
69
71 ConstArrayType operator[](ItemLocalId item) const { return this->m_view[item.localId()]; }
72
74 ArrayType operator[](ItemLocalId item) { return this->m_view[item.localId()]; }
75
77 const DataType operator()(ItemLocalId item,Int32 i) const { return this->m_view.item(item.localId(),i); }
78
80 DataType& operator()(ItemLocalId item,Int32 i) { return this->m_view[item.localId()][i]; }
81
82 public:
83
85 ARCANE_CORE_EXPORT void copy(const ItemVariableArrayRefT<DataType>& v);
87 ARCANE_CORE_EXPORT void copy(const ItemVariableArrayRefT<DataType>& v,const ItemGroup& group);
93 ARCANE_CORE_EXPORT void copy(const ItemVariableArrayRefT<DataType>& v,RunQueue* queue);
95 ARCANE_CORE_EXPORT void fill(const DataType& value);
97 ARCANE_CORE_EXPORT void fill(const DataType& value,const ItemGroup& group);
99 ARCANE_CORE_EXPORT void fill(const DataType& value,RunQueue* queue);
100
101 public:
102
103 static ARCANE_CORE_EXPORT VariableInfo _internalVariableInfo(const VariableBuildInfo& vbi,eItemKind ik);
104 static ARCANE_CORE_EXPORT VariableTypeInfo _internalVariableTypeInfo(eItemKind ik);
105};
106
107/*---------------------------------------------------------------------------*/
108/*---------------------------------------------------------------------------*/
113template<class ItemTypeT,class DataTypeT>
115: public ItemVariableArrayRefT<DataTypeT>
116{
117 public:
118
119 typedef DataTypeT DataType;
120 typedef ItemTypeT ItemType;
121 typedef UniqueArray2<DataType> ValueType;
122 typedef ConstArrayView<DataType> ConstReturnReferenceType;
123 typedef ArrayView<DataType> ReturnReferenceType;
124
125 protected:
126
127 typedef MeshVariableRef BaseClass;
128
129 typedef Array2View<DataType> ArrayBase;
130
131 typedef ArrayView<DataType> ArrayType;
132 typedef ConstArrayView<DataType> ConstArrayType;
133
134 typedef Array2VariableT<DataType> PrivatePartType;
135
136 typedef typename ItemTraitsT<ItemType>::ItemGroupType GroupType;
137 typedef typename ItemTypeT::LocalIdType ItemLocalIdType;
138
140
141 public:
142
144 ARCANE_CORE_EXPORT MeshVariableArrayRefT(const VariableBuildInfo& b);
146 explicit ARCANE_CORE_EXPORT MeshVariableArrayRefT(IVariable* var);
150 ARCANE_CORE_EXPORT void refersTo(const MeshVariableArrayRefT<ItemType,DataType>& rhs);
151
152 ThatClass& operator=(const ThatClass& rhs) = delete; // Interdit.
153
154 public:
155
157 ConstArrayType operator[](ItemLocalIdType item) const { return this->m_view[item.localId()]; }
158
160 ArrayType operator[](ItemLocalIdType item) { return this->m_view[item.localId()]; }
161
163 const DataType operator()(ItemLocalIdType item,Int32 i) const { return this->m_view[item.localId()][i]; }
164
166 DataType& operator()(ItemLocalIdType item,Int32 i) { return this->m_view[item.localId()][i]; }
167
168 public:
169
171 ARCANE_CORE_EXPORT GroupType itemGroup() const;
173
174 public:
175
176 static ARCANE_CORE_EXPORT VariableTypeInfo _internalVariableTypeInfo();
177 static ARCANE_CORE_EXPORT VariableInfo _internalVariableInfo(const VariableBuildInfo& vbi);
178
179 private:
180
181 static VariableFactoryRegisterer m_auto_registerer;
182 static VariableRef* _autoCreate(const VariableBuildInfo& vb);
183};
184
185/*---------------------------------------------------------------------------*/
186/*---------------------------------------------------------------------------*/
187
188} // End namespace Arcane
189
190/*---------------------------------------------------------------------------*/
191/*---------------------------------------------------------------------------*/
192
193#endif
Types et macros pour itérer sur les entités du maillage.
File d'exécution pour un accélérateur.
Variable sur un tableau 2D.
Vue modifiable pour un tableau 2D.
Vue modifiable d'un tableau d'un type T.
Vue constante d'un tableau de type T.
Interface d'une variable.
Definition IVariable.h:56
Groupe d'entités de maillage.
Definition ItemGroup.h:49
Index d'un Item dans une variable.
Definition ItemLocalId.h:41
Caractéristiques des éléments du maillage.
Definition ItemTypes.h:621
Variable tableau sur un type d'entité du maillage.
void copy(const ItemVariableArrayRefT< DataType > &v)
Copie les valeurs de v dans cette variable.
ArrayType operator[](ItemLocalId item)
Valeur modifiable de l'entité item.
ItemVariableArrayRefT(const VariableBuildInfo &b, eItemKind ik)
Construit une référence à la variable spécifiée dans vb.
DataType & operator()(ItemLocalId item, Int32 i)
Valeur modifiable de la i-éme valeur de l'entité item.
ConstArrayType operator[](ItemLocalId item) const
Valeur non modifiable de l'entité item.
ItemVariableArrayRefT< DataType > & operator=(const ItemVariableArrayRefT< DataType > &rhs)
Positionne la référence de l'instance à la variable rhs.
const DataType operator()(ItemLocalId item, Int32 i) const
Valeur non modifiable de la i-éme valeur de l'entité item.
void fill(const DataType &value)
Remplit la variable avec la valeur value.
MeshVariableArrayRefT(const MeshVariableArrayRefT< ItemType, DataType > &rhs)
Construit une référence à partir de rhs.
GroupType itemGroup() const
Groupe associé à la grandeur.
const DataType operator()(ItemLocalIdType item, Int32 i) const
Valeur non modifiable de la i-éme valeur de l'entité item.
MeshVariableArrayRefT(IVariable *var)
Construit une référence à partir de var.
void swapValues(MeshVariableArrayRefT< ItemType, DataType > &rhs)
Échange les valeurs de la variable rhs avec celles de l'instance.
ArrayType operator[](ItemLocalIdType item)
Valeur modifiable de l'entité item.
DataType & operator()(ItemLocalIdType item, Int32 i)
Valeur modifiable de la i-éme valeur de l'entité item.
ConstArrayType operator[](ItemLocalIdType item) const
Valeur non modifiable de l'entité item.
void refersTo(const MeshVariableArrayRefT< ItemType, DataType > &rhs)
Positionne la référence de l'instance à la variable rhs.
MeshVariableArrayRefT(const VariableBuildInfo &b)
Construit une référence à la variable spécifiée dans vb.
Classe de base d'une variable sur des entités du maillage.
Vecteur de données 2D avec sémantique par valeur (style STL).
Paramètres nécessaires à la construction d'une variable.
Enregistreur d'une fabrique de variables.
Infos caractérisant une variable.
Référence à une variable.
Definition VariableRef.h:56
Informations caractérisant le type d'une variable.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eItemKind
Genre d'entité de maillage.
std::int32_t Int32
Type entier signé sur 32 bits.