Arcane  v4.1.7.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 {
62 PNoDump = (1 << 0),
63
70 PNoNeedSync = (1 << 1),
71
73 PHasTrace = (1 << 2),
74
81 PSubDomainDepend = (1 << 3),
82
90
96 PExecutionDepend = (1 << 5),
97
104 PPrivate = (1 << 6),
105
116 PTemporary = (1 << 7),
117
123 PNoRestore = (1 << 8),
124
133 PNoExchange = (1 << 9),
134
140 PPersistant = (1 << 10),
141
149 PNoReplicaSync = (1 << 11),
150
158 PInShMem = (1 << 12),
159
169 PDumpNull = (1 << 13)
170 };
171
172 public:
173
175 static const char* TAG_POST_PROCESSING;
176
179
180 public:
181
182 friend class VariableMng;
183
184 public:
185
186 virtual ~IVariable() = default;
187
188 public:
189
191 virtual ISubDomain* subDomain() = 0;
192
193 public:
194
196 virtual IVariableMng* variableMng() const = 0;
197
199 virtual Real allocatedMemory() const = 0;
200
202 virtual String name() const = 0;
203
205 virtual String fullName() const = 0;
206
208 virtual eDataType dataType() const = 0;
209
224 virtual eItemKind itemKind() const = 0;
225
234 virtual Integer dimension() const = 0;
235
244 virtual Integer multiTag() const = 0;
245
255 virtual Integer nbElement() const = 0;
256
258 virtual int property() const = 0;
259
262
268 virtual void addVariableRef(VariableRef* var_ref) = 0;
269
276 virtual void removeVariableRef(VariableRef* var_ref) = 0;
277
279 virtual VariableRef* firstReference() const = 0;
280
282 virtual Integer nbReference() const = 0;
283
284 public:
285
286 ARCANE_DEPRECATED_REASON("Y2021: This method is a noop")
287 virtual void setTraceInfo(Integer id, eTraceType tt) = 0;
288
289 public:
290
305 virtual void resize(Integer new_size) = 0;
306
318 virtual void resizeFromGroup() = 0;
319
326 virtual void shrinkMemory() = 0;
327
329 virtual void setAllocationInfo(const DataAllocationInfo& v) = 0;
330
333
334 public:
335
353 virtual bool initialize(const ItemGroup& group, const String& value) = 0;
354
356
357
373 virtual Int32 checkIfSync(Integer max_print = 0) = 0;
374
391 virtual Int32 checkIfSame(IDataReader* reader, Integer max_print, bool compare_ghost) = 0;
392
415 virtual Int32 checkIfSameOnAllReplica(Integer max_print = 0) = 0;
417
423 virtual void synchronize() = 0;
424
425 // TODO: à rendre virtuelle pure (décembre 2024)
434 virtual void synchronize(Int32ConstArrayView local_ids);
435
442 ARCCORE_DEPRECATED_2020("Use meshHandle() instead")
443 virtual IMesh* mesh() const = 0;
444
451 virtual MeshHandle meshHandle() const = 0;
452
465 virtual ItemGroup itemGroup() const = 0;
466
468 virtual String itemGroupName() const = 0;
469
482 virtual IItemFamily* itemFamily() const = 0;
483
485 virtual String itemFamilyName() const = 0;
486
488 virtual String meshName() const = 0;
489
495 ARCANE_DEPRECATED_REASON("Y2024: Use createMetaDataRef() instead")
496 virtual VariableMetaData* createMetaData() const = 0;
497
500
509 virtual void syncReferences() = 0;
510
511 public:
512
523 virtual void setUsed(bool v) = 0;
524
526 virtual bool isUsed() const = 0;
527
534 virtual bool isPartial() const = 0;
535
536 public:
537
549 virtual void copyItemsValues(Int32ConstArrayView source, Int32ConstArrayView destination) = 0;
550
560 virtual void copyItemsMeanValues(Int32ConstArrayView first_source,
561 Int32ConstArrayView second_source,
562 Int32ConstArrayView destination) = 0;
563
571 virtual void compact(Int32ConstArrayView new_to_old_ids) = 0;
572
574 virtual void changeGroupIds(Int32ConstArrayView old_to_new_ids) = 0;
575
576 public:
577
579 virtual IData* data() = 0;
580
582 virtual const IData* data() const = 0;
583
585 virtual IDataFactoryMng* dataFactoryMng() const = 0;
586
588
589
593 virtual void serialize(ISerializer* sbuffer, IDataOperation* operation = 0) = 0;
594
605 virtual void serialize(ISerializer* sbuffer, Int32ConstArrayView ids, IDataOperation* operation = 0) = 0;
606
617 virtual ARCANE_DEPRECATED_2018 void write(IDataWriter* writer) = 0;
618
629 virtual ARCANE_DEPRECATED_2018 void read(IDataReader* reader) = 0;
630
639 virtual void notifyEndRead() = 0;
640
647 virtual void notifyBeginWrite() = 0;
648
656
663
672
674
675 virtual void addTag(const String& tagname, const String& tagvalue) = 0;
680 virtual void removeTag(const String& tagname) = 0;
682 virtual bool hasTag(const String& tagname) = 0;
684 virtual String tagValue(const String& tagname) = 0;
686
687 public:
688
690 virtual void print(std::ostream& o) const = 0;
691
692 public:
693
695
696
706 virtual void update() = 0;
707
708 virtual void update(Real wanted_time) = 0;
709
716 virtual void setUpToDate() = 0;
717
719 virtual Int64 modifiedTime() = 0;
720
722 virtual void addDepend(IVariable* var, eDependType dt) = 0;
723
725 virtual void addDepend(IVariable* var, eDependType dt, const TraceInfo& tinfo) = 0;
726
729 virtual void removeDepend(IVariable* var) = 0;
730
739
742
748 virtual void dependInfos(Array<VariableDependInfo>& infos) = 0;
750
751 public:
752
753 ARCANE_DEPRECATED_REASON("Y2021: This method is a noop")
754 virtual IMemoryAccessTrace* memoryAccessTrace() const = 0;
755
761 virtual void setIsSynchronized() = 0;
762
768 virtual void setIsSynchronized(const ItemGroup& item_group) = 0;
769
770 public:
771
774
775 public:
776
779};
780
781/*---------------------------------------------------------------------------*/
782/*---------------------------------------------------------------------------*/
783
784} // End namespace Arcane
785
786/*---------------------------------------------------------------------------*/
787/*---------------------------------------------------------------------------*/
788
789#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:81
@ PNoExchange
Indique que la variable ne doit pas être échangée.
Definition IVariable.h:133
@ PNoReplicaSync
Indique que la variable n'a pas forcément la même valeur entre les réplicas.
Definition IVariable.h:149
@ PTemporary
Indique que la variable est temporaire.
Definition IVariable.h:116
@ PInShMem
Indique que la variable doit être alloué en mémoire partagée.
Definition IVariable.h:158
@ PExecutionDepend
Indique que la valeur de la variable est dépendante de l'exécution.
Definition IVariable.h:96
@ PHasTrace
Indique que la variable est tracée (uniquement en mode trace)
Definition IVariable.h:73
@ PPrivate
Indique que la variable est privée.
Definition IVariable.h:104
@ PPersistant
Indique que la variable est persistante.
Definition IVariable.h:140
@ PNoRestore
Indique que la variable ne doit pas être restaurée.
Definition IVariable.h:123
@ PSubDomainPrivate
Indique que la variable est privée au sous-domaine.
Definition IVariable.h:89
@ PNoNeedSync
Indique que la variable n'est pas nécessairement synchronisée.
Definition IVariable.h:70
@ PNoDump
Indique que la variable ne doit pas être sauvegardée.
Definition IVariable.h:62
@ PDumpNull
Indique que la sauvegarde sera nulle pour cette variable et pour ce sous-domaine.
Definition IVariable.h:169
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:175
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:178
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.