14#include "arcane/std/ArcaneSession.h"
16#include "arcane/utils/PlatformUtils.h"
17#include "arcane/utils/Collection.h"
18#include "arcane/utils/ITraceMng.h"
19#include "arcane/utils/StringBuilder.h"
21#include "arcane/IParallelMng.h"
22#include "arcane/IParallelSuperMng.h"
23#include "arcane/IParallelReplication.h"
24#include "arcane/Directory.h"
25#include "arcane/IXmlDocumentHolder.h"
26#include "arcane/ISubDomain.h"
27#include "arcane/ITimeLoopMng.h"
28#include "arcane/IApplication.h"
29#include "arcane/IRessourceMng.h"
30#include "arcane/XmlNode.h"
31#include "arcane/CommonVariables.h"
32#include "arcane/IIOMng.h"
33#include "arcane/ApplicationBuildInfo.h"
48, m_case_name(
"output")
73 if (output_dir_name.
empty()){
76 output_dir_name = output_base_dir.
file(m_case_name);
78 m_output_directory =
Directory(output_dir_name);
79 m_listing_directory =
Directory(m_output_directory,
"listing");
84 info() <<
"Output directory is <" << output_dir_name <<
">";
86 m_output_directory.createDirectory();
87 m_listing_directory.createDirectory();
105 setLogAndErrorFiles(sd);
118 bool is_log_disabled =
false;
120 is_log_disabled =
true;
127 bool is_master_io = all_replica_pm->
isMasterIO();
132 Int32 nb_sub_dir = 1;
133 Int32 NB_FILE_PER_SUBDIR = 256;
135 if (nb_sub_domain>(NB_FILE_PER_SUBDIR)){
136 nb_sub_dir = nb_sub_domain / NB_FILE_PER_SUBDIR;
141 m_listing_directory.createDirectory();
143 for(
Integer i=0; i<nb_sub_dir; ++i ){
151 Directory my_directory = m_listing_directory;
155 my_directory =
Directory(m_listing_directory,String::fromNumber(global_sid/NB_FILE_PER_SUBDIR));
160 String file_suffix = String::fromNumber(sid);
163 if (replication_rank>0)
164 file_suffix = file_suffix +
String(
"_r") + replication_rank;
171 info() <<
"Error output file '" << file <<
"'";
176 if (is_log_disabled){
178 tm->
info() <<
"Logs are disabled because environment variable ARCANE_DISABLE_LOG is set";
193_writeExecInfoFile(
int ret_val)
199 _checkExecInfoFile();
208 execution.createAndAppendElement(
"return-value",String::fromNumber(ret_val));
209 execution.createAndAppendElement(
"finish-date",datetime);
212 if (!sub_domains.empty()){
220 execution.createAndAppendElement(
"current-iteration",String::fromNumber(v.
globalIteration()));
221 execution.createAndAppendElement(
"current-time",String::fromNumber(v.
globalTime()));
222 execution.createAndAppendElement(
"end-time",String::fromNumber(v.
globalFinalTime()));
223 execution.createAndAppendElement(
"deltat",String::fromNumber(v.
globalDeltaT()));
224 execution.createAndAppendElement(
"cpu-time",String::fromNumber(v.
globalCPUTime()));
226 execution.createAndAppendElement(
"is-finished",is_finished_str);
230 String file(m_listing_directory.file(
"coderesult.xml"));
231 logdate() <<
"Info output in 'coderesult.xml'";
232 IIOMng* io_mng = _application()->ioMng();
233 io_mng->writeXmlFile(m_result_doc,file);
242 _writeExecInfoFile(-1);
254 m_result_doc = _application()->ressourceMng()->createXmlDocument();
255 XmlNode doc = m_result_doc->documentNode();
262 config.createAndAppendElement(
"case-name",m_case_name);
271endSession(
int ret_val)
273 _writeExecInfoFile(ret_val);
280setCaseName(
String casename)
282 m_case_name = casename;
Variables communes d'un cas.
Real globalCPUTime() const
Temps CPU utilisé (en seconde)
Real globalDeltaT() const
Delta T courant.
Real globalTime() const
Temps courant.
Int32 globalIteration() const
Numéro de l'itération courante.
Real globalFinalTime() const
Temps final de la simulation.
Classe gérant un répertoire.
virtual String file(const String &file_name) const
Retourne le chemin complet du fichier file_name dans le répertoire.
virtual bool createDirectory() const
Créé le répertoire.
Interface de l'application.
virtual ITraceMng * traceMng() const =0
Gestionnaire de traces.
Interface du gestionnaire de parallélisme pour un sous-domaine.
virtual IParallelReplication * replication() const =0
Informations sur la réplication.
virtual bool isMasterIO() const =0
true si l'instance est un gestionnaire maître des entrées/sorties.
virtual void barrier()=0
Effectue une barière.
Informations sur la réplication des sous-domaines en parallèle.
virtual bool hasReplication() const =0
Indique si la réplication est active.
virtual Int32 replicationRank() const =0
Rang dans la réplication (de 0 à nbReplication()-1)
virtual Int32 nbReplication() const =0
Nombre de réplication.
Classe abstraite du superviseur de parallélisme.
virtual bool isMasterIO() const =0
true si l'instance est un gestionnaire maître des entrées/sorties.
virtual Int32 commRank() const =0
Retourne le numéro du process (compris entre 0 et nbProcess()-1)
virtual void barrier()=0
Gestionnaire de parallèlisme pour l'ensemble des ressources allouées.
Interface du gestionnaire d'un sous-domaine.
virtual Int32 subDomainId() const =0
Numéro du sous-domaine associé à ce gestionnaire.
virtual const CommonVariables & commonVariables() const =0
Informations sur les variables standards.
virtual void setStorageDirectory(const IDirectory &dir)=0
Positionne le chemin de sortie des exportations nécessitant un archivage.
virtual void setListingDirectory(const IDirectory &dir)=0
Positionne le chemin de sortie des infos listing.
virtual IParallelMng * parallelMng()=0
Retourne le gestionnaire de parallélisme.
virtual ITimeLoopMng * timeLoopMng()=0
Retourne le gestionnaire de la boucle en temps.
virtual void setExportDirectory(const IDirectory &dir)=0
Positionne le chemin de sortie des exportations (protections et reprises)
virtual Int32 nbSubDomain() const =0
Nombre total de sous-domaines.
virtual void setCaseName(const String &name)=0
Positionne le nom du cas.
virtual bool isInitialized() const =0
Indique si la session a été initialisée.
virtual IParallelMng * allReplicaParallelMng() const =0
Retourne le gestionnaire de parallélisme pour tous les réplicats.
Interface du gestionnaire de la boucle en temps.
virtual bool finalTimeReached() const =0
Retourne true si le temps final est atteint.
Interface du gestionnaire de traces.
virtual void setErrorFileName(const String &file_name)=0
Positionne le nom du fichier d'erreur à file_name.
virtual void setLogFileName(const String &file_name)=0
Positionne le nom du fichier de log à file_name.
virtual TraceMessage info()=0
Flot pour un message d'information.
virtual void build()
Construit les membres de l'instance. L'instance n'est pas utilisable tant que cette méthode n'a pas é...
virtual IApplication * application() const
Application.
Constructeur de chaîne de caractère unicode.
Chaîne de caractères unicode.
bool empty() const
Vrai si la chaîne est vide (nulle ou "")
TraceMessage info() const
Flot pour un message d'information.
XmlNode documentElement() const
Retourne le noeud élément du document.
XmlNode child(const String &name) const
Noeud fils de celui-ci de nom name.
void clear()
Supprime tous les noeuds fils.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
Collection< ISubDomain * > SubDomainCollection
Collection de sous-domaines.
std::int32_t Int32
Type entier signé sur 32 bits.