Arcane  v4.1.5.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
IVariable.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2026 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/* IVariable.h (C) 2000-2026 */
9/* */
10/* Interface de la classe Variable. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_IVARIABLE_H
13#define ARCANE_CORE_IVARIABLE_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arccore/serialize/SerializeGlobal.h"
18
19#include "arcane/utils/Ref.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
38class ARCANE_CORE_EXPORT IVariable
39{
40 public:
41
44 {
45 DPT_PreviousTime,
46 DPT_CurrentTime
47 };
48
49 public:
50
54 enum
55 {
57 PNoDump = (1 << 0),
58
65 PNoNeedSync = (1 << 1),
66
68 PHasTrace = (1 << 2),
69
76 PSubDomainDepend = (1 << 3),
77
85
91 PExecutionDepend = (1 << 5),
92
99 PPrivate = (1 << 6),
100
111 PTemporary = (1 << 7),
112
118 PNoRestore = (1 << 8),
119
128 PNoExchange = (1 << 9),
129
135 PPersistant = (1 << 10),
136
144 PNoReplicaSync = (1 << 11),
145
153 PInShMem = (1 << 12)
154 };
155
156 public:
157
159 static const char* TAG_POST_PROCESSING;
160
163
164 public:
165
166 friend class VariableMng;
167
168 public:
169
170 virtual ~IVariable() = default;
171
172 public:
173
175 virtual ISubDomain* subDomain() = 0;
176
177 public:
178
180 virtual IVariableMng* variableMng() const = 0;
181
183 virtual Real allocatedMemory() const = 0;
184
186 virtual String name() const = 0;
187
189 virtual String fullName() const = 0;
190
192 virtual eDataType dataType() const = 0;
193
208 virtual eItemKind itemKind() const = 0;
209
218 virtual Integer dimension() const = 0;
219
228 virtual Integer multiTag() const = 0;
229
239 virtual Integer nbElement() const = 0;
240
242 virtual int property() const = 0;
243
246
252 virtual void addVariableRef(VariableRef* var_ref) = 0;
253
260 virtual void removeVariableRef(VariableRef* var_ref) = 0;
261
263 virtual VariableRef* firstReference() const = 0;
264
266 virtual Integer nbReference() const = 0;
267
268 public:
269
270 ARCANE_DEPRECATED_REASON("Y2021: This method is a noop")
271 virtual void setTraceInfo(Integer id, eTraceType tt) = 0;
272
273 public:
274
289 virtual void resize(Integer new_size) = 0;
290
302 virtual void resizeFromGroup() = 0;
303
310 virtual void shrinkMemory() = 0;
311
313 virtual void setAllocationInfo(const DataAllocationInfo& v) = 0;
314
317
318 public:
319
337 virtual bool initialize(const ItemGroup& group, const String& value) = 0;
338
340
341
357 virtual Int32 checkIfSync(Integer max_print = 0) = 0;
358
375 virtual Int32 checkIfSame(IDataReader* reader, Integer max_print, bool compare_ghost) = 0;
376
399 virtual Int32 checkIfSameOnAllReplica(Integer max_print = 0) = 0;
401
407 virtual void synchronize() = 0;
408
409 // TODO: à rendre virtuelle pure (décembre 2024)
418 virtual void synchronize(Int32ConstArrayView local_ids);
419
426 ARCCORE_DEPRECATED_2020("Use meshHandle() instead")
427 virtual IMesh* mesh() const = 0;
428
435 virtual MeshHandle meshHandle() const = 0;
436
449 virtual ItemGroup itemGroup() const = 0;
450
452 virtual String itemGroupName() const = 0;
453
466 virtual IItemFamily* itemFamily() const = 0;
467
469 virtual String itemFamilyName() const = 0;
470
472 virtual String meshName() const = 0;
473
479 ARCANE_DEPRECATED_REASON("Y2024: Use createMetaDataRef() instead")
480 virtual VariableMetaData* createMetaData() const = 0;
481
484
493 virtual void syncReferences() = 0;
494
495 public:
496
507 virtual void setUsed(bool v) = 0;
508
510 virtual bool isUsed() const = 0;
511
518 virtual bool isPartial() const = 0;
519
520 public:
521
533 virtual void copyItemsValues(Int32ConstArrayView source, Int32ConstArrayView destination) = 0;
534
544 virtual void copyItemsMeanValues(Int32ConstArrayView first_source,
545 Int32ConstArrayView second_source,
546 Int32ConstArrayView destination) = 0;
547
555 virtual void compact(Int32ConstArrayView new_to_old_ids) = 0;
556
558 virtual void changeGroupIds(Int32ConstArrayView old_to_new_ids) = 0;
559
560 public:
561
563 virtual IData* data() = 0;
564
566 virtual const IData* data() const = 0;
567
569 virtual IDataFactoryMng* dataFactoryMng() const = 0;
570
572
573
577 virtual void serialize(ISerializer* sbuffer, IDataOperation* operation = 0) = 0;
578
589 virtual void serialize(ISerializer* sbuffer, Int32ConstArrayView ids, IDataOperation* operation = 0) = 0;
590
601 virtual ARCANE_DEPRECATED_2018 void write(IDataWriter* writer) = 0;
602
613 virtual ARCANE_DEPRECATED_2018 void read(IDataReader* reader) = 0;
614
623 virtual void notifyEndRead() = 0;
624
631 virtual void notifyBeginWrite() = 0;
632
640
647
656
658
659 virtual void addTag(const String& tagname, const String& tagvalue) = 0;
664 virtual void removeTag(const String& tagname) = 0;
666 virtual bool hasTag(const String& tagname) = 0;
668 virtual String tagValue(const String& tagname) = 0;
670
671 public:
672
674 virtual void print(std::ostream& o) const = 0;
675
676 public:
677
679
680
690 virtual void update() = 0;
691
692 virtual void update(Real wanted_time) = 0;
693
700 virtual void setUpToDate() = 0;
701
703 virtual Int64 modifiedTime() = 0;
704
706 virtual void addDepend(IVariable* var, eDependType dt) = 0;
707
709 virtual void addDepend(IVariable* var, eDependType dt, const TraceInfo& tinfo) = 0;
710
713 virtual void removeDepend(IVariable* var) = 0;
714
723
726
732 virtual void dependInfos(Array<VariableDependInfo>& infos) = 0;
734
735 public:
736
737 ARCANE_DEPRECATED_REASON("Y2021: This method is a noop")
738 virtual IMemoryAccessTrace* memoryAccessTrace() const = 0;
739
745 virtual void setIsSynchronized() = 0;
746
752 virtual void setIsSynchronized(const ItemGroup& item_group) = 0;
753
754 public:
755
758
759 public:
760
763};
764
765/*---------------------------------------------------------------------------*/
766/*---------------------------------------------------------------------------*/
767
768} // End namespace Arcane
769
770/*---------------------------------------------------------------------------*/
771/*---------------------------------------------------------------------------*/
772
773#endif
Déclarations de types sur les entités.
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:34
Interface d'écriture des données d'une variable.
Definition IDataWriter.h:44
Interface d'une donnée.
Definition IData.h:33
Interface d'une famille d'entités.
Definition IItemFamily.h:84
Interface du gestionnaire d'un sous-domaine.
Definition ISubDomain.h:74
Interface de la classe functor de re-calcul d'une variable.
Partie interne de Ivariable.
Interface du gestionnaire de variables.
Interface d'une variable.
Definition IVariable.h:39
virtual Real allocatedMemory() const =0
Taille mémoire (en Koctet) utilisée par la variable.
virtual void changeGroupIds(Int32ConstArrayView old_to_new_ids)=0
pH : EXPERIMENTAL
virtual eDataType dataType() const =0
Type de la donnée gérée par la variable (Real, Integer, ...)
virtual void addTag(const String &tagname, const String &tagvalue)=0
Ajoute le tag tagname avev la valeur tagvalue.
eDependType
Type des dépendances.
Definition IVariable.h:44
virtual String meshName() const =0
Nom du maillage associé (nul si aucun).
virtual void print(std::ostream &o) const =0
Imprime les valeurs de la variable sur le flot o.
virtual void setIsSynchronized()=0
Indique que la variable est synchronisée.
virtual bool hasTag(const String &tagname)=0
true si la variable possède le tag tagname
virtual void setUsed(bool v)=0
Positionne l'état d'utilisation de la variable.
virtual String itemFamilyName() const =0
Nom de la famille associée (nul si aucune).
virtual VariableMetaData * createMetaData() const =0
Créé une instance contenant les meta-données de la variable.
virtual void notifyEndRead()=0
Notifie de la modification externe de data().
virtual void setUpToDate()=0
Indique que la variable vient d'être mise à jour.
virtual String fullName() const =0
Nom complet de la variable (avec le préfixe de la famille)
@ PSubDomainDepend
Indique que la valeur de la variable est dépendante du sous-domaine.
Definition IVariable.h:76
@ PNoExchange
Indique que la variable ne doit pas être échangée.
Definition IVariable.h:128
@ PNoReplicaSync
Indique que la variable n'a pas forcément la même valeur entre les réplicas.
Definition IVariable.h:144
@ PTemporary
Indique que la variable est temporaire.
Definition IVariable.h:111
@ PInShMem
Indique que la variable doit être alloué en mémoire partagée.
Definition IVariable.h:153
@ PExecutionDepend
Indique que la valeur de la variable est dépendante de l'exécution.
Definition IVariable.h:91
@ PHasTrace
Indique que la variable est tracée (uniquement en mode trace)
Definition IVariable.h:68
@ PPrivate
Indique que la variable est privée.
Definition IVariable.h:99
@ PPersistant
Indique que la variable est persistante.
Definition IVariable.h:135
@ PNoRestore
Indique que la variable ne doit pas être restaurée.
Definition IVariable.h:118
@ PSubDomainPrivate
Indique que la variable est privée au sous-domaine.
Definition IVariable.h:84
@ PNoNeedSync
Indique que la variable n'est pas nécessairement synchronisée.
Definition IVariable.h:65
@ PNoDump
Indique que la variable ne doit pas être sauvegardée.
Definition IVariable.h:57
virtual ARCANE_DEPRECATED_2018 void read(IDataReader *reader)=0
virtual bool initialize(const ItemGroup &group, const String &value)=0
Initialise la variable sur un groupe.
virtual int property() const =0
Retourne les propriétés de la variable.
virtual Ref< VariableMetaData > createMetaDataRef() const =0
Créé une instance contenant les meta-données de la variable.
virtual eItemKind itemKind() const =0
Genre des entités du maillage sur lequel repose la variable.
virtual Int64 modifiedTime()=0
Temps auquel la variable a été mise à jour.
virtual Integer nbReference() const =0
Nombre de références sur cette variable.
virtual String tagValue(const String &tagname)=0
Valeur du tag tagname. La chaîne est nulle si le tag n'existe pas.
virtual void synchronize()=0
Synchronise la variable.
virtual IDataFactoryMng * dataFactoryMng() const =0
Fabrique de données associées à la variable.
virtual ~IVariable()=default
Libère les ressources.
virtual bool isPartial() const =0
Indique si la variable est partielle.
virtual Integer dimension() const =0
Dimension de la variable.
virtual void resizeFromGroup()=0
Positionne le nombre d'éléments pour une variable du maillage.
virtual void notifyReferencePropertyChanged()=0
Indique que les propriétés d'une des références à cette variable ont changé (interne)
virtual void removeDepend(IVariable *var)=0
Supprime var de la liste des dépendances.
virtual IData * data()=0
Données associées à la variable.
virtual void syncReferences()=0
Synchronise les références.
virtual Int32 checkIfSync(Integer max_print=0)=0
Vérifie si la variable est bien synchronisée.
virtual VariableRef * firstReference() const =0
Première réference (ou null) sur cette variable.
virtual bool isUsed() const =0
Etat d'utilisation de la variable.
virtual void dependInfos(Array< VariableDependInfo > &infos)=0
Infos de dépendances.
virtual ItemGroup itemGroup() const =0
Groupe du maillage associé.
static Int64 incrementModifiedTime()
Incrémente le compteur de modification et retourne sa valeur avant modification.
Definition Variable.cc:205
virtual Integer multiTag() const =0
Indique si la variable est un tableau à taille multiple.
virtual ARCANE_DEPRECATED_2018 void write(IDataWriter *writer)=0
Sauve la variable.
virtual IVariableComputeFunction * computeFunction()=0
Fonction utilisée pour mettre à jour la variable.
virtual Int32 checkIfSame(IDataReader *reader, Integer max_print, bool compare_ghost)=0
Vérifie que la variable est identique à une valeur de référence.
virtual IMesh * mesh() const =0
Maillage auquel est associé la variable.
virtual DataAllocationInfo allocationInfo() const =0
Informations sur l'allocation.
virtual ISubDomain * subDomain()=0
Sous-domaine associé à la variable (TODO rendre obsolète fin 2023)
virtual IObservable * readObservable()=0
Observable en lecture.
virtual IObservable * onSizeChangedObservable()=0
Observable en redimensionnement.
virtual void update()=0
Recalcule la variable si nécessaire.
static const char * TAG_POST_PROCESSING
Tag utilisé pour indiquer si une variable sera post-traitée.
Definition IVariable.h:159
virtual void compact(Int32ConstArrayView new_to_old_ids)=0
Compacte les valeurs de la variable.
virtual void addDepend(IVariable *var, eDependType dt)=0
Ajoute var à la liste des dépendances.
virtual void notifyBeginWrite()=0
Notifie du début d'écriture de data().
virtual Int32 checkIfSameOnAllReplica(Integer max_print=0)=0
Vérifie si la variable a les mêmes valeurs sur tous les réplicas.
virtual void setComputeFunction(IVariableComputeFunction *v)=0
Positionne la fonction de recalcul de la variable.
virtual IObservable * writeObservable()=0
Observable en écriture.
virtual void copyItemsMeanValues(Int32ConstArrayView first_source, Int32ConstArrayView second_source, Int32ConstArrayView destination)=0
Copie les moyennes des valeurs des entités numéros first_source et second_source dans les entités num...
virtual void removeTag(const String &tagname)=0
Supprime le tag tagname.
virtual void serialize(ISerializer *sbuffer, IDataOperation *operation=0)=0
virtual void setAllocationInfo(const DataAllocationInfo &v)=0
Positionne les informations sur l'allocation.
virtual Integer nbElement() const =0
Nombre d'éléments de la variable.
virtual IItemFamily * itemFamily() const =0
Famille d'entité associée.
virtual String itemGroupName() const =0
Nom du groupe d'entité associée.
virtual MeshHandle meshHandle() const =0
Maillage auquel est associé la variable.
static const char * TAG_POST_PROCESSING_AT_THIS_ITERATION
Tag utilisé pour indiquer si une variable sera post-traitée à cette itération.
Definition IVariable.h:162
virtual void addVariableRef(VariableRef *var_ref)=0
Ajoute une référence à cette variable.
virtual String name() const =0
Nom de la variable.
virtual void removeVariableRef(VariableRef *var_ref)=0
Supprime une référence à cette variable.
virtual void copyItemsValues(Int32ConstArrayView source, Int32ConstArrayView destination)=0
Copie les valeurs des entités numéros source dans les entités numéro destination.
virtual IVariableInternal * _internalApi()=0
API interne à Arcane.
virtual void shrinkMemory()=0
Libère l'éventuelle mémoire supplémentaire allouée pour les données.
virtual IVariableMng * variableMng() const =0
Gestionnaire de variable associé à la variable.
virtual void resize(Integer new_size)=0
Positionne le nombre d'éléments pour une variable tableau.
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.
Informations sur une dépendance de variable.
Meta-données sur une variable.
Référence à une variable.
Definition VariableRef.h:56
-*- 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:482
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.