diff options
Diffstat (limited to 'Source')
-rw-r--r-- | Source/Initialization/CMakeLists.txt | 1 | ||||
-rw-r--r-- | Source/Initialization/Make.package | 1 | ||||
-rw-r--r-- | Source/Initialization/WarpXAMReXInit.H | 23 | ||||
-rw-r--r-- | Source/Initialization/WarpXAMReXInit.cpp | 44 | ||||
-rw-r--r-- | Source/main.cpp | 6 |
5 files changed, 71 insertions, 4 deletions
diff --git a/Source/Initialization/CMakeLists.txt b/Source/Initialization/CMakeLists.txt index b6cab076c..b9f0ae345 100644 --- a/Source/Initialization/CMakeLists.txt +++ b/Source/Initialization/CMakeLists.txt @@ -1,5 +1,6 @@ target_sources(WarpX PRIVATE + WarpXAMReXInit.cpp InjectorDensity.cpp InjectorMomentum.cpp PlasmaInjector.cpp diff --git a/Source/Initialization/Make.package b/Source/Initialization/Make.package index c90ed7a49..f2730c6bc 100644 --- a/Source/Initialization/Make.package +++ b/Source/Initialization/Make.package @@ -1,3 +1,4 @@ +CEXE_sources += WarpXAMReXInit.cpp CEXE_sources += WarpXInitData.cpp CEXE_sources += PlasmaInjector.cpp CEXE_sources += InjectorDensity.cpp diff --git a/Source/Initialization/WarpXAMReXInit.H b/Source/Initialization/WarpXAMReXInit.H new file mode 100644 index 000000000..6977bdcd5 --- /dev/null +++ b/Source/Initialization/WarpXAMReXInit.H @@ -0,0 +1,23 @@ +/* Copyright 2020 Axel Huebl + * + * This file is part of WarpX. + * + * License: BSD-3-Clause-LBNL + */ +#ifndef WARPX_AMREX_INIT_H_ +#define WARPX_AMREX_INIT_H_ + +#include <AMReX.H> + +/** Call amrex::Initialize + * + * This function calls amrex::Initialize and overwrites AMReX' defaults. + * + * @param[in] argc number of arguments from main() + * @param[in] argv argument strings from main() + * @returns pointer to an AMReX* object, forwarded from amrex::Initialize + */ +amrex::AMReX* +warpx_amrex_init(int& argc, char**& argv); + +#endif diff --git a/Source/Initialization/WarpXAMReXInit.cpp b/Source/Initialization/WarpXAMReXInit.cpp new file mode 100644 index 000000000..5b0b366fa --- /dev/null +++ b/Source/Initialization/WarpXAMReXInit.cpp @@ -0,0 +1,44 @@ +/* Copyright 2020 Axel Huebl + * + * This file is part of WarpX. + * + * License: BSD-3-Clause-LBNL + */ + +#include "Initialization/WarpXAMReXInit.H" + +#include <AMReX_ParmParse.H> + + +namespace { + /** Overwrite defaults in AMReX Inputs + * + * This overwrites defaults in amrex::ParamParse for inputs. + */ + void + overwrite_amrex_parser_defaults() + { + amrex::ParmParse pp("amrex"); + + // https://amrex-codes.github.io/amrex/docs_html/GPU.html#inputs-parameters + bool abort_on_out_of_gpu_memory = true; // AMReX' default: false + pp.query("abort_on_out_of_gpu_memory", abort_on_out_of_gpu_memory); + pp.add("abort_on_out_of_gpu_memory", abort_on_out_of_gpu_memory); + } +} + +amrex::AMReX* +warpx_amrex_init(int& argc, char**& argv) +{ + // note: AMReX defines a placeholder/"mock-up" for MPI_COMM_WORLD in serial builds + bool const build_parm_parse = true; // AMReX' default + MPI_Comm const mpi_comm = MPI_COMM_WORLD; // AMReX' default + + return amrex::Initialize( + argc, + argv, + build_parm_parse, + mpi_comm, + overwrite_amrex_parser_defaults + ); +} diff --git a/Source/main.cpp b/Source/main.cpp index 4bbdce2da..75169bbb5 100644 --- a/Source/main.cpp +++ b/Source/main.cpp @@ -7,16 +7,14 @@ * License: BSD-3-Clause-LBNL */ #include "WarpX.H" +#include "Initialization/WarpXAMReXInit.H" #include "Utils/WarpXUtil.H" #include "Utils/WarpXProfilerWrapper.H" #include <AMReX.H> -#include <AMReX_ParmParse.H> #include <AMReX_BLProfiler.H> #include <AMReX_ParallelDescriptor.H> -#include <iostream> - int main(int argc, char* argv[]) { @@ -32,7 +30,7 @@ int main(int argc, char* argv[]) # endif #endif - amrex::Initialize(argc,argv); + warpx_amrex_init(argc, argv); // in Debug mode, we need a larger stack limit than usual bc of the parser. #if defined(AMREX_USE_CUDA) && defined(AMREX_DEBUG) |