aboutsummaryrefslogtreecommitdiff
path: root/Source/Particles/MultiParticleContainer.cpp
diff options
context:
space:
mode:
authorGravatar Remi Lehe <remi.lehe@normalesup.org> 2022-09-20 16:54:42 -0700
committerGravatar GitHub <noreply@github.com> 2022-09-20 23:54:42 +0000
commit71ca75648289904e071b4f6ba6ce8a031ac725f2 (patch)
treefbd8b62d7c6b4ab8e6436a4bffddfcd5f54aebbf /Source/Particles/MultiParticleContainer.cpp
parent5761b4bf998eab84ea0f7e4b132026593f3ddf9f (diff)
downloadWarpX-71ca75648289904e071b4f6ba6ce8a031ac725f2.tar.gz
WarpX-71ca75648289904e071b4f6ba6ce8a031ac725f2.tar.zst
WarpX-71ca75648289904e071b4f6ba6ce8a031ac725f2.zip
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
Diffstat (limited to '')
-rw-r--r--Source/Particles/MultiParticleContainer.cpp16
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");