diff --git a/Src/Base/AMReX_ParmParse.cpp b/Src/Base/AMReX_ParmParse.cpp index 9d61fad89f..dda2827c05 100644 --- a/Src/Base/AMReX_ParmParse.cpp +++ b/Src/Base/AMReX_ParmParse.cpp @@ -9,6 +9,7 @@ #include #include +#include #include #include #include @@ -1075,6 +1076,24 @@ ParmParse::addfile (std::string const& filename) { } #endif + // check the file exists + int file_exists = int(false); + if (ParallelDescriptor::IOProcessor()) + { + if (std::FILE *fp = std::fopen(filename.c_str(), "r")) { + fclose(fp); + file_exists = int(true); + } + } + amrex::ParallelDescriptor::Bcast( + &file_exists, + 1, + amrex::ParallelDescriptor::IOProcessorNumber() + ); + AMREX_ALWAYS_ASSERT_WITH_MESSAGE(bool(file_exists), + "ParmParse::addfile: file does not exist: " + filename); + + // add the file auto file = FileKeyword; std::vector val{{filename}}; addDefn(file, val, g_table);