58 auto finalize_mpi_and_return = [](
int code) {
60 #ifdef ERF_USE_WW3_COUPLING
61 amrex::MPMD::Finalize();
69 #if defined(AMREX_MPI_THREAD_MULTIPLE)
70 int requested = MPI_THREAD_MULTIPLE;
72 MPI_Init_thread(&argc, &argv, requested, &provided);
73 #elif defined(AMREX_USE_MPI)
74 MPI_Init(&argc, &argv);
81 MPI_COMM_WORLD,
"No input file provided. Exiting!!");
86 for (
auto i = 1; i < argc; i++) {
87 const std::string param(argv[i]);
88 if ((param ==
"--help") || (param ==
"-h") || (param ==
"--usage")) {
96 for (
auto i = 1; i < argc; i++) {
97 if (std::string(argv[i]) ==
"--describe") {
99 return finalize_mpi_and_return(0);
104 if (!strchr(argv[1],
'=') && !amrex::FileSystem::Exists(std::string(argv[1])))
109 MPI_COMM_WORLD,
"Input file does not exist = " +
110 std::string(argv[1]) +
". Exiting!!");
111 return finalize_mpi_and_return(1);
117 for (
auto i = 1; i < argc; i++) {
118 if (std::string(argv[i]) ==
"--describe") {
124 #ifdef ERF_USE_WW3_COUPLING
125 MPI_Comm comm = amrex::MPMD::Initialize(argc, argv);
126 amrex::Initialize(argc,argv,
true,comm,
add_par);
128 amrex::Initialize(argc,argv,
true,MPI_COMM_WORLD,
add_par);
131 #ifdef ERF_USE_KOKKOS
133 if (!Kokkos::is_initialized()) {
134 Kokkos::initialize(Kokkos::InitializationSettings()
135 .set_device_id(amrex::Gpu::Device::deviceId()));
140 if (!strchr(argv[1],
'=')) {
145 BL_PROFILE_VAR(
"main()", pmain);
148 const Real strt_total = amrex::second();
162 Real end_total = amrex::second() - strt_total;
165 ParallelDescriptor::ReduceRealMax(end_total ,ParallelDescriptor::IOProcessorNumber());
167 amrex::Print() <<
"\nTotal Time: " << end_total <<
'\n';
172 BL_PROFILE_VAR_STOP(pmain);
173 #ifdef ERF_USE_WW3_COUPLING
174 MPI_Barrier(MPI_COMM_WORLD);
177 #ifdef ERF_USE_KOKKOS
183 #ifdef ERF_USE_WW3_COUPLING
184 amrex::MPMD::Finalize();
amrex::Real Real
Definition: ERF_ShocInterface.H:19
void Evolve()
Definition: ERF.cpp:603
static void print_banner(MPI_Comm, std::ostream &)
Definition: ERF_ConsoleIO.cpp:60
void InitData()
Definition: ERF.cpp:978
static void print_error(MPI_Comm, const std::string &msg)
Definition: ERF_ConsoleIO.cpp:43
static void writeBuildInfo(std::ostream &os)
Definition: ERF_WriteJobInfo.cpp:144
static void print_usage(MPI_Comm, std::ostream &)
Definition: ERF_ConsoleIO.cpp:26
void add_par()
Definition: main.cpp:24
std::string inputs_name
Definition: main.cpp:14