Arcane  v3.16.0.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;
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
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;
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
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;
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.
Vue modifiable pour un tableau 2D.
Vue modifiable d'un tableau d'un type T.
Vue constante d'un tableau de type T.
Groupe d'entités de maillage.
Definition ItemGroup.h:49
Index d'un Item dans une variable.
Definition ItemLocalId.h:41
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.
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.