diff options
Diffstat (limited to '')
-rw-r--r-- | Source/Particles/MultiParticleContainer.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/Source/Particles/MultiParticleContainer.cpp b/Source/Particles/MultiParticleContainer.cpp index c6cb9032e..662e0b45f 100644 --- a/Source/Particles/MultiParticleContainer.cpp +++ b/Source/Particles/MultiParticleContainer.cpp @@ -112,6 +112,7 @@ MultiParticleContainer::MultiParticleContainer (AmrCore* amr_core) for (int i = nspecies; i < nspecies+nlasers; ++i) { allcontainers[i] = std::make_unique<LaserParticleContainer>(amr_core, i, lasers_names[i-nspecies]); + allcontainers[i]->m_deposit_on_main_grid = m_laser_deposit_on_main_grid[i-nspecies]; } pc_tmp = std::make_unique<PhysicalParticleContainer>(amr_core); @@ -347,6 +348,21 @@ MultiParticleContainer::ReadParameters () ParmParse pp_lasers("lasers"); pp_lasers.queryarr("names", lasers_names); + auto const nlasers = lasers_names.size(); + // Get lasers to deposit on main grid + m_laser_deposit_on_main_grid.resize(nlasers, false); + std::vector<std::string> tmp; + pp_lasers.queryarr("deposit_on_main_grid", tmp); + for (auto const& name : tmp) { + auto it = std::find(lasers_names.begin(), lasers_names.end(), name); + WARPX_ALWAYS_ASSERT_WITH_MESSAGE( + it != lasers_names.end(), + "laser '" + name + + "' in lasers.deposit_on_main_grid must be part of lasers.lasers_names"); + int i = std::distance(lasers_names.begin(), it); + m_laser_deposit_on_main_grid[i] = true; + } + #ifdef WARPX_QED ParmParse pp_warpx("warpx"); |