Arcane  v3.14.10.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-2024 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-2024 */
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 "arcane/utils/Ref.h"
19
20/*---------------------------------------------------------------------------*/
21/*---------------------------------------------------------------------------*/
22
23namespace Arcane
24{
25
26/*---------------------------------------------------------------------------*/
27/*---------------------------------------------------------------------------*/
28
29class IModule;
30class IVariableMng;
31class VariableRef;
32class IDataReader;
33class IDataWriter;
34class VariableMng;
35class Module;
36class IVariableComputeFunction;
37class IObservable;
38class IDataOperation;
39class IMemoryAccessTrace;
40class IData;
41class VariableDependInfo;
42class VariableMetaData;
43
44/*---------------------------------------------------------------------------*/
45/*---------------------------------------------------------------------------*/
53class ARCANE_CORE_EXPORT IVariable
54{
55 public:
56
59 {
60 DPT_PreviousTime,
61 DPT_CurrentTime
62 };
63
64 public:
65
69 enum
70 {
72 PNoDump = (1 << 0),
73
80 PNoNeedSync = (1 << 1),
81
83 PHasTrace = (1 << 2),
84
91 PSubDomainDepend = (1 << 3),
92
99 PSubDomainPrivate = (1 << 4),
100
106 PExecutionDepend = (1 << 5),
107
114 PPrivate = (1 << 6),
115
126 PTemporary = (1 << 7),
127
133 PNoRestore= (1 << 8),
134
143 PNoExchange= (1 << 9),
144
150 PPersistant = (1 << 10),
151
159 PNoReplicaSync = (1 << 11)
160 };
161
162 public:
163
164 friend class VariableMng;
165
166 public:
167
168 virtual ~IVariable() = default;
169
170 public:
171
173 virtual ISubDomain* subDomain() =0;
174
175 public:
176
178 virtual IVariableMng* variableMng() const =0;
179
181 virtual Real allocatedMemory() const =0;
182
184 virtual String name() const =0;
185
187 virtual String fullName() const =0;
188
190 virtual eDataType dataType() const =0;
191
206 virtual eItemKind itemKind() const =0;
207
216 virtual Integer dimension() const =0;
217
226 virtual Integer multiTag() const =0;
227
237 virtual Integer nbElement() const =0;
238
240 virtual int property() const =0;
241
244
250
257
259 virtual VariableRef* firstReference() const =0 ;
260
262 virtual Integer nbReference() const =0;
263
264 public:
265
266 ARCANE_DEPRECATED_REASON("Y2021: This method is a noop")
267 virtual void setTraceInfo(Integer id,eTraceType tt)=0;
268
269 public:
270
285 virtual void resize(Integer new_size) =0;
286
298 virtual void resizeFromGroup() =0;
299
306 virtual void shrinkMemory() =0;
307
309 virtual void setAllocationInfo(const DataAllocationInfo& v) = 0;
310
312 virtual DataAllocationInfo allocationInfo() const = 0;
313
314 public:
315
333 virtual bool initialize(const ItemGroup& group,const String& value) =0;
334
335
337
338
354 virtual Integer checkIfSync(Integer max_print=0) =0;
355
372 virtual Integer checkIfSame(IDataReader* reader,Integer max_print,bool compare_ghost) =0;
373
396 virtual Integer checkIfSameOnAllReplica(Integer max_print=0) =0;
398
404 virtual void synchronize() =0;
405
406 // TODO: à rendre virtuelle pure (décembre 2024)
415 virtual void synchronize(Int32ConstArrayView local_ids);
416
423 ARCCORE_DEPRECATED_2020("Use meshHandle() instead")
424 virtual IMesh* mesh() const =0;
425
432 virtual MeshHandle meshHandle() const =0;
433
446 virtual ItemGroup itemGroup() const =0;
447
449 virtual String itemGroupName() const =0;
450
463 virtual IItemFamily* itemFamily() const =0;
464
466 virtual String itemFamilyName() const =0;
467
469 virtual String meshName() const =0;
470
476 ARCANE_DEPRECATED_REASON("Y2024: Use createMetaDataRef() instead")
477 virtual VariableMetaData* createMetaData() const =0;
478
480 virtual Ref<VariableMetaData> createMetaDataRef() const = 0;
481
490 virtual void syncReferences() =0;
491
492 public:
493
504 virtual void setUsed(bool v) =0;
505
507 virtual bool isUsed() const =0;
508
509
516 virtual bool isPartial() const =0;
517
518 public:
519
531 virtual void copyItemsValues(Int32ConstArrayView source,Int32ConstArrayView destination) =0;
532
542 virtual void copyItemsMeanValues(Int32ConstArrayView first_source,
544 Int32ConstArrayView destination) = 0;
545
554
557
558 public:
559
561 virtual IData* data() =0;
562
564 virtual const IData* data() const =0;
565
567 virtual IDataFactoryMng* dataFactoryMng() const =0;
568
570
571
575 virtual void serialize(ISerializer* sbuffer,IDataOperation* operation=0) =0;
576
587 virtual void serialize(ISerializer* sbuffer,Int32ConstArrayView ids,IDataOperation* operation=0) =0;
588
599 virtual ARCANE_DEPRECATED_2018 void write(IDataWriter* writer) =0;
600
611 virtual ARCANE_DEPRECATED_2018 void read(IDataReader* reader) =0;
612
621 virtual void notifyEndRead() =0;
622
629 virtual void notifyBeginWrite() =0;
630
637 virtual IObservable* writeObservable() =0;
638
644 virtual IObservable* readObservable() =0;
645
652 virtual IObservable* onSizeChangedObservable() =0;
654
656
657 virtual void addTag(const String& tagname,const String& tagvalue) =0;
662 virtual void removeTag(const String& tagname) =0;
664 virtual bool hasTag(const String& tagname) =0;
666 virtual String tagValue(const String& tagname) =0;
668
669 public:
670
672 virtual void print(std::ostream& o) const =0;
673
674 public:
675
677
678
688 virtual void update() =0;
689
690 virtual void update(Real wanted_time) =0;
691
698 virtual void setUpToDate() =0;
699
701 virtual Int64 modifiedTime() =0;
702
704 virtual void addDepend(IVariable* var,eDependType dt) =0;
705
707 virtual void addDepend(IVariable* var,eDependType dt,const TraceInfo& tinfo) =0;
708
711 virtual void removeDepend(IVariable* var) =0;
712
720 virtual void setComputeFunction(IVariableComputeFunction* v) =0;
721
723 virtual IVariableComputeFunction* computeFunction() =0;
724
730 virtual void dependInfos(Array<VariableDependInfo>& infos) =0;
732
733 public:
734
735 ARCANE_DEPRECATED_REASON("Y2021: This method is a noop")
736 virtual IMemoryAccessTrace* memoryAccessTrace() const =0;
737
743 virtual void setIsSynchronized() =0;
744
750 virtual void setIsSynchronized(const ItemGroup& item_group) =0;
751
752 public:
753
755 static Int64 incrementModifiedTime();
756
757 public:
758
760 virtual IVariableInternal* _internalApi() =0;
761};
762
763/*---------------------------------------------------------------------------*/
764/*---------------------------------------------------------------------------*/
765
766} // End namespace Arcane
767
768/*---------------------------------------------------------------------------*/
769/*---------------------------------------------------------------------------*/
770
771#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:54
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:59
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:120
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:184
eItemKind
Genre d'entité de maillage.
eDataType
Type d'une donnée.
Definition DataTypes.h:39