From 71ca75648289904e071b4f6ba6ce8a031ac725f2 Mon Sep 17 00:00:00 2001 From: Remi Lehe Date: Tue, 20 Sep 2022 16:54:42 -0700 Subject: Add option to deposit laser on main grid (#3235) * Add option to deposit laser on main grid * Use `deposit_on_main_grid` * Update Source/Particles/LaserParticleContainer.cpp * Add documentation * Update documentation --- Source/Particles/MultiParticleContainer.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'Source/Particles/MultiParticleContainer.cpp') 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(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(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 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"); -- cgit v1.2.3