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/core/IParallelMng.h"
22#include "arcane/core/IParallelSuperMng.h"
23#include "arcane/core/IParallelReplication.h"
24#include "arcane/core/Directory.h"
25#include "arcane/core/IXmlDocumentHolder.h"
26#include "arcane/core/ISubDomain.h"
27#include "arcane/core/ITimeLoopMng.h"
28#include "arcane/core/IApplication.h"
29#include "arcane/core/IRessourceMng.h"
30#include "arcane/core/XmlNode.h"
31#include "arcane/core/CommonVariables.h"
32#include "arcane/core/IIOMng.h"
33#include "arcane/core/ApplicationBuildInfo.h"
48, m_case_name(
"output")
72 if (output_dir_name.
empty()) {
75 output_dir_name = output_base_dir.
file(m_case_name);
77 m_output_directory =
Directory(output_dir_name);
78 m_listing_directory =
Directory(m_output_directory,
"listing");
83 info() <<
"Output directory is <" << output_dir_name <<
">";
85 m_output_directory.createDirectory();
86 m_listing_directory.createDirectory();
104 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();
142 if (nb_sub_dir != 1) {
143 for (
Integer i = 0; i < nb_sub_dir; ++i) {
151 Directory my_directory = m_listing_directory;
152 if (nb_sub_dir != 1) {
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;
Common variables of a case.
Real globalCPUTime() const
CPU time used (in seconds).
Real globalDeltaT() const
Current Delta T.
Real globalTime() const
Current time.
Int32 globalIteration() const
Current iteration number.
Real globalFinalTime() const
Final time of the simulation.
Class managing a directory.
String file(const String &file_name) const override
Returns the full path of the file file_name in the directory.
bool createDirectory() const override
Creates the directory.
virtual ITraceMng * traceMng() const =0
Trace manager.
Interface of the parallelism manager for a subdomain.
virtual IParallelReplication * replication() const =0
Replication information.
virtual bool isMasterIO() const =0
true if the instance is a master I/O manager.
virtual void barrier()=0
Performs a barrier.
Brief information on parallel subdomain replication.
virtual bool hasReplication() const =0
Indicates if replication is active.
virtual Int32 replicationRank() const =0
Rank in the replication (from 0 to nbReplication()-1).
virtual Int32 nbReplication() const =0
Number of replications.
Abstract class of the parallelism supervisor.
virtual bool isMasterIO() const =0
Returns true if the instance is a master I/O manager.
virtual Int32 commRank() const =0
Returns the process number (between 0 and nbProcess()-1).
virtual void barrier()=0
Parallelism manager for all allocated resources.
Interface of the subdomain manager.
virtual Int32 subDomainId() const =0
Subdomain ID associated with this manager.
virtual const CommonVariables & commonVariables() const =0
Information on standard variables.
virtual void setStorageDirectory(const IDirectory &dir)=0
Sets the output path for exports requiring archiving.
virtual void setListingDirectory(const IDirectory &dir)=0
Sets the output path for listing info.
virtual IParallelMng * parallelMng()=0
Returns the parallelism manager.
virtual ITimeLoopMng * timeLoopMng()=0
Returns the time loop manager.
virtual void setExportDirectory(const IDirectory &dir)=0
Sets the output path for exports (protections and restarts).
virtual Int32 nbSubDomain() const =0
Total number of subdomains.
virtual void setCaseName(const String &name)=0
Sets the case name.
virtual bool isInitialized() const =0
Indicates if the session has been initialized.
virtual IParallelMng * allReplicaParallelMng() const =0
Returns the parallelism manager for all replicas.
Interface for the time loop manager.
virtual bool finalTimeReached() const =0
Returns true if the final time has been reached.
virtual void setErrorFileName(const String &file_name)=0
Sets the error file name to file_name.
virtual void setLogFileName(const String &file_name)=0
Sets the log file name to file_name.
virtual TraceMessage info()=0
Stream for an information message.
virtual void build()
Constructs the instance members. The instance is not usable until this method has been called....
virtual IApplication * application() const
Application.
Unicode character string constructor.
Unicode character string.
bool empty() const
True if the string is empty (null or "").
TraceMessage info() const
Flow for an information message.
XmlNode documentElement() const
Returns the document element.
XmlNode child(const String &name) const
Child node of this node with name name.
void clear()
Deletes all child nodes.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
Int32 Integer
Type representing an integer.
Collection< ISubDomain * > SubDomainCollection
Collection of subdomains.
std::int32_t Int32
Signed integer type of 32 bits.