59 auto finalize_mpi_and_return = [](
int code) {
61 #ifdef ERF_USE_WW3_COUPLING
62 amrex::MPMD::Finalize();
70 #if defined(AMREX_MPI_THREAD_MULTIPLE)
71 int requested = MPI_THREAD_MULTIPLE;
73 MPI_Init_thread(&argc, &argv, requested, &provided);
74 #elif defined(AMREX_USE_MPI)
75 MPI_Init(&argc, &argv);
82 MPI_COMM_WORLD,
"No input file provided. Exiting!!");
87 for (
auto i = 1; i < argc; i++) {
88 const std::string param(argv[i]);
89 if ((param ==
"--help") || (param ==
"-h") || (param ==
"--usage")) {
97 for (
auto i = 1; i < argc; i++) {
98 if (std::string(argv[i]) ==
"--describe") {
100 return finalize_mpi_and_return(0);
105 if (!strchr(argv[1],
'=') && !amrex::FileSystem::Exists(std::string(argv[1])))
110 MPI_COMM_WORLD,
"Input file does not exist = " +
111 std::string(argv[1]) +
". Exiting!!");
112 return finalize_mpi_and_return(1);
118 for (
auto i = 1; i < argc; i++) {
119 if (std::string(argv[i]) ==
"--describe") {
125 #ifdef ERF_USE_WW3_COUPLING
126 MPI_Comm comm = amrex::MPMD::Initialize(argc, argv);
127 amrex::Initialize(argc,argv,
true,comm,
add_par);
129 amrex::Initialize(argc,argv,
true,MPI_COMM_WORLD,
add_par);
132 #ifdef ERF_USE_KOKKOS
134 if (!Kokkos::is_initialized()) {
135 Kokkos::initialize(Kokkos::InitializationSettings()
136 .set_device_id(amrex::Gpu::Device::deviceId()));
141 if (!strchr(argv[1],
'=')) {
146 BL_PROFILE_VAR(
"main()", pmain);
149 const Real strt_total =
Real(amrex::second());
163 Real end_total =
Real(amrex::second()) - strt_total;
166 ParallelDescriptor::ReduceRealMax(end_total ,ParallelDescriptor::IOProcessorNumber());
168 amrex::Print() <<
"\nTotal Time: " << end_total <<
'\n';
173 BL_PROFILE_VAR_STOP(pmain);
174 #ifdef ERF_USE_WW3_COUPLING
175 MPI_Barrier(MPI_COMM_WORLD);
178 #ifdef ERF_USE_KOKKOS
184 #ifdef ERF_USE_WW3_COUPLING
185 amrex::MPMD::Finalize();
amrex::Real Real
Definition: ERF_ShocInterface.H:19
void Evolve()
Definition: ERF.cpp:608
static void print_banner(MPI_Comm, std::ostream &)
Definition: ERF_ConsoleIO.cpp:60
void InitData()
Definition: ERF.cpp:983
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:143
static void print_usage(MPI_Comm, std::ostream &)
Definition: ERF_ConsoleIO.cpp:26
void add_par()
Definition: main.cpp:25
std::string inputs_name
Definition: main.cpp:15
Definition: ERF_InterpolationUtils.H:16