Arcane  v3.14.10.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-2022 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-2021 */
9/* */
10/* Interface du gestionnaire de la boucle en temps. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_ITIMELOOPMNG_H
13#define ARCANE_ITIMELOOPMNG_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/ArcaneTypes.h"
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane
23{
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
28enum class eTimeLoopEventType
29{
30 BeginEntryPoint,
31 EndEntryPoint,
32 BeginIteration,
33 EndIteration
34};
39{
41 NoStop =0,
43 NoReason =1,
45 Error =2,
50};
51class IBackwardMng;
52
53/*---------------------------------------------------------------------------*/
54/*---------------------------------------------------------------------------*/
69{
70 public:
71
72 virtual ~ITimeLoopMng() {}
73
74 public:
75
76 virtual void build() =0;
77
78 //virtual void initialize() =0;
79
80 public:
81
83 virtual ISubDomain* subDomain() const =0;
84
86 virtual void execExitEntryPoints() =0;
87
89 virtual void execBuildEntryPoints() =0;
90
93 virtual void execInitEntryPoints(bool is_continue) =0;
94
96 //virtual void execLoadBalanceEntryPoints() =0;
97
100
103
111 virtual void stopComputeLoop(bool is_final_time,bool has_error=false) =0;
112
114 virtual bool finalTimeReached() const =0;
115
117 virtual Real cpuTimeUsed() const =0;
118
121
124
131 virtual void doExecNextEntryPoint(bool& is_last) =0;
132
135
138
146 virtual int doOneIteration() =0;
147
158 virtual int doComputeLoop(Integer max_loop=0) =0;
159
161
170
202 virtual void setUsedTimeLoop(const String& name) =0;
204
206 virtual ITimeLoop* usedTimeLoop() const =0;
207
208 virtual void setBackwardMng(IBackwardMng* backward_mng) = 0;
209
210 virtual IBackwardMng * getBackwardMng() const = 0;
211
225 virtual void goBackward() =0;
226
232 virtual bool isDoingBackward() =0;
233
248 virtual void registerActionMeshPartition(IMeshPartitionerBase* mesh_partitioner) =0;
249
254 virtual void setBackwardSavePeriod(Integer n) =0;
255
259 virtual void setVerificationActive(bool is_active) =0;
260
270 virtual void doVerification(const String& name) =0;
271
275 virtual void timeLoopsName(StringCollection& names) const =0;
276
278 virtual void timeLoops(TimeLoopCollection& time_loops) const =0;
279
281 virtual ITimeLoop* createTimeLoop(const String& name) =0;
282
284 virtual Integer nbLoop() const =0;
285
291 virtual IObservable* observable(eTimeLoopEventType type) =0;
292
295
302 virtual eTimeLoopStopReason stopReason() const =0;
303};
304
305/*---------------------------------------------------------------------------*/
306/*---------------------------------------------------------------------------*/
307
308ARCANE_END_NAMESPACE
309
310/*---------------------------------------------------------------------------*/
311/*---------------------------------------------------------------------------*/
312
313#endif
314
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:41
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
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.