diff options
Diffstat (limited to 'Source/Particles')
5 files changed, 86 insertions, 47 deletions
diff --git a/Source/Particles/Collision/BackgroundStopping/BackgroundStopping.cpp b/Source/Particles/Collision/BackgroundStopping/BackgroundStopping.cpp index 939f098ee..dbfc1b1d4 100644 --- a/Source/Particles/Collision/BackgroundStopping/BackgroundStopping.cpp +++ b/Source/Particles/Collision/BackgroundStopping/BackgroundStopping.cpp @@ -59,8 +59,9 @@ BackgroundStopping::BackgroundStopping (std::string const collision_name) "For background stopping, the background temperature must be specified."); } - m_background_density_func = m_background_density_parser.compile<4>(); - m_background_temperature_func = m_background_temperature_parser.compile<4>(); + constexpr auto num_parser_args = 4; + m_background_density_func = m_background_density_parser.compile<num_parser_args>(); + m_background_temperature_func = m_background_temperature_parser.compile<num_parser_args>(); if (m_background_type == BackgroundStoppingType::ELECTRONS) { m_background_mass = PhysConst::m_e; diff --git a/Source/Particles/ElementaryProcess/QEDInternals/BreitWheelerEngineWrapper.cpp b/Source/Particles/ElementaryProcess/QEDInternals/BreitWheelerEngineWrapper.cpp index 59503d2ae..f7e32dcbb 100644 --- a/Source/Particles/ElementaryProcess/QEDInternals/BreitWheelerEngineWrapper.cpp +++ b/Source/Particles/ElementaryProcess/QEDInternals/BreitWheelerEngineWrapper.cpp @@ -159,10 +159,14 @@ void BreitWheelerEngine::compute_lookup_tables ( void BreitWheelerEngine::init_builtin_dndt_table() { + constexpr auto default_chi_phot_min = 0.02_prt; + constexpr auto default_chi_phot_max = 200.0_prt; + constexpr auto default_chi_phot_how_many = 64; + BW_dndt_table_params dndt_params; - dndt_params.chi_phot_min = 0.02_prt; - dndt_params.chi_phot_max = 200.0_prt; - dndt_params.chi_phot_how_many = 64; + dndt_params.chi_phot_min = default_chi_phot_min; + dndt_params.chi_phot_max = default_chi_phot_max; + dndt_params.chi_phot_how_many = default_chi_phot_how_many; const auto vals = amrex::Gpu::DeviceVector<amrex::ParticleReal>{ -1.34808e+02_prt, -1.16674e+02_prt, -1.01006e+02_prt, -8.74694e+01_prt, @@ -189,11 +193,16 @@ void BreitWheelerEngine::init_builtin_dndt_table() void BreitWheelerEngine::init_builtin_pair_prod_table() { + constexpr auto default_chi_phot_min = 0.02_prt; + constexpr auto default_chi_phot_max = 200.0_prt; + constexpr auto default_chi_phot_how_many = 64; + constexpr auto default_frac_how_many = 64; + BW_pair_prod_table_params pair_prod_params; - pair_prod_params.chi_phot_min = 0.02_prt; - pair_prod_params.chi_phot_max = 200.0_prt; - pair_prod_params.chi_phot_how_many = 64; - pair_prod_params.frac_how_many = 64; + pair_prod_params.chi_phot_min = default_chi_phot_min; + pair_prod_params.chi_phot_max = default_chi_phot_max; + pair_prod_params.chi_phot_how_many = default_chi_phot_how_many; + pair_prod_params.frac_how_many = default_frac_how_many; const auto vals = amrex::Gpu::DeviceVector<amrex::ParticleReal>{ 0.00000e+00_prt, 0.00000e+00_prt, 0.00000e+00_prt, 0.00000e+00_prt, diff --git a/Source/Particles/ElementaryProcess/QEDInternals/QuantumSyncEngineWrapper.cpp b/Source/Particles/ElementaryProcess/QEDInternals/QuantumSyncEngineWrapper.cpp index e93d757a3..c7b39a6fb 100644 --- a/Source/Particles/ElementaryProcess/QEDInternals/QuantumSyncEngineWrapper.cpp +++ b/Source/Particles/ElementaryProcess/QEDInternals/QuantumSyncEngineWrapper.cpp @@ -158,10 +158,14 @@ void QuantumSynchrotronEngine::compute_lookup_tables ( void QuantumSynchrotronEngine::init_builtin_dndt_table() { + constexpr auto default_chi_part_min = 1.0e-3_prt; + constexpr auto default_chi_part_max = 200.0_prt; + constexpr auto default_chi_part_how_many = 64; + QS_dndt_table_params dndt_params; - dndt_params.chi_part_min = 1.0e-3_prt; - dndt_params.chi_part_max = 200.0_prt; - dndt_params.chi_part_how_many = 64; + dndt_params.chi_part_min = default_chi_part_min; + dndt_params.chi_part_max = default_chi_part_max; + dndt_params.chi_part_how_many = default_chi_part_how_many; const auto vals = amrex::Gpu::DeviceVector<amrex::ParticleReal>{ @@ -190,12 +194,18 @@ void QuantumSynchrotronEngine::init_builtin_dndt_table() void QuantumSynchrotronEngine::init_builtin_phot_em_table() { + constexpr auto default_chi_part_min = 1.0e-3_prt; + constexpr auto default_chi_part_max = 200.0_prt; + constexpr auto default_frac_min = 1.0e-12_prt; + constexpr auto default_chi_part_how_many = 64; + constexpr auto default_frac_how_many = 64; + QS_phot_em_table_params phot_em_params; - phot_em_params.chi_part_min = 1.0e-3_prt; - phot_em_params.chi_part_max = 200.0_prt; - phot_em_params.frac_min = 1.0e-12_prt; - phot_em_params.chi_part_how_many = 64; - phot_em_params.frac_how_many = 64; + phot_em_params.chi_part_min = default_chi_part_min; + phot_em_params.chi_part_max = default_chi_part_max; + phot_em_params.frac_min = default_frac_min; + phot_em_params.chi_part_how_many = default_chi_part_how_many; + phot_em_params.frac_how_many = default_frac_how_many; const auto vals = amrex::Gpu::DeviceVector<amrex::ParticleReal>{ diff --git a/Source/Particles/Gather/GetExternalFields.cpp b/Source/Particles/Gather/GetExternalFields.cpp index 6f5c4cea2..9bf2c7981 100644 --- a/Source/Particles/Gather/GetExternalFields.cpp +++ b/Source/Particles/Gather/GetExternalFields.cpp @@ -53,17 +53,19 @@ GetExternalEBField::GetExternalEBField (const WarpXParIter& a_pti, int a_offset) if (mypc.m_E_ext_particle_s == "parse_e_ext_particle_function") { m_Etype = ExternalFieldInitType::Parser; - m_Exfield_partparser = mypc.m_Ex_particle_parser->compile<4>(); - m_Eyfield_partparser = mypc.m_Ey_particle_parser->compile<4>(); - m_Ezfield_partparser = mypc.m_Ez_particle_parser->compile<4>(); + constexpr auto num_arguments = 4; //x,y,z,t + m_Exfield_partparser = mypc.m_Ex_particle_parser->compile<num_arguments>(); + m_Eyfield_partparser = mypc.m_Ey_particle_parser->compile<num_arguments>(); + m_Ezfield_partparser = mypc.m_Ez_particle_parser->compile<num_arguments>(); } if (mypc.m_B_ext_particle_s == "parse_b_ext_particle_function") { m_Btype = ExternalFieldInitType::Parser; - m_Bxfield_partparser = mypc.m_Bx_particle_parser->compile<4>(); - m_Byfield_partparser = mypc.m_By_particle_parser->compile<4>(); - m_Bzfield_partparser = mypc.m_Bz_particle_parser->compile<4>(); + constexpr auto num_arguments = 4; //x,y,z,t + m_Bxfield_partparser = mypc.m_Bx_particle_parser->compile<num_arguments>(); + m_Byfield_partparser = mypc.m_By_particle_parser->compile<num_arguments>(); + m_Bzfield_partparser = mypc.m_Bz_particle_parser->compile<num_arguments>(); } if (mypc.m_E_ext_particle_s == "repeated_plasma_lens" || diff --git a/Source/Particles/ParticleBoundaryBuffer.cpp b/Source/Particles/ParticleBoundaryBuffer.cpp index 7877e33d3..f1ee10593 100644 --- a/Source/Particles/ParticleBoundaryBuffer.cpp +++ b/Source/Particles/ParticleBoundaryBuffer.cpp @@ -74,24 +74,41 @@ ParticleBoundaryBuffer::ParticleBoundaryBuffer () m_do_boundary_buffer[i].resize(numSpecies(), 0); } +#if defined(WARPX_DIM_1D_Z) + constexpr auto idx_zlo = 0; + constexpr auto idx_zhi = 1; +#elif defined(WARPX_DIM_XZ) || defined(WARPX_DIM_RZ) + constexpr auto idx_xlo = 0; + constexpr auto idx_xhi = 1; + constexpr auto idx_zlo = 2; + constexpr auto idx_zhi = 3; +#else + constexpr auto idx_xlo = 0; + constexpr auto idx_xhi = 1; + constexpr auto idx_ylo = 2; + constexpr auto idx_yhi = 3; + constexpr auto idx_zlo = 4; + constexpr auto idx_zhi = 5; +#endif + for (int ispecies = 0; ispecies < numSpecies(); ++ispecies) { amrex::ParmParse pp_species(getSpeciesNames()[ispecies]); #if defined(WARPX_DIM_1D_Z) - pp_species.query("save_particles_at_zlo", m_do_boundary_buffer[0][ispecies]); - pp_species.query("save_particles_at_zhi", m_do_boundary_buffer[1][ispecies]); + pp_species.query("save_particles_at_zlo", m_do_boundary_buffer[idx_zlo][ispecies]); + pp_species.query("save_particles_at_zhi", m_do_boundary_buffer[idx_zhi][ispecies]); #elif defined(WARPX_DIM_XZ) || defined(WARPX_DIM_RZ) - pp_species.query("save_particles_at_xlo", m_do_boundary_buffer[0][ispecies]); - pp_species.query("save_particles_at_xhi", m_do_boundary_buffer[1][ispecies]); - pp_species.query("save_particles_at_zlo", m_do_boundary_buffer[2][ispecies]); - pp_species.query("save_particles_at_zhi", m_do_boundary_buffer[3][ispecies]); + pp_species.query("save_particles_at_xlo", m_do_boundary_buffer[idx_xlo][ispecies]); + pp_species.query("save_particles_at_xhi", m_do_boundary_buffer[idx_xhi][ispecies]); + pp_species.query("save_particles_at_zlo", m_do_boundary_buffer[idx_zlo][ispecies]); + pp_species.query("save_particles_at_zhi", m_do_boundary_buffer[idx_zhi][ispecies]); #else - pp_species.query("save_particles_at_xlo", m_do_boundary_buffer[0][ispecies]); - pp_species.query("save_particles_at_xhi", m_do_boundary_buffer[1][ispecies]); - pp_species.query("save_particles_at_ylo", m_do_boundary_buffer[2][ispecies]); - pp_species.query("save_particles_at_yhi", m_do_boundary_buffer[3][ispecies]); - pp_species.query("save_particles_at_zlo", m_do_boundary_buffer[4][ispecies]); - pp_species.query("save_particles_at_zhi", m_do_boundary_buffer[5][ispecies]); + pp_species.query("save_particles_at_xlo", m_do_boundary_buffer[idx_xlo][ispecies]); + pp_species.query("save_particles_at_xhi", m_do_boundary_buffer[idx_xhi][ispecies]); + pp_species.query("save_particles_at_ylo", m_do_boundary_buffer[idx_ylo][ispecies]); + pp_species.query("save_particles_at_yhi", m_do_boundary_buffer[idx_yhi][ispecies]); + pp_species.query("save_particles_at_zlo", m_do_boundary_buffer[idx_zlo][ispecies]); + pp_species.query("save_particles_at_zhi", m_do_boundary_buffer[idx_zhi][ispecies]); #endif #ifdef AMREX_USE_EB pp_species.query("save_particles_at_eb", m_do_boundary_buffer[AMREX_SPACEDIM*2][ispecies]); @@ -103,20 +120,20 @@ ParticleBoundaryBuffer::ParticleBoundaryBuffer () } #if defined(WARPX_DIM_1D_Z) - m_boundary_names[0] = "zlo"; - m_boundary_names[1] = "zhi"; + m_boundary_names[idx_zlo] = "zlo"; + m_boundary_names[idx_zhi] = "zhi"; #elif defined(WARPX_DIM_XZ) || defined(WARPX_DIM_RZ) - m_boundary_names[0] = "xlo"; - m_boundary_names[1] = "xhi"; - m_boundary_names[2] = "zlo"; - m_boundary_names[3] = "zhi"; + m_boundary_names[idx_xlo] = "xlo"; + m_boundary_names[idx_xhi] = "xhi"; + m_boundary_names[idx_zlo] = "zlo"; + m_boundary_names[idx_zhi] = "zhi"; #else - m_boundary_names[0] = "xlo"; - m_boundary_names[1] = "xhi"; - m_boundary_names[2] = "ylo"; - m_boundary_names[3] = "yhi"; - m_boundary_names[4] = "zlo"; - m_boundary_names[5] = "zhi"; + m_boundary_names[idx_xlo] = "xlo"; + m_boundary_names[idx_xhi] = "xhi"; + m_boundary_names[idx_ylo] = "ylo"; + m_boundary_names[idx_yhi] = "yhi"; + m_boundary_names[idx_zlo] = "zlo"; + m_boundary_names[idx_zhi] = "zhi"; #endif #ifdef AMREX_USE_EB m_boundary_names[AMREX_SPACEDIM*2] = "eb"; |