Arcane  v3.16.6.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
ModuleMaster.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/* ModuleMaster.h (C) 2000-2025 */
9/* */
10/* Module maître. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_MODULEMASTER_H
13#define ARCANE_CORE_MODULEMASTER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/VersionInfo.h"
18
19#include "arcane/core/IModuleMaster.h"
20#include "arcane/core/AbstractModule.h"
22#include "arcane/core/CommonVariables.h"
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27namespace Arcane
28{
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
39class ARCANE_CORE_EXPORT ModuleMaster
40: public AbstractModule
41, public CommonVariables
42, public IModuleMaster
43{
44 public:
45
47 explicit ModuleMaster(const ModuleBuildInfo&);
48
50 ~ModuleMaster() override;
51
52 public:
53
55 VersionInfo versionInfo() const override { return VersionInfo(1, 0, 0); }
56
59
61 IModule* toModule() override { return this; }
62
64 CommonVariables* commonVariables() override { return this; }
65
66 void addTimeLoopService(ITimeLoopService* tls) override;
67
69 void dumpStandardCurves() override;
70
71 public:
72
74
80 void timeLoopBegin();
81
83
88 void timeLoopEnd();
89
91 void masterInit();
92
94
95 void masterStartInit();
96
98 void masterContinueInit();
99
100 protected:
101
103 // nb: IFPEN a une notion d'évènement. On peut connaître le prochain
104 // temps et pas de temps. Si on applique l'incrémentation par défaut,
105 // on a des erreurs d'arrondi...
106 virtual void timeIncrementation();
107
109 // nb: IFPEN souhaite des affichages paramétrables par application
110 virtual void timeStepInformation();
111
112 void _masterBeginLoop();
113 void _masterEndLoop();
114 void _masterStartInit();
115 void _masterContinueInit();
116 void _masterLoopExit();
117 void _masterMeshChanged();
118 void _masterRestore();
119
120 protected:
121
124
127
130
133
136
138 bool m_is_first_loop = true;
139
140 Real m_thm_mem_used = 0.0;
141 Real m_thm_diff_cpu = 0.0;
142 Real m_thm_global_cpu_time = 0.0;
143 Real m_thm_diff_elapsed = 0.0;
144 Real m_thm_global_elapsed_time = 0.0;
145 Real m_thm_global_time = 0.0;
146
147 bool m_has_thm_dump_at_iteration = false;
148
149 private:
150
151 void _dumpTimeInfo();
152};
153
154/*---------------------------------------------------------------------------*/
155/*---------------------------------------------------------------------------*/
156
157} // namespace Arcane
158
159/*---------------------------------------------------------------------------*/
160/*---------------------------------------------------------------------------*/
161
162#endif
163
AbstractModule(const ModuleBuildInfo &)
Constructeur à partir d'un ModuleBuildInfo.
CommonVariables(IModule *c)
Construit les références des variables communes pour le module c.
Interface du module principal.
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.
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 dernière itération.
ModuleMaster(const ModuleBuildInfo &)
Constructeur.
IModule * toModule() override
Conversion en IModule.
Real m_old_elapsed_time
Valeur du temps horloge à la dernière itération.
CommonVariables * commonVariables() override
Accès aux variables 'communes' partagées entre tout service et module.
VersionInfo versionInfo() const override
Version du module.
CaseOptionsMain * caseoptions() override
Accès aux options du module.
UniqueArray< ITimeLoopService * > m_timeloop_services
Liste des services de boucle en temps.
Integer m_nb_loop
Nombre de boucles de calcul effectuées.
Vecteur 1D de données avec sémantique par valeur (style STL).
Informations sur une version.
Definition VersionInfo.h:46
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
double Real
Type représentant un réel.