aboutsummaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
Diffstat (limited to 'Source')
-rw-r--r--Source/Initialization/CMakeLists.txt1
-rw-r--r--Source/Initialization/Make.package1
-rw-r--r--Source/Initialization/WarpXAMReXInit.H23
-rw-r--r--Source/Initialization/WarpXAMReXInit.cpp44
-rw-r--r--Source/main.cpp6
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)