Arcane  v3.14.10.0
Documentation utilisateur
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/*---------------------------------------------------------------------------*/
30/*!
31 * \brief Variable tableau sur un type d'entité du maillage.
32 */
33template<class DataTypeT>
35: public PrivateVariableArrayT<DataTypeT>
36{
37 public:
38
39 typedef DataTypeT DataType;
40 typedef UniqueArray2<DataType> ValueType;
43
44 protected:
45
46 typedef PrivateVariableArrayT<DataType> BaseClass;
47 typedef typename BaseClass::PrivatePartType PrivatePartType;
48
51
52 public:
53
54 //! Construit une référence à la variable spécifiée dans \a vb
55 ARCANE_CORE_EXPORT ItemVariableArrayRefT(const VariableBuildInfo& b,eItemKind ik);
56
57 //! Construit une référence à partir de \a var
58 explicit ARCANE_CORE_EXPORT ItemVariableArrayRefT(IVariable* var);
59
60 //! Construit une référence à partir de \a rhs
61 ARCANE_CORE_EXPORT ItemVariableArrayRefT(const ItemVariableArrayRefT<DataType>& rhs);
62
63 protected:
64
65 //! Positionne la référence de l'instance à la variable \a rhs.
67
68 public:
69
70 //! Valeur non modifiable de l'entité \a item
71 ConstArrayType operator[](ItemLocalId item) const { return this->m_view[item.localId()]; }
72
73 //! Valeur modifiable de l'entité \a item
74 ArrayType operator[](ItemLocalId item) { return this->m_view[item.localId()]; }
75
76 //! Valeur non modifiable de la \a i-éme valeur de l'entité \a item
77 const DataType operator()(ItemLocalId item,Int32 i) const { return this->m_view.item(item.localId(),i); }
78
79 //! Valeur modifiable de la \a i-éme valeur de l'entité \a item
80 DataType& operator()(ItemLocalId item,Int32 i) { return this->m_view[item.localId()][i]; }
81
82 public:
83
84 //! Copie les valeurs de \a v dans cette variable
85 ARCANE_CORE_EXPORT void copy(const ItemVariableArrayRefT<DataType>& v);
86 //! Copie les valeurs de \a v pour le groupe \a group dans cette variable
87 ARCANE_CORE_EXPORT void copy(const ItemVariableArrayRefT<DataType>& v,const ItemGroup& group);
88 /*!
89 * \brief Copie les valeurs de \a v dans cette variable via la file \a queue.
90 *
91 * \a queue peut être nul.
92 */
93 ARCANE_CORE_EXPORT void copy(const ItemVariableArrayRefT<DataType>& v,RunQueue* queue);
94 //! Remplit la variable avec la valeur \a value
95 ARCANE_CORE_EXPORT void fill(const DataType& value);
96 //! Remplit la variable avec la valeur \a value pour les entités du groupe \a group
97 ARCANE_CORE_EXPORT void fill(const DataType& value,const ItemGroup& group);
98 //! Remplit la variable avec la valeur \a value via la file \a queue
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/*---------------------------------------------------------------------------*/
109/*!
110 * \ingroup Variable
111 * \brief Variable tableau sur un type d'entité du maillage.
112 */
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;
124
125 protected:
126
128
129 typedef Array2View<DataType> ArrayBase;
130
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
143 //! Construit une référence à la variable spécifiée dans \a vb
144 ARCANE_CORE_EXPORT MeshVariableArrayRefT(const VariableBuildInfo& b);
145 //! Construit une référence à partir de \a var
146 explicit ARCANE_CORE_EXPORT MeshVariableArrayRefT(IVariable* var);
147 //! Construit une référence à partir de \a rhs
149 //! Positionne la référence de l'instance à la variable \a rhs.
150 ARCANE_CORE_EXPORT void refersTo(const MeshVariableArrayRefT<ItemType,DataType>& rhs);
151
152 ThatClass& operator=(const ThatClass& rhs) = delete; // Interdit.
153
154 public:
155
156 //! Valeur non modifiable de l'entité \a item
157 ConstArrayType operator[](ItemLocalIdType item) const { return this->m_view[item.localId()]; }
158
159 //! Valeur modifiable de l'entité \a item
160 ArrayType operator[](ItemLocalIdType item) { return this->m_view[item.localId()]; }
161
162 //! Valeur non modifiable de la \a i-éme valeur de l'entité \a item
163 const DataType operator()(ItemLocalIdType item,Int32 i) const { return this->m_view[item.localId()][i]; }
164
165 //! Valeur modifiable de la \a i-éme valeur de l'entité \a item
166 DataType& operator()(ItemLocalIdType item,Int32 i) { return this->m_view[item.localId()][i]; }
167
168 public:
169
170 //! Groupe associé à la grandeur
171 ARCANE_CORE_EXPORT GroupType itemGroup() const;
172 ARCANE_CORE_EXPORT void swapValues(MeshVariableArrayRefT<ItemType,DataType>& rhs);
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.
Groupe d'entités de maillage.
Definition ItemGroup.h:49
Index d'un Item dans une variable.
Definition ItemLocalId.h:40
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.
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.
Variable tableau sur un type d'entité du maillage.
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.
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.
Classe de base d'une variable sur des entités du maillage.
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.
Référence à une variable.
Definition VariableRef.h:56
Informations caractérisant le type d'une variable.
Vue modifiable pour un tableau 2D.
constexpr DataType item(Integer i, Integer j) const
Valeur de l'élément [i][j].
Vue modifiable d'un tableau d'un type T.
Vue constante d'un tableau de type T.
Vecteur de données 2D avec sémantique par valeur (style STL).
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eItemKind
Genre d'entité de maillage.