Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
ModuleMaster.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/* ModuleMaster.h (C) 2000-2012 */
9/* */
10/* Module maître. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_MODULEMASTER_H
13#define ARCANE_MODULEMASTER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/VersionInfo.h"
18
19#include "arcane/IModuleMaster.h"
20#include "arcane/AbstractModule.h"
21#include "arcane/VariableTypedef.h"
22#include "arcane/CommonVariables.h"
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27ARCANE_BEGIN_NAMESPACE
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
31
32class CaseOptionsMain;
33class ITimeLoopService;
34
35/*---------------------------------------------------------------------------*/
36/*---------------------------------------------------------------------------*/
37/*!
38 * \internal
39 * \brief Module principal.
40 *
41 * Ce module est toujours chargé en premier pour que ces points d'entrée encadrent tous ceux des autres modules.
42 * Il contient les variables globales du cas, comme le nom de fichier ou le numéro de l'itération.
43 */
44class ARCANE_CORE_EXPORT ModuleMaster
45: public AbstractModule
46, public CommonVariables
47, public IModuleMaster
48{
49 public:
50
51 //! Constructeur
53
54 //! Destructeur
55 virtual ~ModuleMaster();
56
57 public:
58
59 //! Version du module
60 virtual VersionInfo versionInfo() const { return VersionInfo(1,0,0); }
61
62 public:
63
64 //! Accès aux options du module
65 virtual CaseOptionsMain* caseoptions() { return m_case_options_main; }
66
67 //! Conversion en \a IModule
68 virtual IModule* toModule() { return this; }
69
70 //! Accès aux variables 'communes' partagées entre tout service et module
71 virtual CommonVariables* commonVariables() { return this; }
72
73 virtual void addTimeLoopService(ITimeLoopService* tls);
74
75 //! Sort les courbes classiques (CPUTime, ElapsedTime, ...)
76 virtual void dumpStandardCurves();
77
78 //! Point d'entrée auto-chargé en début d'itération de la boucle de calcul
79 /*!
80 <ul>
81 <li>Au cas où le temps courant est strictement supérieur au temps limite, demande l'arrêt du calcul</li>
82 <li>Ajoute au temps courant le deltat calculé au pas de temps précédent</li>
83 </ul>
84 */
85 void timeLoopBegin();
86
87 //! Point d'entrée auto-chargé en fin d'itération de la boucle de calcul
88 /*!
89 <ul>
90 <li>Incrémente le compteur d'itération</li>
91 </ul>
92 */
93 void timeLoopEnd();
94
95 //! Point d'entrée auto-chargé en début d'initialisation
96 void masterInit();
97
98 //! Point d'entrée auto-chargé en début d'initialisation d'un nouveau cas
99 /*! N'est pas appelé en cas d'initialisation sur une reprise */
100 void masterStartInit();
101
102 //! Point d'entrée auto-chargé en début de reprise d'un nouveau cas
103 void masterContinueInit();
104
105 protected:
106
107 //! Incrémentation du pas de temps surchargeable
108 // nb: IFPEN a une notion d'évènement. On peut connaître le prochain
109 // temps et pas de temps. Si on applique l'incrémentation par défaut,
110 // on a des erreurs d'arrondi...
111 virtual void timeIncrementation();
112
113 //! Affichage surchargeable des informations du pas de temps
114 // nb: IFPEN souhaite des affichages paramétrables par application
115 virtual void timeStepInformation();
116
117 void _masterBeginLoop();
118 void _masterEndLoop();
119 void _masterStartInit();
120 void _masterContinueInit();
121 void _masterLoopExit();
122 void _masterMeshChanged();
123 void _masterRestore();
124
125 protected:
126
127 //! Instance des options du module
129
130 //! Nombre de boucles de calcul effectuées
131 Integer m_nb_loop;
132
133 //! Valeur du temps CPU à la derniere itération
135
136 //! Valeur du temps horloge à la derniere itération
138
139 //! Liste des serviecs de boucle en temps
141
142 //! Indique si on est dans la première itération de l'exécution
144
145 Real m_thm_mem_used;
146 Real m_thm_diff_cpu;
147 Real m_thm_global_cpu_time;
148 Real m_thm_diff_elapsed;
149 Real m_thm_global_elapsed_time;
150 Real m_thm_global_time;
151 bool m_has_thm_dump_at_iteration;
152
153 private:
154
155 void _dumpTimeInfo();
156};
157
158/*---------------------------------------------------------------------------*/
159/*---------------------------------------------------------------------------*/
160
161ARCANE_END_NAMESPACE
162
163/*---------------------------------------------------------------------------*/
164/*---------------------------------------------------------------------------*/
165
166#endif
167
Classe représentant un module.
Variables communes d'un cas.
virtual void dumpStandardCurves()=0
Sort les courbes classiques.
virtual void addTimeLoopService(ITimeLoopService *tls)=0
Ajoute le service de boucle en temps.
Interface d'un module.
Definition IModule.h:39
Interface d'un service opérant lors de la boucle en temps.
Informations pour construire un module.
virtual IModule * toModule()
Conversion en IModule.
CaseOptionsMain * m_case_options_main
Instance des options du module.
bool m_is_first_loop
Indique si on est dans la première itération de l'exécution.
Real m_old_cpu_time
Valeur du temps CPU à la derniere itération.
Real m_old_elapsed_time
Valeur du temps horloge à la derniere itération.
virtual CommonVariables * commonVariables()
Accès aux variables 'communes' partagées entre tout service et module.
virtual CaseOptionsMain * caseoptions()
Accès aux options du module.
UniqueArray< ITimeLoopService * > m_timeloop_services
Liste des serviecs de boucle en temps.
Integer m_nb_loop
Nombre de boucles de calcul effectuées.
virtual VersionInfo versionInfo() const
Version du module.
Informations sur une version.
Definition VersionInfo.h:46
Vecteur 1D de données avec sémantique par valeur (style STL).