diff options
Diffstat (limited to 'Source/Evolve/WarpXEvolve.cpp')
-rw-r--r-- | Source/Evolve/WarpXEvolve.cpp | 45 |
1 files changed, 39 insertions, 6 deletions
diff --git a/Source/Evolve/WarpXEvolve.cpp b/Source/Evolve/WarpXEvolve.cpp index 87d39ffc5..72621e52c 100644 --- a/Source/Evolve/WarpXEvolve.cpp +++ b/Source/Evolve/WarpXEvolve.cpp @@ -267,7 +267,8 @@ WarpX::OneStep_nosub (Real cur_time) // Loop over species. For each ionizable species, create particles in // product species. - mypc->doFieldIonization(); + doFieldIonization(); + mypc->doCoulombCollisions(); #ifdef WARPX_QED mypc->doQEDSchwinger(); @@ -298,8 +299,7 @@ WarpX::OneStep_nosub (Real cur_time) #endif #ifdef WARPX_QED - //Do QED processes - mypc->doQedEvents(); + doQEDEvents(); #endif // Synchronize J and rho @@ -408,11 +408,10 @@ WarpX::OneStep_sub1 (Real curtime) // TODO: we could save some charge depositions // Loop over species. For each ionizable species, create particles in // product species. - mypc->doFieldIonization(); + doFieldIonization(); #ifdef WARPX_QED - //Do QED processes - mypc->doQedEvents(); + doQEDEvents(); #endif AMREX_ALWAYS_ASSERT_WITH_MESSAGE(finest_level == 1, "Must have exactly two levels"); @@ -550,6 +549,40 @@ WarpX::OneStep_sub1 (Real curtime) } void +WarpX::doFieldIonization () +{ + for (int lev = 0; lev <= finest_level; ++lev) { + doFieldIonization(lev); + } +} + +void +WarpX::doFieldIonization (int lev) +{ + mypc->doFieldIonization(lev, + *Efield_aux[lev][0],*Efield_aux[lev][1],*Efield_aux[lev][2], + *Bfield_aux[lev][0],*Bfield_aux[lev][1],*Bfield_aux[lev][2]); +} + +#ifdef WARPX_QED +void +WarpX::doQEDEvents () +{ + for (int lev = 0; lev <= finest_level; ++lev) { + doQEDEvents(lev); + } +} + +void +WarpX::doQEDEvents (int lev) +{ + mypc->doQedEvents(lev, + *Efield_aux[lev][0],*Efield_aux[lev][1],*Efield_aux[lev][2], + *Bfield_aux[lev][0],*Bfield_aux[lev][1],*Bfield_aux[lev][2]); +} +#endif + +void WarpX::PushParticlesandDepose (amrex::Real cur_time) { // Evolve particles to p^{n+1/2} and x^{n+1} |