14#include "arcane/impl/DefaultBackwardMng.h"
16#include "arcane/IVariableFilter.h"
17#include "arcane/IVariable.h"
18#include "arcane/IVariableMng.h"
19#include "arcane/ISubDomain.h"
20#include "arcane/IParallelMng.h"
21#include "arcane/CommonVariables.h"
22#include "arcane/Timer.h"
23#include "arcane/VariableCollection.h"
25#include "arcane/utils/ITraceMng.h"
27#include "arcane/impl/MemoryDataReaderWriter.h"
56DefaultBackwardMng(ITraceMng* trace,ISubDomain* sub_domain)
58, m_sub_domain(sub_domain)
64, m_action_refused(true)
65, m_sequence(SEQNothing)
67 ARCANE_ASSERT((m_trace),(
"ITraceMng pointer null"));
68 ARCANE_ASSERT((m_sub_domain),(
"ISubDomain pointer null"));
70 m_filter =
new RestoreVariableFilter();
72 m_data_io =
new MemoryDataReaderWriter(trace);
102 m_trace->pfatal() <<
"Trying to go backward during an action phase";
107 m_trace->pfatal() <<
"Impossible to go backward while it is already going backward";
112 m_trace->info() <<
"Execution of the backward mode !";
118void DefaultBackwardMng::
147 _checkSave(is_forced);
154 m_trace->info() <<
"Physical time of the last backward reached or passed. Save is forced";
165void DefaultBackwardMng::
178void DefaultBackwardMng::
181 Timer::Action ts_action(m_sub_domain,
"RestoreSave");
183 m_trace->
info() <<
"Saving variable before going backward";
194 m_trace->
info() <<
"Memory allocated for the variables (in Mo): used="
195 << var_mem <<
" max=" << max_var_mem;
208 m_trace->pfatal() <<
"Begin of action requested before the end";
217void DefaultBackwardMng::
218_checkSave(
bool is_forced)
241 const Integer iteration = m_sub_domain->commonVariables().globalIteration();
243 bool do_save =
false;
247 do_save |= (iteration %
m_period) == 0;
Real globalTime() const
Temps courant.
bool m_first_save
First save.
virtual bool checkAndApplyRestore() override
Vérifie et applique la restauration si nécessaire.
virtual bool checkAndApplySave(bool is_forced) override
Vérifie et applique la sauvegarde des variables si nécessaire. Si is_forced est vrai,...
void beginAction() override
Indique qu'on commence les actions de sauvegarde/restauration sont terminées.
void endAction() override
Indique que les actions de sauvegarde/restauration sont terminées.
void clear() override
Supprime les ressources associées au retour-arrière.
Integer m_period
Période entre deux sauvegardes pour le retour-arrière.
eSequence m_sequence
Séquence.
void goBackward() override
Signale qu'on souhaite effectué un retour arrière.
bool m_action_refused
Actions authorisées ?
Real m_backward_time
Temps du dernier retour demandé
@ SEQForceSave
Sauvegarde en force.
@ SEQRestore
Restauration.
Exception lorsqu'une erreur fatale est survenue.
virtual char reduce(eReduceType rt, char v)=0
Effectue la réduction de type rt sur le réel v et retourne la valeur.
virtual const CommonVariables & commonVariables() const =0
Informations sur les variables standards.
virtual IParallelMng * parallelMng()=0
Retourne le gestionnaire de parallélisme.
virtual IVariableMng * variableMng()=0
Retourne le gestionnaire de variables.
virtual TraceMessage info()=0
Flot pour un message d'information.
Fonctor d'un filtre applicable sur des variables.
virtual void readVariables(IDataReader *reader, IVariableFilter *filter=0)=0
Relit toutes les variables.
virtual void writeVariables(IDataWriter *writer, IVariableFilter *filter=0)=0
Ecrit les variables.
virtual Real exportSize(const VariableCollection &vars)=0
Taille estimé pour exporter des variables.
Interface d'une variable.
@ PTemporary
Indique que la variable est temporaire.
@ PNoRestore
Indique que la variable ne doit pas être restaurée.
virtual int property() const =0
Retourne les propriétés de la variable.
virtual bool isUsed() const =0
Etat d'utilisation de la variable.
virtual bool applyFilter(IVariable &var)
Applique le filtre sur la variable var.
@ ReduceMax
Maximum des valeurs.
Int32 Integer
Type représentant un entier.