aboutsummaryrefslogtreecommitdiff
path: root/Source/Particles/WarpXParticleContainer.cpp
diff options
context:
space:
mode:
authorGravatar Andrew Myers <atmyers2@gmail.com> 2020-01-31 13:12:22 -0800
committerGravatar Andrew Myers <atmyers2@gmail.com> 2020-01-31 13:12:22 -0800
commitfad21f679dc5392a67750b66601c7f73923e4ca0 (patch)
tree89e2d0524da80ce8f67f8a6c96f876d08b08546f /Source/Particles/WarpXParticleContainer.cpp
parent090e78f41301022568ee7df7ecf5e3f4ee43c7e0 (diff)
downloadWarpX-fad21f679dc5392a67750b66601c7f73923e4ca0.tar.gz
WarpX-fad21f679dc5392a67750b66601c7f73923e4ca0.tar.zst
WarpX-fad21f679dc5392a67750b66601c7f73923e4ca0.zip
on second thought, implement this as a member function
Diffstat (limited to 'Source/Particles/WarpXParticleContainer.cpp')
-rw-r--r--Source/Particles/WarpXParticleContainer.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/Source/Particles/WarpXParticleContainer.cpp b/Source/Particles/WarpXParticleContainer.cpp
index 7628cfd85..3dad0fd33 100644
--- a/Source/Particles/WarpXParticleContainer.cpp
+++ b/Source/Particles/WarpXParticleContainer.cpp
@@ -815,6 +815,25 @@ WarpXParticleContainer::PushX (int lev, amrex::Real dt)
}
}
+// When using runtime components, AMReX requires to touch all tiles
+// in serial and create particles tiles with runtime components if
+// they do not exist (or if they were defined by default, i.e.,
+// without runtime component).
+void WarpXParticleContainer::defineAllParticleTiles () noexcept
+{
+ tmp_particle_data.resize(finestLevel()+1);
+ for (int lev = 0; lev <= finestLevel(); ++lev)
+ {
+ for (auto mfi = MakeMFIter(lev); mfi.isValid(); ++mfi)
+ {
+ const int grid_id = mfi.index();
+ const int tile_id = mfi.LocalTileIndex();
+ tmp_particle_data[lev][std::make_pair(grid_id,tile_id)];
+ DefineAndReturnParticleTile(lev, grid_id, tile_id);
+ }
+ }
+}
+
// This function is called in Redistribute, just after locate
void
WarpXParticleContainer::particlePostLocate(ParticleType& p,