Arcane  v3.15.0.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-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/* Variable.h (C) 2000-2024 */
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 IVariableValue;
34class VariableInfo;
35class VariableBuildInfo;
36template<typename T> class IDataTracerT;
37class VariablePrivate;
38class MemoryAccessInfo;
39class IParallelMng;
40class VariableResizeArgs;
41
42/*---------------------------------------------------------------------------*/
43/*---------------------------------------------------------------------------*/
77class ARCANE_CORE_EXPORT Variable
78: public TraceAccessor
79, public IVariable
80{
81 protected:
82
85
86 public:
87
89 ~Variable() override;
90
91 private:
92
94 Variable(const Variable& from) = delete;
96 Variable& operator=(const Variable& from) = delete;
97
98 public:
99
100 ISubDomain* subDomain() override;
101 IVariableMng* variableMng() const override;
102 String fullName() const final;
103 String name() const final;
104 String itemFamilyName() const final;
105 String meshName() const final;
106 String itemGroupName() const final;
107 int property() const override;
108 void notifyReferencePropertyChanged() override;
109
110 public:
111
113 void setUsed(bool v) override;
114
116 bool isUsed() const override;
117
118 bool isPartial() const override;
119
120 public:
121
122 void setTraceInfo(Integer,eTraceType) override {}
123
124 public:
125
126 void read(IDataReader* d) override;
127 void write(IDataWriter* d) override;
128 void notifyEndRead() override;
129 void notifyBeginWrite() override;
130
131 public:
132
133 void addVariableRef(VariableRef* ref) override;
134 void removeVariableRef(VariableRef* ref) override;
135 VariableRef* firstReference() const override;
136 Integer nbReference() const override;
137
138 VariableMetaData* createMetaData() const override;
139 Ref<VariableMetaData> createMetaDataRef() const override;
140 void syncReferences() override;
141
142 IMesh* mesh() const final;
143 MeshHandle meshHandle() const final;
144 ItemGroup itemGroup() const final;
145 IItemFamily* itemFamily() const final;
146
147 eItemKind itemKind() const override;
148 Integer dimension() const override;
149 Integer multiTag() const override;
150 Integer checkIfSync(Integer max_print) override;
151 Integer checkIfSameOnAllReplica(Integer max_print) override;
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 virtual Integer _checkIfSameOnAllReplica(IParallelMng* replica_pm,int max_print) =0;
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
233 private:
234
236
237 private:
238
239 void _checkSetItemFamily();
240 void _checkSetItemGroup();
241 void _checkSetProperty(VariableRef*);
242 bool _hasReference() const;
243 void _removeMeshReference();
244 String _computeComparisonHashCollective(IData* sorted_data);
245 VariableMetaData* _createMetaData() const;
246};
247
248/*---------------------------------------------------------------------------*/
249/*---------------------------------------------------------------------------*/
250
251} // End namespace Arcane
252
253/*---------------------------------------------------------------------------*/
254/*---------------------------------------------------------------------------*/
255
256#endif
257
258#include "arcane/core/VariableScalar.h"
259#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'écriture des données d'une variable.
Definition IDataWriter.h:49
Interface d'une donnée.
Definition IData.h:33
Interface d'une famille d'entités.
Interface d'un observable.
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:54
Groupe d'entités de maillage.
Definition ItemGroup.h:49
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:149
Handle sur un maillage.
Definition MeshHandle.h:47
Paramètres nécessaires à la construction d'une variable.
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
Instance d'une variable.
Definition Variable.h:80
Variable(const Variable &from)=delete
Constructeur de recopie (ne pas utiliser)
VariablePrivate * m_p
Implémentation.
Definition Variable.h:235
Variable & operator=(const Variable &from)=delete
Opérateur de recopie (ne pas utiliser)
Vue constante d'un tableau de type T.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eTraceType
Type de trace possible.
Definition DataTypes.h:188
eItemKind
Genre d'entité de maillage.
eDataType
Type d'une donnée.
Definition DataTypes.h:39