diff options
author | 2018-09-23 21:14:01 -0700 | |
---|---|---|
committer | 2018-10-03 14:38:27 -0700 | |
commit | fe08f1bab97b487a63f9aa054b1f10b3b2edcfb7 (patch) | |
tree | 21257b26728725dd56f2bb5db29c42a26d007f7d /Source/ParticleContainer.cpp | |
parent | d4f2e2fb2339b1f6c679cf25dcb8016de872099b (diff) | |
download | WarpX-fe08f1bab97b487a63f9aa054b1f10b3b2edcfb7.tar.gz WarpX-fe08f1bab97b487a63f9aa054b1f10b3b2edcfb7.tar.zst WarpX-fe08f1bab97b487a63f9aa054b1f10b3b2edcfb7.zip |
add particles.deposit_on_main_grid option to allow deposit some particles to the main grid
Diffstat (limited to 'Source/ParticleContainer.cpp')
-rw-r--r-- | Source/ParticleContainer.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/Source/ParticleContainer.cpp b/Source/ParticleContainer.cpp index c40e0c1bb..aa6759496 100644 --- a/Source/ParticleContainer.cpp +++ b/Source/ParticleContainer.cpp @@ -23,6 +23,7 @@ MultiParticleContainer::MultiParticleContainer (AmrCore* amr_core) else if (species_types[i] == PCTypes::RigidInjected) { allcontainers[i].reset(new RigidInjectedParticleContainer(amr_core, i, species_names[i])); } + allcontainers[i]->deposit_on_main_grid = deposit_on_main_grid[i]; } if (WarpX::use_laser) { allcontainers[n-1].reset(new LaserParticleContainer(amr_core,n-1)); @@ -44,6 +45,16 @@ MultiParticleContainer::ReadParameters () pp.getarr("species_names", species_names); BL_ASSERT(species_names.size() == nspecies); + deposit_on_main_grid.resize(nspecies, 0); + std::vector<std::string> tmp; + pp.queryarr("deposit_on_main_grid", tmp); + for (auto const& name : tmp) { + auto it = std::find(species_names.begin(), species_names.end(), name); + AMREX_ALWAYS_ASSERT_WITH_MESSAGE(it != species_names.end(), "ERROR: species in particles.deposit_on_main_grid must be part of particles.species_names"); + int i = std::distance(species_names.begin(), it); + deposit_on_main_grid[i] = 1; + } + species_types.resize(nspecies, PCTypes::Physical); std::vector<std::string> rigid_injected_species; |