Arcane  v3.15.3.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;
38class IVariableComputeFunction;
39class IObservable;
40class IDataOperation;
41class IMemoryAccessTrace;
42class IData;
43class VariableDependInfo;
44class VariableMetaData;
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
101 PSubDomainPrivate = (1 << 4),
102
108 PExecutionDepend = (1 << 5),
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
252
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
314 virtual DataAllocationInfo allocationInfo() const = 0;
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
482 virtual Ref<VariableMetaData> createMetaDataRef() const = 0;
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,
546 Int32ConstArrayView destination) = 0;
547
556
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
639 virtual IObservable* writeObservable() =0;
640
646 virtual IObservable* readObservable() =0;
647
654 virtual IObservable* onSizeChangedObservable() =0;
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
722 virtual void setComputeFunction(IVariableComputeFunction* v) =0;
723
725 virtual IVariableComputeFunction* computeFunction() =0;
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
757 static Int64 incrementModifiedTime();
758
759 public:
760
762 virtual IVariableInternal* _internalApi() =0;
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.
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 eDataType dataType() const =0
Type de la donnée gérée par la variable (Real, Integer, ...)
eDependType
Type des dépendances.
Definition IVariable.h:61
virtual String fullName() const =0
Nom complet de la variable (avec le préfixe de la famille)
virtual int property() const =0
Retourne les propriétés de la variable.
virtual eItemKind itemKind() const =0
Type des entités du maillage sur lequel repose la variable.
virtual Integer nbReference() const =0
Nombre de références sur cette variable.
virtual ~IVariable()=default
Libère les ressources.
virtual Integer dimension() const =0
Dimension de la variable.
virtual void notifyReferencePropertyChanged()=0
Indique que les propriétés d'une des références à cette variable ont changé (interne)
virtual VariableRef * firstReference() const =0
Première réference (ou null) sur cette variable.
virtual Integer multiTag() const =0
Indique si la variable est un tableau à taille multiple.
virtual ISubDomain * subDomain()=0
Sous-domaine associé à la variable (TODO rendre obsolète fin 2023)
virtual Integer nbElement() const =0
Nombre d'éléments de 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 IVariableMng * variableMng() const =0
Gestionnaire de variable associé à la variable.
Groupe d'entités de maillage.
Definition ItemGroup.h:49
Vue typée sur une liste d'entités d'une connectivité.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:149
Handle sur un maillage.
Definition MeshHandle.h:47
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
Vue constante d'un tableau de type T.
Référence à une instance.
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:188
eItemKind
Genre d'entité de maillage.
eDataType
Type d'une donnée.
Definition DataTypes.h:39