Arcane  v3.16.8.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
ITimeLoopMng.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/* ITimeLoopMng.h (C) 2000-2025 */
9/* */
10/* Interface du gestionnaire de la boucle en temps. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_ITIMELOOPMNG_H
13#define ARCANE_CORE_ITIMELOOPMNG_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane
23{
24class IBackwardMng;
25
26/*---------------------------------------------------------------------------*/
27/*---------------------------------------------------------------------------*/
28
29enum class eTimeLoopEventType
30{
31 BeginEntryPoint,
32 EndEntryPoint,
33 BeginIteration,
34 EndIteration
35};
36
37/*---------------------------------------------------------------------------*/
38/*---------------------------------------------------------------------------*/
55
56/*---------------------------------------------------------------------------*/
57/*---------------------------------------------------------------------------*/
72{
73 public:
74
75 virtual ~ITimeLoopMng() {}
76
77 public:
78
79 virtual void build() =0;
80
81 //virtual void initialize() =0;
82
83 public:
84
86 virtual ISubDomain* subDomain() const =0;
87
89 virtual void execExitEntryPoints() =0;
90
92 virtual void execBuildEntryPoints() =0;
93
96 virtual void execInitEntryPoints(bool is_continue) =0;
97
99 //virtual void execLoadBalanceEntryPoints() =0;
100
103
106
114 virtual void stopComputeLoop(bool is_final_time,bool has_error=false) =0;
115
117 virtual bool finalTimeReached() const =0;
118
120 virtual Real cpuTimeUsed() const =0;
121
124
127
134 virtual void doExecNextEntryPoint(bool& is_last) =0;
135
138
141
149 virtual int doOneIteration() =0;
150
161 virtual int doComputeLoop(Integer max_loop=0) =0;
162
164
172 virtual void registerTimeLoop(ITimeLoop* time_loop) =0;
173
205 virtual void setUsedTimeLoop(const String& name) =0;
207
209 virtual ITimeLoop* usedTimeLoop() const =0;
210
211 virtual void setBackwardMng(IBackwardMng* backward_mng) = 0;
212
213 virtual IBackwardMng * getBackwardMng() const = 0;
214
228 virtual void goBackward() =0;
229
235 virtual bool isDoingBackward() =0;
236
251 virtual void registerActionMeshPartition(IMeshPartitionerBase* mesh_partitioner) =0;
252
257 virtual void setBackwardSavePeriod(Integer n) =0;
258
262 virtual void setVerificationActive(bool is_active) =0;
263
273 virtual void doVerification(const String& name) =0;
274
278 virtual void timeLoopsName(StringCollection& names) const =0;
279
281 virtual void timeLoops(TimeLoopCollection& time_loops) const =0;
282
284 virtual ITimeLoop* createTimeLoop(const String& name) =0;
285
287 virtual Integer nbLoop() const =0;
288
294 virtual IObservable* observable(eTimeLoopEventType type) =0;
295
297 virtual void setStopReason(eTimeLoopStopReason reason) =0;
298
305 virtual eTimeLoopStopReason stopReason() const =0;
306};
307
308/*---------------------------------------------------------------------------*/
309/*---------------------------------------------------------------------------*/
310
311ARCANE_END_NAMESPACE
312
313/*---------------------------------------------------------------------------*/
314/*---------------------------------------------------------------------------*/
315
316#endif
317
Déclarations des types généraux de Arcane.
Interface gérant les stratégies de retour-arrière.
Interface d'un point d'entrée d'un module.
Definition IEntryPoint.h:34
Interface d'un partitionneur de maillage.
Interface d'un observable.
Interface du gestionnaire d'un sous-domaine.
Definition ISubDomain.h:74
Interface du gestionnaire de la boucle en temps.
virtual EntryPointCollection loopEntryPoints()=0
Retourne la liste des points d'entrée de type 'ComputeLoop' de la boucle en temps.
virtual Integer nbLoop() const =0
Nombre de boucles de calcul (ComputeLoop) effectuées.
virtual void timeLoopsName(StringCollection &names) const =0
Retourne dans names la liste des noms des boucles en temps.
virtual void timeLoops(TimeLoopCollection &time_loops) const =0
Retourne dans time_loops la liste des boucles en temps.
virtual ITimeLoop * createTimeLoop(const String &name)=0
Crée une boucle en temps de nom name.
virtual int doComputeLoop(Integer max_loop=0)=0
Exécute la boucle de calcul.
virtual void execBuildEntryPoints()=0
Exécute les points d'entrée de construction.
virtual IEntryPoint * currentEntryPoint()=0
Retourne le point d'entrée en cours d'exécution ou 0 s'il n'y en a pas.
virtual EntryPointCollection usedTimeLoopEntryPoints()=0
Liste de tous les points d'entrée pour la boucle en temps actuelle.
virtual void goBackward()=0
Effectue un retour arrière.
virtual eTimeLoopStopReason stopReason() const =0
Raison pour laquelle on arrête le code.
virtual void setVerificationActive(bool is_active)=0
Positionne l'état du mode de vérification.
virtual void doVerification(const String &name)=0
Effectue une vérification.
virtual ITimeLoop * usedTimeLoop() const =0
Retourne la boucle en temps utilisée.
virtual IEntryPoint * nextEntryPoint()=0
Retourne le prochain point d'entrée à exécuter ou 0 s'il n'y en a pas.
virtual void execOnMeshRefinementEntryPoints()=0
Exécute les points d'entrée après raffinement.
virtual bool isDoingBackward()=0
Vrai si on est actuellement dans un retour-arrière.
virtual void execInitEntryPoints(bool is_continue)=0
Exécute les points d'entrée d'initialisation.
virtual void stopComputeLoop(bool is_final_time, bool has_error=false)=0
Indique que la boucle de calcul doit s'interrompre.
virtual void setStopReason(eTimeLoopStopReason reason)=0
Positionne la raison pour laquelle on arrête le code.
virtual void registerTimeLoop(ITimeLoop *time_loop)=0
Enregistrement et choix de la boucle en temps.
virtual void setBackwardSavePeriod(Integer n)=0
Positionne la période entre deux sauvegarde pour le retour arrière. Si cette valeur est nulle,...
virtual Real cpuTimeUsed() const =0
Retourne le temps CPU utilisé en secondes.
virtual IObservable * observable(eTimeLoopEventType type)=0
Observable sur l'instance.
virtual void setUsedTimeLoop(const String &name)=0
Positionne la boucle en temps à exécuter. Sélectionne la boucle en temps de nom name comme celle qui ...
virtual ~ITimeLoopMng()
Libère les ressources.
virtual void registerActionMeshPartition(IMeshPartitionerBase *mesh_partitioner)=0
Programme un repartitionnement du maillage avec l'outil de partition mesh_partitioner.
virtual int doOneIteration()=0
Lance l'exécution d'une itération de la boucle de calcul.
virtual void doExecNextEntryPoint(bool &is_last)=0
virtual void execOnMeshChangedEntryPoints()=0
Exécute les points d'entrée après rééquilibrage.
virtual bool finalTimeReached() const =0
Retourne true si le temps final est atteint.
virtual void execExitEntryPoints()=0
Exécute les points d'entrée de terminaison.
virtual ISubDomain * subDomain() const =0
< Retourne le gestionnaire du sous-domaine
Interface d'une boucle en temps.
Definition ITimeLoop.h:32
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eTimeLoopStopReason
Raison pour laquelle on arrête le code.
@ MaxIterationReached
Arrêt car nombre d'itération maximal spécifié atteint.
@ NoStop
Indique qu'on n'est pas encore en mode d'arrête du code.
@ FinalTimeReached
Arrêt car temps final atteint.
@ NoReason
Pas de raison spécifique.
@ Error
Arrêt sur une erreur.
Int32 Integer
Type représentant un entier.
Collection< String > StringCollection
Collection de chaînes de caractères.
Definition UtilsTypes.h:593
Collection< ITimeLoop * > TimeLoopCollection
Collection de boucles en temps.
double Real
Type représentant un réel.
Collection< IEntryPoint * > EntryPointCollection
Collection de points d'entrées.