diff options
author | 2017-09-15 15:54:49 -0700 | |
---|---|---|
committer | 2017-09-15 15:54:49 -0700 | |
commit | 3d845c71120a4c39e87a6efff06b1d6cc6b510bf (patch) | |
tree | 2f3219b56748fe0ebd49cbad9c3973e6ad9f2f7e /Source/PhysicalParticleContainer.cpp | |
parent | eb7e7add910e0e35b1dd53c2236e401153cf1f41 (diff) | |
download | WarpX-3d845c71120a4c39e87a6efff06b1d6cc6b510bf.tar.gz WarpX-3d845c71120a4c39e87a6efff06b1d6cc6b510bf.tar.zst WarpX-3d845c71120a4c39e87a6efff06b1d6cc6b510bf.zip |
Fix OMP bug in AddParticles
Diffstat (limited to 'Source/PhysicalParticleContainer.cpp')
-rw-r--r-- | Source/PhysicalParticleContainer.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/Source/PhysicalParticleContainer.cpp b/Source/PhysicalParticleContainer.cpp index e8196eedc..c221ddd84 100644 --- a/Source/PhysicalParticleContainer.cpp +++ b/Source/PhysicalParticleContainer.cpp @@ -103,12 +103,18 @@ PhysicalParticleContainer::AddParticles (int lev, Box part_box) #elif BL_SPACEDIM==2 scale_fac = dx[0]*dx[2]/num_ppc; #endif - + + // First touch all tiles in the map in serial + for (MFIter mfi = MakeMFIter(lev); mfi.isValid(); ++mfi) { + const int grid_id = mfi.index(); + const int tile_id = mfi.LocalTileIndex(); + GetParticles(lev)[std::make_pair(grid_id, tile_id)]; + } + #ifdef _OPENMP #pragma omp parallel #endif - { - + { std::array<Real,PIdx::nattribs> attribs; attribs.fill(0.0); |