Arcane  v3.16.0.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-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/*---------------------------------------------------------------------------*/
30
31class IModule;
32class IVariableMng;
33class VariableRef;
34class IDataReader;
35class IDataWriter;
36class VariableMng;
37class Module;
39class IObservable;
40class IDataOperation;
42class IData;
45
46/*---------------------------------------------------------------------------*/
47/*---------------------------------------------------------------------------*/
55class ARCANE_CORE_EXPORT IVariable
56{
57 public:
58
61 {
62 DPT_PreviousTime,
63 DPT_CurrentTime
64 };
65
66 public:
67
71 enum
72 {
74 PNoDump = (1 << 0),
75
82 PNoNeedSync = (1 << 1),
83
85 PHasTrace = (1 << 2),
86
93 PSubDomainDepend = (1 << 3),
94
102
109
116 PPrivate = (1 << 6),
117
128 PTemporary = (1 << 7),
129
135 PNoRestore= (1 << 8),
136
145 PNoExchange= (1 << 9),
146
152 PPersistant = (1 << 10),
153
161 PNoReplicaSync = (1 << 11)
162 };
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
251 virtual void addVariableRef(VariableRef* var_ref) =0;
252
258 virtual void removeVariableRef(VariableRef* var_ref) =0;
259
261 virtual VariableRef* firstReference() const =0 ;
262
264 virtual Integer nbReference() const =0;
265
266 public:
267
268 ARCANE_DEPRECATED_REASON("Y2021: This method is a noop")
269 virtual void setTraceInfo(Integer id,eTraceType tt)=0;
270
271 public:
272
287 virtual void resize(Integer new_size) =0;
288
300 virtual void resizeFromGroup() =0;
301
308 virtual void shrinkMemory() =0;
309
311 virtual void setAllocationInfo(const DataAllocationInfo& v) = 0;
312
315
316 public:
317
335 virtual bool initialize(const ItemGroup& group,const String& value) =0;
336
337
339
340
356 virtual Integer checkIfSync(Integer max_print=0) =0;
357
374 virtual Integer checkIfSame(IDataReader* reader,Integer max_print,bool compare_ghost) =0;
375
398 virtual Integer checkIfSameOnAllReplica(Integer max_print=0) =0;
400
406 virtual void synchronize() =0;
407
408 // TODO: à rendre virtuelle pure (décembre 2024)
417 virtual void synchronize(Int32ConstArrayView local_ids);
418
425 ARCCORE_DEPRECATED_2020("Use meshHandle() instead")
426 virtual IMesh* mesh() const =0;
427
434 virtual MeshHandle meshHandle() const =0;
435
448 virtual ItemGroup itemGroup() const =0;
449
451 virtual String itemGroupName() const =0;
452
465 virtual IItemFamily* itemFamily() const =0;
466
468 virtual String itemFamilyName() const =0;
469
471 virtual String meshName() const =0;
472
478 ARCANE_DEPRECATED_REASON("Y2024: Use createMetaDataRef() instead")
479 virtual VariableMetaData* createMetaData() const =0;
480
483
492 virtual void syncReferences() =0;
493
494 public:
495
506 virtual void setUsed(bool v) =0;
507
509 virtual bool isUsed() const =0;
510
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: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.
Definition IItemFamily.h:84
Interface d'un module.
Definition IModule.h:39
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:56
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:61
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:93
@ PNoExchange
Indique que la variable ne doit pas être échangée.
Definition IVariable.h:145
@ PNoReplicaSync
Indique que la variable n'a pas forcément la même valeur entre les réplicas.
Definition IVariable.h:161
@ PTemporary
Indique que la variable est temporaire.
Definition IVariable.h:128
@ PExecutionDepend
Indique que la valeur de la variable est dépendante de l'exécution.
Definition IVariable.h:108
@ PHasTrace
Indique que la variable est tracée (uniquement en mode trace)
Definition IVariable.h:85
@ PPrivate
Indique que la variable est privée.
Definition IVariable.h:116
@ PPersistant
Indique que la variable est persistante.
Definition IVariable.h:152
@ PNoRestore
Indique que la variable ne doit pas être restaurée.
Definition IVariable.h:135
@ PSubDomainPrivate
Indique que la variable est privée au sous-domaine.
Definition IVariable.h:101
@ PNoNeedSync
Indique que la variable n'est pas nécessairement synchronisée.
Definition IVariable.h:82
@ PNoDump
Indique que la variable ne doit pas être sauvegardée.
Definition IVariable.h:74
virtual ARCANE_DEPRECATED_2018 void read(IDataReader *reader)=0
virtual Integer checkIfSameOnAllReplica(Integer max_print=0)=0
Vérifie si la variable a les mêmes valeurs sur tous les réplicas.
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
Type 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 Integer checkIfSync(Integer max_print=0)=0
Vérifie si la variable est bien synchronisée.
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 Integer checkIfSame(IDataReader *reader, Integer max_print, bool compare_ghost)=0
Vérifie que la variable est identique à une valeur de référence.
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 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:197
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 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.
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 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.
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.
Gestionnaire de variables.
Definition VariableMng.h:56
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