14#include "arcane/utils/Ptr.h"
15#include "arcane/utils/List.h"
17#include "arcane/EntryPoint.h"
18#include "arcane/ISubDomain.h"
19#include "arcane/IVariableMng.h"
20#include "arcane/IApplication.h"
21#include "arcane/IParallelMng.h"
22#include "arcane/ItemGroup.h"
23#include "arcane/Directory.h"
24#include "arcane/ITimeHistoryMng.h"
25#include "arcane/ServiceUtils.h"
26#include "arcane/IPostProcessorWriter.h"
27#include "arcane/SimpleProperty.h"
28#include "arcane/MeshAccessor.h"
29#include "arcane/IMesh.h"
30#include "arcane/VariableTypes.h"
31#include "arcane/CommonVariables.h"
32#include "arcane/MathUtils.h"
33#include "arcane/ITimeLoopMng.h"
34#include "arcane/ItemEnumerator.h"
35#include "arcane/ModuleFactory.h"
36#include "arcane/Timer.h"
37#include "arcane/IVariableAccessor.h"
38#include "arcane/VariableCollection.h"
40#include "arcane/OutputChecker.h"
42#include "arcane/std/ArcanePostProcessing_axl.h"
80 virtual void postProcessingStartInit();
81 virtual void postProcessingInit();
100 void _saveAtTime(Real);
102 void _checkCreateOutputDir();
113ArcanePostProcessingModule::
116, m_output_checker(
mbi.subDomain(),
"PostProcessing")
117, m_history_output_checker(
mbi.subDomain(),
"PostProcessingHistory")
120, m_output_dir_created(
false)
121, m_post_processor_timer(0)
124 m_output_checker.assignGlobalTime(&m_next_global_time,&
options()->outputFrequency);
126 m_history_output_checker.assignIteration(&m_history_next_iteration,&
options()->outputHistoryPeriod);
133ArcanePostProcessingModule::
134~ArcanePostProcessingModule()
155 info() <<
"-- List of output variables (" <<
nb_var <<
" variables):";
156 for( Integer i=0; i<
nb_var; ++i ){
164 " be a mesh variable (node, edge, face or cell)",
varname);
170 var->addTag(
"PostProcessing",
"1");
173 warning() <<
"Variable <" <<
varname <<
"> required twice during post-processing analysis";
184 info() <<
"-- List of output groups (" <<
nb_group <<
" groups):";
185 for( Integer i=0; i<
nb_group; ++i ){
196 warning() <<
"Group <" <<
groupname <<
"> required twice during post-processing analysis";
205 if(mesh->isAmrActivated())
215void ArcanePostProcessingModule::
216_checkCreateOutputDir()
228void ArcanePostProcessingModule::
231 info() <<
" -------------------------------------------";
232 info() <<
"| POST PROCESSING |";
233 info() <<
" -------------------------------------------";
238 info() <<
"Variables output:";
239 m_output_checker.initialize(is_continue);
241 info() <<
"History output:";
242 m_history_output_checker.initialize(is_continue);
247 if (
options()->outputHistoryShrink==
true){
256 Real old_time = vc.globalOldTime();
257 Real current_time = vc.globalTime();
258 m_output_checker.
check(old_time,current_time,
259 vc.globalIteration(),0);
260 m_history_output_checker.
check(old_time,current_time,
261 vc.globalIteration(),0);
263 _saveAtTime(current_time);
270void ArcanePostProcessingModule::
271postProcessingStartInit()
273 m_next_global_time = 0.0;
275 m_curves_next_global_time = 0.0;
276 m_curves_next_iteration = 0;
277 m_history_next_iteration = 0;
295 if (
subDomain()->timeLoopMng()->finalTimeReached())
305 info() <<
"Total time for post-processing analysis output (second): " <<
total_time;
309 <<
" (for " <<
nb_time <<
" outputs";
327 vc.globalIteration(),0);
349 vc.globalIteration(),0);
357void ArcanePostProcessingModule::
373 _checkCreateOutputDir();
382 info() <<
"**** Output in progress at time " <<
saved_time <<
" ******";
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Generation de la classe de base du Module.
CaseOptionsArcanePostProcessing * options() const
Options du jeu de données du module.
Arcane::VariableScalarInteger m_next_iteration
Variables du module.
ISubDomain * subDomain() const override
Sous-domaine associé au module.
IMesh * defaultMesh() const override
Maillage par défaut pour ce module.
Module de sortie pour le dépouillement.
Timer * m_post_processor_timer
Timer pour le temps passé à écrire.
bool m_output_dir_created
true si répertoire créé.
VariableArrayReal m_times
Instants de temps des sauvegardes.
virtual VersionInfo versionInfo() const
Version du module.
virtual void exportDataStart()
Point d'entrée en début d'itération.
VariableList m_variables
Liste des variables a exporter.
ItemGroupList m_groups
Liste des groupes à exporter.
virtual void exportData()
Vérifie et écrit les valeurs pour le dépouillement.
virtual void postProcessingExit()
Informations de dépouillement en sortie de la boucle de calcul.
Directory m_output_directory
Répertoire de sortie.
bool m_do_output
true si les sorties sont actives
Variables communes d'un cas.
Int32 globalIteration() const
Numéro de l'itération courante.
CommonVariables(IModule *c)
Construit les références des variables communes pour le module c.
Classe gérant un répertoire.
virtual bool createDirectory() const
Créé le répertoire.
virtual String path() const
Retourne le chemin du répertoire.
virtual CellGroup allCells()=0
Groupe de toutes les mailles.
virtual CellGroup allActiveCells()=0
Interface d'un écrivain pour les informations de post-traitement.
virtual const CommonVariables & commonVariables() const =0
Informations sur les variables standards.
virtual IMesh * defaultMesh()=0
Maillage par défaut.
virtual bool isContinue() const =0
Vrai si on effectue une reprise, faux sinon.
virtual ITimeHistoryMng * timeHistoryMng()=0
Retourne le gestionnaire d'historique.
virtual IVariableMng * variableMng()=0
Retourne le gestionnaire de variables.
Interface du gestionnaire de variables.
Interface d'une variable.
Groupe d'entités de maillage.
const String & name() const
Nom du groupe.
bool null() const
true is le groupe est le groupe nul
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Informations pour construire un module.
Gère les sorties basées sur un temps physique, temps CPU ou un nombre d'itération.
bool check(Real old_time, Real current_time, Integer current_iteration, Integer current_cpu_time, const String &from_function=String())
Vérifie s'il faut effectuer une sortie.
Sentinelle pour le timer. La sentinelle associée à un timer permet de déclancher celui-ci au moment d...
Integer nbActivated() const
Retourne le nombre de fois que le timer a été activé
@ TimerReal
Timer utilisant le temps réel.
Real totalTime() const
Retourne le temps total (en secondes) passé dans le timer.
Paramètres nécessaires à la construction d'une variable.
virtual void resize(Integer new_size)
Redimensionne le tableau pour contenir new_size éléments.
Informations sur une version.
constexpr Integer size() const noexcept
Retourne la taille du tableau.
Chaîne de caractères unicode.
TraceMessage warning() const
Flot pour un message d'avertissement.
TraceMessage info() const
Flot pour un message d'information.
constexpr ARCCORE_HOST_DEVICE bool isEqual(const _Type &a, const _Type &b)
Teste l'égalité bit à bit entre deux valeurs.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eItemKind
Genre d'entité de maillage.
@ IK_Node
Entité de maillage de genre noeud.
@ IK_Cell
Entité de maillage de genre maille.
@ IK_Face
Entité de maillage de genre face.
@ IK_Edge
Entité de maillage de genre arête.