Arcane  v3.14.10.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;
40
41/*---------------------------------------------------------------------------*/
42/*---------------------------------------------------------------------------*/
76class ARCANE_CORE_EXPORT Variable
77: public TraceAccessor
78, public IVariable
79{
80 protected:
81
84
85 public:
86
88 ~Variable() override;
89
90 private:
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 Integer checkIfSync(Integer max_print) override;
150 Integer checkIfSameOnAllReplica(Integer max_print) override;
151
152 eDataType dataType() const override;
153 bool initialize(const ItemGroup& /*group*/,const String& /*value*/) override { return true; }
154
155 IDataFactoryMng* dataFactoryMng() const final;
156 void serialize(ISerializer* sbuffer,IDataOperation* operation) override;
157 void serialize(ISerializer* sbuffer,Int32ConstArrayView ids,IDataOperation* operation) override;
158
159 void resize(Integer n) override;
160 void resizeFromGroup() override;
161
162 void setAllocationInfo(const DataAllocationInfo& v) override;
163 DataAllocationInfo allocationInfo() const override;
164
165 public:
166
167 IObservable* writeObservable() override;
168 IObservable* readObservable() override;
169 IObservable* onSizeChangedObservable() override;
170
171 public:
172
173 void addTag(const String& tagname,const String& tagvalue) override;
174 void removeTag(const String& tagname) override;
175 bool hasTag(const String& tagname) override;
176 String tagValue(const String& tagname) override;
177
178 public:
179
180 void update() override;
181 void setUpToDate() override;
182 Int64 modifiedTime() override;
183 void addDepend(IVariable* var,eDependType dt) override;
184 void addDepend(IVariable* var,eDependType dt,const TraceInfo& tinfo) override;
185 void removeDepend(IVariable* var) override;
186 void setComputeFunction(IVariableComputeFunction* v) override;
187 IVariableComputeFunction* computeFunction() override;
188 void dependInfos(Array<VariableDependInfo>& infos) override;
189
190 void update(Real wanted_time) override;
191
192 void changeGroupIds(Int32ConstArrayView old_to_new_ids) override;
193
194 IVariableInternal* _internalApi() override;
195
196 public:
197
198 IMemoryAccessTrace* memoryAccessTrace() const override { return nullptr; }
199
200 protected:
201
202 void _setProperty(int property);
203
209 void _setData(const Ref<IData>& data);
210
212 void _setValidData(bool valid_data);
218 bool _hasValidData() const;
219
220 protected:
221
222 virtual void _internalResize(Integer new_size,Integer nb_additional_element) =0;
223 virtual Integer _checkIfSameOnAllReplica(IParallelMng* replica_pm,int max_print) =0;
224 void _checkSwapIsValid(Variable* rhs);
225 // Temporaire pour test libération mémoire
226 bool _wantShrink() const;
227
228 // Accès via VariablePrivate pour l'API interne
229 friend class VariablePrivate;
230 void _resizeWithReserve(Int32 new_size,Int32 additional_capacity);
231
232 private:
233
235
236 private:
237
238 void _checkSetItemFamily();
239 void _checkSetItemGroup();
240 void _checkSetProperty(VariableRef*);
241 bool _hasReference() const;
242 void _removeMeshReference();
243 String _computeComparisonHashCollective(IData* sorted_data);
244 VariableMetaData* _createMetaData() const;
245};
246
247/*---------------------------------------------------------------------------*/
248/*---------------------------------------------------------------------------*/
249
250} // End namespace Arcane
251
252/*---------------------------------------------------------------------------*/
253/*---------------------------------------------------------------------------*/
254
255#endif
256
257#include "arcane/VariableScalar.h"
258#include "arcane/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:120
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:79
Variable(const Variable &from)=delete
Constructeur de recopie (ne pas utiliser)
VariablePrivate * m_p
Implémentation.
Definition Variable.h:234
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:184
eItemKind
Genre d'entité de maillage.
eDataType
Type d'une donnée.
Definition DataTypes.h:39