From 1c2ee5542fbcbffc24fb0c2df3ba2102cd931870 Mon Sep 17 00:00:00 2001 From: Yin-YinjianZhao Date: Fri, 8 Nov 2019 15:12:14 -0800 Subject: Add CoulombCollisions files; Compile successfully. --- Source/Particles/MultiParticleContainer.cpp | 32 +++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'Source/Particles/MultiParticleContainer.cpp') 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 () { -- cgit v1.2.3