14#include "arcane/impl/ArcaneSimpleExecutor.h"
16#include "arcane/utils/NotImplementedException.h"
17#include "arcane/utils/FatalErrorException.h"
18#include "arcane/utils/TraceClassConfig.h"
19#include "arcane/utils/ITraceMng.h"
20#include "arcane/utils/ApplicationInfo.h"
24#include "arcane/impl/ArcaneMain.h"
25#include "arcane/impl/MainFactory.h"
26#include "arcane/impl/internal/ArcaneMainExecInfo.h"
28#include "arcane/core/SubDomainBuildInfo.h"
29#include "arcane/core/ISession.h"
30#include "arcane/core/ICodeService.h"
31#include "arcane/core/IApplication.h"
32#include "arcane/core/IParallelSuperMng.h"
33#include "arcane/core/IParallelMng.h"
34#include "arcane/core/ITimeStats.h"
35#include "arcane/core/IIOMng.h"
70 ~Impl()
noexcept(
false)
77 m_arcane_main->finalize();
80 delete m_main_factory;
89 bool m_has_minimal_verbosity_level =
false;
90 bool m_has_output_level =
false;
103 auto& build_info = m_p->m_application_build_info;
104 build_info.parseArguments(cmd_line_args);
107 build_info.setConfigFileName(
String());
117ArcaneSimpleExecutor::
118~ArcaneSimpleExecutor() noexcept(false)
126void ArcaneSimpleExecutor::
129 if (!m_p->m_arcane_main)
130 ARCANE_FATAL(
"This instance is not initialized. Call initialize() method");
142 auto& build_info = m_p->m_application_build_info;
144 m_p->m_has_minimal_verbosity_level = (build_info.minimalVerbosityLevel() != Trace::UNSPECIFIED_VERBOSITY_LEVEL);
145 m_p->m_has_output_level = (build_info.outputLevel() != Trace::UNSPECIFIED_VERBOSITY_LEVEL);
147 if (!m_p->m_has_minimal_verbosity_level)
148 build_info.setMinimalVerbosityLevel(level);
149 if (!m_p->m_has_output_level)
150 build_info.setOutputLevel(level);
156int ArcaneSimpleExecutor::
159 if (m_p->m_arcane_main)
164 m_p->m_main_factory = factory;
165 m_p->m_arcane_main =
new ArcaneMainExecInfo(app_info, m_p->m_application_build_info, factory);
174int ArcaneSimpleExecutor::
177 if (!m_p->m_arcane_main)
181 IArcaneMain* am = m_p->m_arcane_main->arcaneMainClass();
182 bool clean_abort =
false;
183 bool is_print =
true;
190ApplicationBuildInfo& ArcaneSimpleExecutor::
191applicationBuildInfo()
193 return m_p->m_application_build_info;
199const ApplicationBuildInfo& ArcaneSimpleExecutor::
200applicationBuildInfo()
const
202 return m_p->m_application_build_info;
208ISubDomain* ArcaneSimpleExecutor::
209createSubDomain(
const String& case_file_name)
212 IApplication* app = m_p->m_arcane_main->arcaneMainClass()->application();
213 ITraceMng* tr = app->traceMng();
214 if (!m_p->m_has_minimal_verbosity_level)
215 tr->setVerbosityLevel(Trace::DEFAULT_VERBOSITY_LEVEL);
216 if (!m_p->m_has_output_level)
217 tr->setStandardOutputVerbosityLevel(Trace::DEFAULT_VERBOSITY_LEVEL);
218 IMainFactory* main_factory = app->mainFactory();
220 Ref<ICodeService> code_service = createArcaneCodeService(app);
221 ISession* session(code_service->createSession());
222 IParallelSuperMng* psm = app->parallelSuperMng();
223 Ref<IParallelMng> world_pm = psm->internalCreateWorldParallelMng(0);
225 SubDomainBuildInfo sdbi(world_pm, 0);
226 UniqueArray<Byte> case_bytes;
227 bool has_case_file = !case_file_name.empty();
229 bool is_bad = app->ioMng()->collectiveRead(case_file_name, case_bytes);
231 ARCANE_FATAL(
"Can not read case file '{0}'", case_file_name);
232 sdbi.setCaseFileName(case_file_name);
233 sdbi.setCaseBytes(case_bytes);
234 tr->info() <<
"Create sub domain with case file '" << case_file_name <<
"'";
237 sdbi.setCaseFileName(String());
241 ITimeStats* time_stat = main_factory->createTimeStats(world_pm->timerMng(), tr,
"Stats");
242 time_stat->beginGatherStats();
243 m_p->m_time_stats_list.add(time_stat);
244 world_pm->setTimeStats(time_stat);
246 ISubDomain* sub_domain(session->createSubDomain(sdbi));
248 code_service->initCase(sub_domain,
false);
#define ARCANE_FATAL(...)
Macro throwing a FatalErrorException.
File containing declarations concerning the message passing model.
Information for constructing an instance of IApplication.
const CommandLineArguments & commandLineArguments() const
Command line arguments.
int initialize()
Creation of the 'IArcaneMain' instance.
Execution management class.
static void arcaneInitialize()
Initializes Arcane.
static void arcaneFinalize()
Terminates Arcane usage.
static int callFunctorWithCatchedException(IFunctor *functor, IArcaneMain *amain, bool *clean_abort, bool is_print=true)
Calls the functor functor while catching possible exceptions.
static ApplicationInfo & defaultApplicationInfo()
Default application info.
IArcaneMain * createArcaneMain(const ApplicationInfo &app_info) override
Creates an instance of IArcaneMain.
void _setDefaultVerbosityLevel(Integer level)
Sets the trace level to level if it is not set.
Interface of the code management class.
Interface managing execution time statistics.
Reference to an instance.
Unicode character string.
1D data vector with value semantics (STL style).
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
Int32 Integer
Type representing an integer.
ConstArrayView< Byte > ByteConstArrayView
C equivalent of a 1D array of characters.