Arcane  v3.16.6.0
Documentation développeur
Tout Classes Espaces de nommage Fichiers Fonctions Variables Définitions de type Énumérations Valeurs énumérées Amis Macros Groupes Pages Concepts
IVariable.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/* IVariable.h (C) 2000-2025 */
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 };
146
147 public:
148
150 static const char* TAG_POST_PROCESSING;
151
154
155 public:
156
157 friend class VariableMng;
158
159 public:
160
161 virtual ~IVariable() = default;
162
163 public:
164
166 virtual ISubDomain* subDomain() = 0;
167
168 public:
169
171 virtual IVariableMng* variableMng() const = 0;
172
174 virtual Real allocatedMemory() const = 0;
175
177 virtual String name() const = 0;
178
180 virtual String fullName() const = 0;
181
183 virtual eDataType dataType() const = 0;
184
199 virtual eItemKind itemKind() const = 0;
200
209 virtual Integer dimension() const = 0;
210
219 virtual Integer multiTag() const = 0;
220
230 virtual Integer nbElement() const = 0;
231
233 virtual int property() const = 0;
234
237
243 virtual void addVariableRef(VariableRef* var_ref) = 0;
244
251 virtual void removeVariableRef(VariableRef* var_ref) = 0;
252
254 virtual VariableRef* firstReference() const = 0;
255
257 virtual Integer nbReference() const = 0;
258
259 public:
260
261 ARCANE_DEPRECATED_REASON("Y2021: This method is a noop")
262 virtual void setTraceInfo(Integer id, eTraceType tt) = 0;
263
264 public:
265
280 virtual void resize(Integer new_size) = 0;
281
293 virtual void resizeFromGroup() = 0;
294
301 virtual void shrinkMemory() = 0;
302
304 virtual void setAllocationInfo(const DataAllocationInfo& v) = 0;
305
308
309 public:
310
328 virtual bool initialize(const ItemGroup& group, const String& value) = 0;
329
331
332
348 virtual Int32 checkIfSync(Integer max_print = 0) = 0;
349
366 virtual Int32 checkIfSame(IDataReader* reader, Integer max_print, bool compare_ghost) = 0;
367
390 virtual Int32 checkIfSameOnAllReplica(Integer max_print = 0) = 0;
392
398 virtual void synchronize() = 0;
399
400 // TODO: à rendre virtuelle pure (décembre 2024)
409 virtual void synchronize(Int32ConstArrayView local_ids);
410
417 ARCCORE_DEPRECATED_2020("Use meshHandle() instead")
418 virtual IMesh* mesh() const = 0;
419
426 virtual MeshHandle meshHandle() const = 0;
427
440 virtual ItemGroup itemGroup() const = 0;
441
443 virtual String itemGroupName() const = 0;
444
457 virtual IItemFamily* itemFamily() const = 0;
458
460 virtual String itemFamilyName() const = 0;
461
463 virtual String meshName() const = 0;
464
470 ARCANE_DEPRECATED_REASON("Y2024: Use createMetaDataRef() instead")
471 virtual VariableMetaData* createMetaData() const = 0;
472
475
484 virtual void syncReferences() = 0;
485
486 public:
487
498 virtual void setUsed(bool v) = 0;
499
501 virtual bool isUsed() const = 0;
502
509 virtual bool isPartial() const = 0;
510
511 public:
512
524 virtual void copyItemsValues(Int32ConstArrayView source, Int32ConstArrayView destination) = 0;
525
535 virtual void copyItemsMeanValues(Int32ConstArrayView first_source,
536 Int32ConstArrayView second_source,
537 Int32ConstArrayView destination) = 0;
538
546 virtual void compact(Int32ConstArrayView new_to_old_ids) = 0;
547
549 virtual void changeGroupIds(Int32ConstArrayView old_to_new_ids) = 0;
550
551 public:
552
554 virtual IData* data() = 0;
555
557 virtual const IData* data() const = 0;
558
560 virtual IDataFactoryMng* dataFactoryMng() const = 0;
561
563
564
568 virtual void serialize(ISerializer* sbuffer, IDataOperation* operation = 0) = 0;
569
580 virtual void serialize(ISerializer* sbuffer, Int32ConstArrayView ids, IDataOperation* operation = 0) = 0;
581
592 virtual ARCANE_DEPRECATED_2018 void write(IDataWriter* writer) = 0;
593
604 virtual ARCANE_DEPRECATED_2018 void read(IDataReader* reader) = 0;
605
614 virtual void notifyEndRead() = 0;
615
622 virtual void notifyBeginWrite() = 0;
623
631
638
647
649
650 virtual void addTag(const String& tagname, const String& tagvalue) = 0;
655 virtual void removeTag(const String& tagname) = 0;
657 virtual bool hasTag(const String& tagname) = 0;
659 virtual String tagValue(const String& tagname) = 0;
661
662 public:
663
665 virtual void print(std::ostream& o) const = 0;
666
667 public:
668
670
671
681 virtual void update() = 0;
682
683 virtual void update(Real wanted_time) = 0;
684
691 virtual void setUpToDate() = 0;
692
694 virtual Int64 modifiedTime() = 0;
695
697 virtual void addDepend(IVariable* var, eDependType dt) = 0;
698
700 virtual void addDepend(IVariable* var, eDependType dt, const TraceInfo& tinfo) = 0;
701
704 virtual void removeDepend(IVariable* var) = 0;
705
714
717
723 virtual void dependInfos(Array<VariableDependInfo>& infos) = 0;
725
726 public:
727
728 ARCANE_DEPRECATED_REASON("Y2021: This method is a noop")
729 virtual IMemoryAccessTrace* memoryAccessTrace() const = 0;
730
736 virtual void setIsSynchronized() = 0;
737
743 virtual void setIsSynchronized(const ItemGroup& item_group) = 0;
744
745 public:
746
749
750 public:
751
754};
755
756/*---------------------------------------------------------------------------*/
757/*---------------------------------------------------------------------------*/
758
759} // End namespace Arcane
760
761/*---------------------------------------------------------------------------*/
762/*---------------------------------------------------------------------------*/
763
764#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 d'un observable.
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
@ 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:204
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:150
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:153
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: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.