Arcane  v3.16.2.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Variable.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 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/* Variable.h (C) 2000-2025 */
9/* */
10/* Classe gérant la partie privée d'une variable. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_VARIABLE_H
13#define ARCANE_CORE_VARIABLE_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/TraceAccessor.h"
18#include "arcane/utils/Array.h"
19
21#include "arcane/core/IVariable.h"
22#include "arcane/core/IData.h"
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27namespace Arcane
28{
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
32
33class VariableInfo;
35template<typename T> class IDataTracerT;
36class VariablePrivate;
38class IParallelMng;
40
41/*---------------------------------------------------------------------------*/
42/*---------------------------------------------------------------------------*/
76class ARCANE_CORE_EXPORT Variable
77: public TraceAccessor
78, public IVariable
79{
80 protected:
81
83 Variable(const VariableBuildInfo& v,const VariableInfo& vi);
84
85 public:
86
88 ~Variable() override;
89
90 public:
91
93 Variable(const Variable& from) = delete;
95 Variable& operator=(const Variable& from) = delete;
96
97 public:
98
99 ISubDomain* subDomain() override;
100 IVariableMng* variableMng() const override;
101 String fullName() const final;
102 String name() const final;
103 String itemFamilyName() const final;
104 String meshName() const final;
105 String itemGroupName() const final;
106 int property() const override;
107 void notifyReferencePropertyChanged() override;
108
109 public:
110
112 void setUsed(bool v) override;
113
115 bool isUsed() const override;
116
117 bool isPartial() const override;
118
119 public:
120
121 void setTraceInfo(Integer,eTraceType) override {}
122
123 public:
124
125 void read(IDataReader* d) override;
126 void write(IDataWriter* d) override;
127 void notifyEndRead() override;
128 void notifyBeginWrite() override;
129
130 public:
131
132 void addVariableRef(VariableRef* ref) override;
133 void removeVariableRef(VariableRef* ref) override;
134 VariableRef* firstReference() const override;
135 Integer nbReference() const override;
136
137 VariableMetaData* createMetaData() const override;
138 Ref<VariableMetaData> createMetaDataRef() const override;
139 void syncReferences() override;
140
141 IMesh* mesh() const final;
142 MeshHandle meshHandle() const final;
143 ItemGroup itemGroup() const final;
144 IItemFamily* itemFamily() const final;
145
146 eItemKind itemKind() const override;
147 Integer dimension() const override;
148 Integer multiTag() const override;
149 Int32 checkIfSync(Integer max_print) final;
150 Int32 checkIfSameOnAllReplica(Integer max_print) final;
151 Int32 checkIfSame(IDataReader* reader, Integer max_print, bool compare_ghost) final;
152
153 eDataType dataType() const override;
154 bool initialize(const ItemGroup& /*group*/,const String& /*value*/) override { return true; }
155
156 IDataFactoryMng* dataFactoryMng() const final;
157 void serialize(ISerializer* sbuffer,IDataOperation* operation) override;
158 void serialize(ISerializer* sbuffer,Int32ConstArrayView ids,IDataOperation* operation) override;
159
160 void resize(Integer n) override;
161 void resizeFromGroup() override;
162
163 void setAllocationInfo(const DataAllocationInfo& v) override;
164 DataAllocationInfo allocationInfo() const override;
165
166 public:
167
168 IObservable* writeObservable() override;
169 IObservable* readObservable() override;
170 IObservable* onSizeChangedObservable() override;
171
172 public:
173
174 void addTag(const String& tagname,const String& tagvalue) override;
175 void removeTag(const String& tagname) override;
176 bool hasTag(const String& tagname) override;
177 String tagValue(const String& tagname) override;
178
179 public:
180
181 void update() override;
182 void setUpToDate() override;
183 Int64 modifiedTime() override;
184 void addDepend(IVariable* var,eDependType dt) override;
185 void addDepend(IVariable* var,eDependType dt,const TraceInfo& tinfo) override;
186 void removeDepend(IVariable* var) override;
187 void setComputeFunction(IVariableComputeFunction* v) override;
188 IVariableComputeFunction* computeFunction() override;
189 void dependInfos(Array<VariableDependInfo>& infos) override;
190
191 void update(Real wanted_time) override;
192
193 void changeGroupIds(Int32ConstArrayView old_to_new_ids) override;
194
195 IVariableInternal* _internalApi() override;
196
197 public:
198
199 IMemoryAccessTrace* memoryAccessTrace() const override { return nullptr; }
200
201 protected:
202
203 void _setProperty(int property);
204
210 void _setData(const Ref<IData>& data);
211
213 void _setValidData(bool valid_data);
219 bool _hasValidData() const;
220
221 protected:
222
223 virtual void _internalResize(const VariableResizeArgs& resize_args) =0;
224
225 void _checkSwapIsValid(Variable* rhs);
226 // Temporaire pour test libération mémoire
227 bool _wantShrink() const;
228
229 // Accès via VariablePrivate pour l'API interne
230 friend class VariablePrivate;
231 void _resize(const VariableResizeArgs& resize_args);
232
235
236 private:
237
238 VariablePrivate* m_p;
239
240 private:
241
242 void _checkSetItemFamily();
243 void _checkSetItemGroup();
244 void _checkSetProperty(VariableRef*);
245 bool _hasReference() const;
246 void _removeMeshReference();
247 VariableMetaData* _createMetaData() const;
248};
249
250/*---------------------------------------------------------------------------*/
251/*---------------------------------------------------------------------------*/
252
253} // End namespace Arcane
254
255/*---------------------------------------------------------------------------*/
256/*---------------------------------------------------------------------------*/
257
258#endif
259
260#include "arcane/core/VariableScalar.h"
261#include "arcane/core/VariableArray.h"
Déclarations des types généraux de Arcane.
Tableau d'items de types quelconques.
Informations sur l'allocation d'une donnée.
Interface du gestionnaire de fabrique d'une donnée.
Interface d'une opération sur une donnée.
Interface de lecture des données d'une variable.
Definition IDataReader.h:41
Interface d'un tracer.
Definition IDataTracer.h:40
Interface d'écriture des données d'une variable.
Definition IDataWriter.h:49
Interface d'une famille d'entités.
Definition IItemFamily.h:84
Interface d'un observable.
Interface du gestionnaire de parallélisme pour un sous-domaine.
Interface du gestionnaire d'un sous-domaine.
Definition ISubDomain.h:74
Interface de la classe fonctor de recalcul d'une variable.
Partie interne de Ivariable.
Interface du gestionnaire de variables.
Interface d'une variable.
Definition IVariable.h:56
Groupe d'entités de maillage.
Definition ItemGroup.h:49
Handle sur un maillage.
Definition MeshHandle.h:47
Référence à une instance.
Chaîne de caractères unicode.
TraceAccessor(ITraceMng *m)
Construit un accesseur via le gestionnaire de trace m.
Paramètres nécessaires à la construction d'une variable.
Arguments des méthodes de VariableComparer.
Résultats d'une opération de comparaison.
Informations sur une dépendance de variable.
Infos caractérisant une variable.
Meta-données sur une variable.
Référence à une variable.
Definition VariableRef.h:56
Arguments pour redimensionner une variable.
String itemGroupName() const final
Nom du groupe d'entité associée.
Definition Variable.cc:503
bool isUsed() const override
Etat d'utilisation de la variable.
Definition Variable.cc:686
Variable(const VariableBuildInfo &v, const VariableInfo &vi)
Créé une variable lié à la référence v.
Definition Variable.cc:336
bool isPartial() const override
Indique si la variable est partielle.
Definition Variable.cc:864
void notifyReferencePropertyChanged() override
Indique que les propriétés d'une des références à cette variable ont changé (interne)
Definition Variable.cc:610
IVariableMng * variableMng() const override
Gestionnaire de variable associé à la variable.
Definition Variable.cc:467
String name() const final
Nom de la variable.
Definition Variable.cc:476
virtual VariableComparerResults _compareVariable(const VariableComparerArgs &compare_args)=0
Comparaison de valeurs entre variables.
bool initialize(const ItemGroup &, const String &) override
Initialise la variable sur un groupe.
Definition Variable.h:154
Variable(const Variable &from)=delete
Constructeur de recopie (ne pas utiliser)
void setUsed(bool v) override
Positionne l'état d'utilisation de la variable.
Definition Variable.cc:619
String fullName() const final
Nom complet de la variable (avec le préfixe de la famille)
Definition Variable.cc:485
ISubDomain * subDomain() override
Sous-domaine associé à la variable (TODO rendre obsolète fin 2023)
Definition Variable.cc:458
VariablePrivate * m_p
Implémentation.
Definition Variable.h:238
String itemFamilyName() const final
Nom de la famille associée (nul si aucune).
Definition Variable.cc:494
int property() const override
Definition Variable.cc:532
Variable & operator=(const Variable &from)=delete
Opérateur de recopie (ne pas utiliser)
String meshName() const final
Nom du maillage associé (nul si aucun).
Definition Variable.cc:512
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
std::int64_t Int64
Type entier signé sur 64 bits.
Int32 Integer
Type représentant un entier.
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:569
eTraceType
Type de trace possible.
Definition DataTypes.h:188
eItemKind
Genre d'entité de maillage.
double Real
Type représentant un réel.
eDataType
Type d'une donnée.
Definition DataTypes.h:39
std::int32_t Int32
Type entier signé sur 32 bits.