aboutsummaryrefslogtreecommitdiff
path: root/Source/Particles/MultiParticleContainer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Particles/MultiParticleContainer.cpp')
-rw-r--r--Source/Particles/MultiParticleContainer.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/Source/Particles/MultiParticleContainer.cpp b/Source/Particles/MultiParticleContainer.cpp
index fca22daa2..6b3a34e38 100644
--- a/Source/Particles/MultiParticleContainer.cpp
+++ b/Source/Particles/MultiParticleContainer.cpp
@@ -617,6 +617,38 @@ MultiParticleContainer::doFieldIonization ()
} // pc_source
}
+void
+MultiParticleContainer::doCoulombCollisions ()
+{
+ BL_PROFILE("MPC::doCoulombCollisions");
+
+ // At this point, the code always collides the first and second species
+ // TODO: Read the user input to read the different types of collisions requested
+ // and loop over all types of collisions, selecting each time the
+ // two types of species that will be collided
+ auto& species1 = allcontainers[0];
+ auto& species2 = allcontainers[1];
+
+ // Enable tiling
+ MFItInfo info;
+ if (Gpu::notInLaunchRegion()) info.EnableTiling(species1->tile_size);
+
+ // Loop over refinement levels
+ for (int lev = 0; lev <= species1->finestLevel(); ++lev){
+
+ // Loop over all grids/tiles at this level
+#ifdef _OPENMP
+ info.SetDynamic(true);
+ #pragma omp parallel
+#endif
+ for (MFIter mfi = species1->MakeMFIter(lev, info); mfi.isValid(); ++mfi){
+
+ doCoulombCollisionsWithinTile( lev, mfi, species1, species2 );
+
+ }
+ }
+}
+
#ifdef WARPX_QED
void MultiParticleContainer::InitQED ()
{