diff options
author | 2021-10-12 02:39:58 +0200 | |
---|---|---|
committer | 2021-10-11 17:39:58 -0700 | |
commit | 5a12391f0c2350e9083bf3138da210eb81707e6e (patch) | |
tree | 5755fcbc17dfd120e2f3ad8fd019de7b15aca24f /Source/Initialization/PlasmaInjector.cpp | |
parent | d367eb0c15c36baf390d0c9ec7bc068fe25490b7 (diff) | |
download | WarpX-5a12391f0c2350e9083bf3138da210eb81707e6e.tar.gz WarpX-5a12391f0c2350e9083bf3138da210eb81707e6e.tar.zst WarpX-5a12391f0c2350e9083bf3138da210eb81707e6e.zip |
Use parser for more input parameters (#2386)
* Use parser for more input parameters
* Fix PSATD compilation and apply suggestions from code review
* Avoid out of bound array access for num_particles_per_cell_each_dim
* Fix few input files with respect to num_particles_per_cell_each_dim
* Fix get that incorrectly became query
Diffstat (limited to 'Source/Initialization/PlasmaInjector.cpp')
-rw-r--r-- | Source/Initialization/PlasmaInjector.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/Source/Initialization/PlasmaInjector.cpp b/Source/Initialization/PlasmaInjector.cpp index dfe959bb2..aa02c94f5 100644 --- a/Source/Initialization/PlasmaInjector.cpp +++ b/Source/Initialization/PlasmaInjector.cpp @@ -205,7 +205,7 @@ PlasmaInjector::PlasmaInjector (int ispecies, const std::string& name) // so that inj_pos->getPositionUnitBox calls // InjectorPosition[Random or Regular].getPositionUnitBox. else if (injection_style == "nrandompercell") { - pp_species_name.query("num_particles_per_cell", num_particles_per_cell); + queryWithParser(pp_species_name, "num_particles_per_cell", num_particles_per_cell); #if WARPX_DIM_RZ AMREX_ALWAYS_ASSERT_WITH_MESSAGE( num_particles_per_cell>=2*WarpX::n_rz_azimuthal_modes, @@ -229,7 +229,7 @@ PlasmaInjector::PlasmaInjector (int ispecies, const std::string& name) "of particles should be at least two times n_rz_azimuthal_modes " "(Please visit PR#765 for more information.)"); #endif - pp_species_name.get("surface_flux_pos", surface_flux_pos); + getWithParser(pp_species_name, "surface_flux_pos", surface_flux_pos); std::string flux_normal_axis_string; pp_species_name.get("flux_normal_axis", flux_normal_axis_string); flux_normal_axis = -1; @@ -274,10 +274,15 @@ PlasmaInjector::PlasmaInjector (int ispecies, const std::string& name) } else if (injection_style == "nuniformpercell") { // Note that for RZ, three numbers are expected, r, theta, and z. // For 2D, only two are expected. The third is overwritten with 1. - num_particles_per_cell_each_dim.assign(3, 1); - pp_species_name.getarr("num_particles_per_cell_each_dim", num_particles_per_cell_each_dim); #if WARPX_DIM_XZ - num_particles_per_cell_each_dim[2] = 1; + constexpr int num_required_ppc_each_dim = 2; +#else + constexpr int num_required_ppc_each_dim = 3; +#endif + getArrWithParser(pp_species_name, "num_particles_per_cell_each_dim", + num_particles_per_cell_each_dim, 0, num_required_ppc_each_dim); +#if WARPX_DIM_XZ + num_particles_per_cell_each_dim.push_back(1); #endif #if WARPX_DIM_RZ AMREX_ALWAYS_ASSERT_WITH_MESSAGE( |