diff options
Diffstat (limited to 'Source/Initialization/PlasmaInjector.cpp')
-rw-r--r-- | Source/Initialization/PlasmaInjector.cpp | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/Source/Initialization/PlasmaInjector.cpp b/Source/Initialization/PlasmaInjector.cpp index af6a7a208..5710cab9a 100644 --- a/Source/Initialization/PlasmaInjector.cpp +++ b/Source/Initialization/PlasmaInjector.cpp @@ -81,10 +81,16 @@ PlasmaInjector::PlasmaInjector (int ispecies, const std::string& name) // NOTE: When periodic boundaries are used, default injection range is set to mother grid dimensions. const amrex::Geometry& geom = WarpX::GetInstance().Geom(0); if( geom.isPeriodic(0) ) { +# ifndef WARPX_DIM_1D_Z xmin = geom.ProbLo(0); xmax = geom.ProbHi(0); +# else + zmin = geom.ProbLo(0); + zmax = geom.ProbHi(0); +# endif } +# ifndef WARPX_DIM_1D_Z if( geom.isPeriodic(1) ) { # ifndef WARPX_DIM_3D zmin = geom.ProbLo(1); @@ -94,6 +100,7 @@ PlasmaInjector::PlasmaInjector (int ispecies, const std::string& name) ymax = geom.ProbHi(1); # endif } +# endif # ifdef WARPX_DIM_3D if( geom.isPeriodic(2) ) { @@ -246,16 +253,18 @@ PlasmaInjector::PlasmaInjector (int ispecies, const std::string& name) flux_normal_axis = 0; } #else +# ifndef WARPX_DIM_1D_Z if (flux_normal_axis_string == "x" || flux_normal_axis_string == "X") { flux_normal_axis = 0; } +# endif #endif #ifdef WARPX_DIM_3D - else if (flux_normal_axis_string == "y" || flux_normal_axis_string == "Y") { + if (flux_normal_axis_string == "y" || flux_normal_axis_string == "Y") { flux_normal_axis = 1; } #endif - else if (flux_normal_axis_string == "z" || flux_normal_axis_string == "Z") { + if (flux_normal_axis_string == "z" || flux_normal_axis_string == "Z") { flux_normal_axis = AMREX_SPACEDIM-1; } #ifdef WARPX_DIM_3D @@ -263,8 +272,10 @@ PlasmaInjector::PlasmaInjector (int ispecies, const std::string& name) #else # ifdef WARPX_DIM_RZ std::string flux_normal_axis_help = "'r' or 'z'."; -# else +# elif WARPX_DIM_XZ std::string flux_normal_axis_help = "'x' or 'z'."; +# else + std::string flux_normal_axis_help = "'z'."; # endif #endif AMREX_ALWAYS_ASSERT_WITH_MESSAGE(flux_normal_axis >= 0, @@ -282,7 +293,10 @@ 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. -#if WARPX_DIM_XZ + // For 1D, only one is expected. The second and third are overwritten with 1. +#if defined(WARPX_DIM_1D_Z) + constexpr int num_required_ppc_each_dim = 1; +#elif defined(WARPX_DIM_XZ) constexpr int num_required_ppc_each_dim = 2; #else constexpr int num_required_ppc_each_dim = 3; @@ -292,6 +306,10 @@ PlasmaInjector::PlasmaInjector (int ispecies, const std::string& name) #if WARPX_DIM_XZ num_particles_per_cell_each_dim.push_back(1); #endif +#if WARPX_DIM_1D_Z + num_particles_per_cell_each_dim.push_back(1); // overwrite 2nd number with 1 + num_particles_per_cell_each_dim.push_back(1); // overwrite 3rd number with 1 +#endif #if WARPX_DIM_RZ if (WarpX::n_rz_azimuthal_modes > 1) { AMREX_ALWAYS_ASSERT_WITH_MESSAGE( |