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"
46 if (
var.property() & (IVariable::PTemporary|IVariable::PNoRestore))
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::
154 m_trace->
info() <<
"Physical time of the last backward reached or passed. Save is forced";
165void DefaultBackwardMng::
170 m_sub_domain->
variableMng()->readVariables(m_data_io,m_filter);
178void DefaultBackwardMng::
181 Timer::Action ts_action(m_sub_domain,
"RestoreSave");
183 m_trace->
info() <<
"Saving variable before going backward";
185 m_sub_domain->
variableMng()->writeVariables(m_data_io,m_filter);
191 const Real var_mem = m_sub_domain->
variableMng()->exportSize(VariableList());
192 const Real max_var_mem = m_sub_domain->
parallelMng()->reduce(Parallel::ReduceMax,var_mem);
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::
243 bool do_save =
false;
247 do_save |= (iteration %
m_period) == 0;
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.
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.
Fonctor d'un filtre applicable sur des variables.
Interface d'une variable.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
virtual bool applyFilter(IVariable &var)
Applique le filtre sur la variable var.
Exception lorsqu'une erreur fatale est survenue.
virtual TraceMessage info()=0
Flot pour un message d'information.
virtual TraceMessage pfatal()=0
Flot pour un message d'erreur fatale parallèle.
Int32 Integer
Type représentant un entier.