Arcane  v3.14.10.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;
43
44 protected:
45
47 typedef typename BaseClass::PrivatePartType PrivatePartType;
48
51
52 public:
53
55 ARCANE_CORE_EXPORT ItemVariableArrayRefT(const VariableBuildInfo& b,eItemKind ik);
56
58 explicit ARCANE_CORE_EXPORT ItemVariableArrayRefT(IVariable* var);
59
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;
124
125 protected:
126
128
130
133
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.
Interface d'une variable.
Definition IVariable.h:54
Groupe d'entités de maillage.
Definition ItemGroup.h:49
Index d'un Item dans une variable.
Definition ItemLocalId.h:40
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.
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.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
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.
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.
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.