Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
ITimeHistoryMng.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/* ITimeHistoryMng.h (C) 2000-2024 */
9/* */
10/* Interface de la classe gérant un historique de valeurs. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_ITIMEHISTORYMNG_H
13#define ARCANE_ITIMEHISTORYMNG_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
19#include "arcane/utils/FatalErrorException.h"
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
24namespace Arcane
25{
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
30/*!
31 * Classe contenant les arguments pour les méthodes utilisateurs 'addValue'.
32 */
34{
35 public:
36
37 /*!
38 * \brief Constructeur avec trois paramètres.
39 *
40 * \param name Le nom de la courbe.
41 * \param end_time Doit-on écrire la valeur à notre itération ou à notre itération-1 ?
42 * \param local_proc_id Le processus qui doit sauver la valeur (-1 pour global).
43 */
44 TimeHistoryAddValueArg(const String& name, bool end_time, Integer local_proc_id)
45 : m_name(name)
46 , m_end_time(end_time)
47 , m_local_proc_id(local_proc_id)
48 {}
49
50 /*!
51 * \brief Constructeur avec deux paramètres.
52 *
53 * La valeur sera sauvegardé globalement, et non sur un sous-domaine en particulier.
54 *
55 * \param name Le nom de la courbe.
56 * \param end_time Doit-on écrire la valeur à notre itération ou à notre itération-1 ?
57 */
58 TimeHistoryAddValueArg(const String& name, bool end_time)
59 : TimeHistoryAddValueArg(name, end_time, NULL_SUB_DOMAIN_ID)
60 {}
61
62 /*!
63 * \brief Constructeur avec un paramètre.
64 *
65 * La valeur sera sauvegardé globalement, et non sur un sous-domaine en particulier.
66 * La valeur sera sauvegardé à notre itération.
67 *
68 * \param name Le nom de la courbe.
69 */
70 explicit TimeHistoryAddValueArg(const String& name)
71 : TimeHistoryAddValueArg(name, true)
72 {}
73
74 public:
75
76 const String& name() const { return m_name; }
77 bool endTime() const { return m_end_time; }
78 bool isLocal() const { return m_local_proc_id != NULL_SUB_DOMAIN_ID; }
79 Integer localProcId() const { return m_local_proc_id; }
80
81 private:
82
83 String m_name;
84 bool m_end_time;
85 Integer m_local_proc_id;
86};
87
88/*---------------------------------------------------------------------------*/
89/*---------------------------------------------------------------------------*/
90
91class ITimeHistoryCurveWriter;
92class ITimeHistoryCurveWriter2;
93class ITimeHistoryTransformer;
94class ITimeHistoryMngInternal;
95class ITimeHistoryAdder;
96
97/*---------------------------------------------------------------------------*/
98/*---------------------------------------------------------------------------*/
99/*!
100 * \brief Classe gérant un historique de valeurs.
101 *
102 Le gestionnaire d'historique gère l'historique d'un ensemble de valeur au
103 cours du temps.
104
105 L'historique est basée par itération (VariablesCommon::globalIteration()).
106 Pour chaque itération, il est possible de sauver une valeur par
107 l'intermédiaire des méthodes addValue(). Il n'est pas obligatoire d'avoir
108 une valeur pour chaque itération. Lorsqu'on effectue plusieurs addValue()
109 pour le même historique à la même itération, seule la dernière valeur
110 est prise en compte.
111
112 Chaque historique est associée à un nom qui est le nom du fichier dans
113 lequel la liste des valeurs sera sauvegardée.
114
115 Seul l'instance associée au sous-domaine tel que parallelMng()->isMasterIO()
116 est vrai enregistre les valeurs. Pour les autres, les appels à addValue()
117 sont sans effet.
118
119 Les valeurs ne sont sauvées que si active() est vrai. Il est possible
120 de modifier l'état d'activation en appelant isActive().
121
122 En mode debug, l'ensemble des historiques est sauvé à chaque pas de temps.
123 En exécution normale, cet ensemble est sauvé toute les \a n itérations, \a n
124 étant donné par l'option du jeu de donné
125 <module-main/time-history-iteration-step>. Dans tous les cas, une sortie
126 est effectuée à la fin de l'exécution.
127
128 Le format de ces fichiers dépend de l'implémentation.
129
130 \since 0.4.38
131 */
133{
134 public:
135
136 virtual ~ITimeHistoryMng() = default; //!< Libère les ressources
137
138 public:
139
140 // TODO Deprecated
141 /*! \brief Ajoute la valeur \a value à l'historique \a name.
142 *
143 * \deprecated Cette méthode est dépréciée et est remplacée par l'utilisation de l'objet GlobalTimeHistoryAdder.
144 *
145 * La valeur est celle au temps de fin de l'itération si \a end_time est vrai,
146 * au début sinon.
147 * le booleen is_local indique si la courbe est propre au process ou pas pour pouvoir écrire des courbes meme
148 * par des procs non io_master quand la varariable ARCANE_ENABLE_NON_IO_MASTER_CURVES
149 */
150 virtual void addValue(const String& name, Real value, bool end_time = true, bool is_local = false) = 0;
151 /*! \brief Ajoute la valeur \a value à l'historique \a name.
152 *
153 * \deprecated Cette méthode est dépréciée et est remplacée par l'utilisation de l'objet GlobalTimeHistoryAdder.
154 *
155 * La valeur est celle au temps de fin de l'itération si \a end_time est vrai,
156 * au début sinon.
157 * le booleen is_local indique si la courbe est propre au process ou pas pour pouvoir écrire des courbes meme
158 * par des procs non io_master quand la varariable ARCANE_ENABLE_NON_IO_MASTER_CURVES
159 */
160 virtual void addValue(const String& name, Int32 value, bool end_time = true, bool is_local = false) = 0;
161 /*! Ajoute la valeur \a value à l'historique \a name.
162 *
163 * \deprecated Cette méthode est dépréciée et est remplacée par l'utilisation de l'objet GlobalTimeHistoryAdder.
164 *
165 * La valeur est celle au temps de fin de l'itération si \a end_time est vrai,
166 * au début sinon.
167 * le booleen is_local indique si la courbe est propre au process ou pas pour pouvoir écrire des courbes meme
168 * par des procs non io_master quand la varariable ARCANE_ENABLE_NON_IO_MASTER_CURVES
169 */
170 virtual void addValue(const String& name, Int64 value, bool end_time = true, bool is_local = false) = 0;
171 /*! \brief Ajoute la valeur \a value à l'historique \a name.
172 *
173 * \deprecated Cette méthode est dépréciée et est remplacée par l'utilisation de l'objet GlobalTimeHistoryAdder.
174 *
175 * Le nombre d'éléments de \a value doit être constant au cours du temps.
176 * La valeur est celle au temps de fin de l'itération si \a end_time est vrai,
177 * au début sinon.
178 * le booleen is_local indique si la courbe est propre au process ou pas pour pouvoir écrire des courbes meme
179 * par des procs non io_master quand la varariable ARCANE_ENABLE_NON_IO_MASTER_CURVES
180 */
181 virtual void addValue(const String& name, RealConstArrayView value, bool end_time = true, bool is_local = false) = 0;
182 /*! \brief Ajoute la valeur \a value à l'historique \a name.
183 *
184 * \deprecated Cette méthode est dépréciée et est remplacée par l'utilisation de l'objet GlobalTimeHistoryAdder.
185 *
186 * Le nombre d'éléments de \a value doit être constant au cours du temps.
187 * La valeur est celle au temps de fin de l'itération si \a end_time est vrai,
188 * au début sinon.
189 * le booleen is_local indique si la courbe est propre au process ou pas pour pouvoir écrire des courbes meme
190 * par des procs non io_master quand la varariable ARCANE_ENABLE_NON_IO_MASTER_CURVES
191 */
192 virtual void addValue(const String& name, Int32ConstArrayView value, bool end_time = true, bool is_local = false) = 0;
193 /*! Ajoute la valeur \a value à l'historique \a name.
194 *
195 * \deprecated Cette méthode est dépréciée et est remplacée par l'utilisation de l'objet GlobalTimeHistoryAdder.
196 *
197 * Le nombre d'éléments de \a value doit être constant au cours du temps.
198 * La valeur est celle au temps de fin de l'itération si \a end_time est vrai,
199 * au début sinon.
200 * le booleen is_local indique si la courbe est propre au process ou pas pour pouvoir écrire des courbes meme
201 * par des procs non io_master quand la varariable ARCANE_ENABLE_NON_IO_MASTER_CURVES
202 */
203 virtual void addValue(const String& name, Int64ConstArrayView value, bool end_time = true, bool is_local = false) = 0;
204
205 public:
206
207 virtual void timeHistoryBegin() = 0;
208 virtual void timeHistoryEnd() = 0;
209 virtual void timeHistoryInit() = 0;
210 virtual void timeHistoryStartInit() = 0;
211 virtual void timeHistoryContinueInit() = 0;
212 virtual void timeHistoryRestore() = 0;
213
214 public:
215
216 //! Ajoute un écrivain
217 virtual ARCANE_DEPRECATED void addCurveWriter(ITimeHistoryCurveWriter* writer)
218 {
219 ARCANE_UNUSED(writer);
220 ARCANE_FATAL("No longer supported. Use 'ITimeHistoryCurveWriter2' interface");
221 }
222
223 //! Supprime un écrivain
224 virtual ARCANE_DEPRECATED void removeCurveWriter(ITimeHistoryCurveWriter* writer)
225 {
226 ARCANE_UNUSED(writer);
227 ARCANE_FATAL("No longer supported. Use 'ITimeHistoryCurveWriter2' interface");
228 }
229
230 //! Ajoute un écrivain
231 virtual void addCurveWriter(ITimeHistoryCurveWriter2* writer) = 0;
232
233 //! Supprime un écrivain
235
236 //! Supprime l'écrivain de nom \a name
237 virtual void removeCurveWriter(const String& name) = 0;
238
239 public:
240
241 /*!
242 * \internal
243 * \brief Sauve l'historique.
244 *
245 * Cela consiste à appelé dumpCurves() pour chaque écrivain enregistré.
246 */
247 virtual void dumpHistory(bool is_verbose) = 0;
248
249 /*!
250 * \brief Utilise l'écrivain \a writer pour sortir toutes les courbes.
251 *
252 * Le chemin de sortie est le répertoire courant.
253 */
254 virtual void dumpCurves(ITimeHistoryCurveWriter2* writer) = 0;
255
256 /*!
257 * \brief Indique l'état d'activation.
258 *
259 * Les fonctions addValue() ne sont prises en compte que si l'instance
260 * est active. Dans le cas contraire, les appels à addValue() sont
261 * ignorés.
262 */
263 virtual bool active() const = 0;
264
265 /*!
266 * \brief Positionne l'état d'activation.
267 * \sa active().
268 */
269 virtual void setActive(bool is_active) = 0;
270
271 /*!
272 * \brief Applique la transformation \a v à l'ensemble des courbes.
273 */
275
276 /*!
277 * \brief Indique l'état d'activation des sorties.
278 *
279 * La fonction dumpHistory() est inactives
280 * si isDumpActive() est faux.
281 */
282 virtual bool isDumpActive() const = 0;
283
284 /*!
285 * \brief Positionne l'état d'activation des sorties.
286 */
287 virtual void setDumpActive(bool is_active) = 0;
288
289 /*!
290 * \brief Retourne un booléen indiquant si l'historique est compressé
291 */
292 virtual bool isShrinkActive() const = 0;
293
294 /*!
295 * \brief Positionne le booléen indiquant si l'historique est compressé
296 */
297 virtual void setShrinkActive(bool is_active) = 0;
298
299 public:
300
301 //! API interne à Arcane
302 virtual ITimeHistoryMngInternal* _internalApi() { ARCANE_FATAL("Invalid usage"); };
303};
304
305/*---------------------------------------------------------------------------*/
306/*---------------------------------------------------------------------------*/
307
308} // namespace Arcane
309
310/*---------------------------------------------------------------------------*/
311/*---------------------------------------------------------------------------*/
312
313#endif
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Déclarations des types généraux de Arcane.
Déclarations des types utilisés dans Arcane.
Interface d'un écrivain d'une courbe.
Interface d'un écrivain d'une courbe.
Classe gérant un historique de valeurs.
virtual void removeCurveWriter(ITimeHistoryCurveWriter2 *writer)=0
Supprime un écrivain.
virtual void dumpCurves(ITimeHistoryCurveWriter2 *writer)=0
Utilise l'écrivain writer pour sortir toutes les courbes.
virtual bool isDumpActive() const =0
Indique l'état d'activation des sorties.
virtual void setShrinkActive(bool is_active)=0
Positionne le booléen indiquant si l'historique est compressé
virtual void addValue(const String &name, Real value, bool end_time=true, bool is_local=false)=0
Ajoute la valeur value à l'historique name.
virtual void addValue(const String &name, RealConstArrayView value, bool end_time=true, bool is_local=false)=0
Ajoute la valeur value à l'historique name.
virtual ARCANE_DEPRECATED void removeCurveWriter(ITimeHistoryCurveWriter *writer)
Supprime un écrivain.
virtual void addValue(const String &name, Int64ConstArrayView value, bool end_time=true, bool is_local=false)=0
virtual void setDumpActive(bool is_active)=0
Positionne l'état d'activation des sorties.
virtual bool isShrinkActive() const =0
Retourne un booléen indiquant si l'historique est compressé
virtual ~ITimeHistoryMng()=default
Libère les ressources.
virtual void setActive(bool is_active)=0
Positionne l'état d'activation.
virtual void addCurveWriter(ITimeHistoryCurveWriter2 *writer)=0
Ajoute un écrivain.
virtual void addValue(const String &name, Int64 value, bool end_time=true, bool is_local=false)=0
virtual void applyTransformation(ITimeHistoryTransformer *v)=0
Applique la transformation v à l'ensemble des courbes.
virtual void removeCurveWriter(const String &name)=0
Supprime l'écrivain de nom name.
virtual void addValue(const String &name, Int32ConstArrayView value, bool end_time=true, bool is_local=false)=0
Ajoute la valeur value à l'historique name.
virtual void addValue(const String &name, Int32 value, bool end_time=true, bool is_local=false)=0
Ajoute la valeur value à l'historique name.
virtual ARCANE_DEPRECATED void addCurveWriter(ITimeHistoryCurveWriter *writer)
Ajoute un écrivain.
virtual bool active() const =0
Indique l'état d'activation.
virtual ITimeHistoryMngInternal * _internalApi()
API interne à Arcane.
Interface d'un objet transformant les courbes d'historiques.
TimeHistoryAddValueArg(const String &name, bool end_time, Integer local_proc_id)
Constructeur avec trois paramètres.
TimeHistoryAddValueArg(const String &name)
Constructeur avec un paramètre.
TimeHistoryAddValueArg(const String &name, bool end_time)
Constructeur avec deux paramètres.
Vue constante d'un tableau de type T.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.