diff options
Diffstat (limited to 'Source/Evolve/WarpXEvolve.cpp')
-rw-r--r-- | Source/Evolve/WarpXEvolve.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/Source/Evolve/WarpXEvolve.cpp b/Source/Evolve/WarpXEvolve.cpp index 39b51b261..e632409f6 100644 --- a/Source/Evolve/WarpXEvolve.cpp +++ b/Source/Evolve/WarpXEvolve.cpp @@ -21,7 +21,6 @@ #include <cmath> #include <limits> - using namespace amrex; void @@ -303,6 +302,7 @@ WarpX::OneStep_nosub (Real cur_time) if (warpx_py_particlescraper) warpx_py_particlescraper(); if (warpx_py_beforedeposition) warpx_py_beforedeposition(); PushParticlesandDepose(cur_time); + if (warpx_py_afterdeposition) warpx_py_afterdeposition(); // Synchronize J and rho @@ -317,7 +317,6 @@ WarpX::OneStep_nosub (Real cur_time) VayDeposition(); } - // At this point, J is up-to-date inside the domain, and E and B are // up-to-date including enough guard cells for first step of the field // solve. @@ -601,17 +600,27 @@ WarpX::PushParticlesandDepose (amrex::Real cur_time) void WarpX::PushParticlesandDepose (int lev, amrex::Real cur_time, DtType a_dt_type) { + // If warpx.do_current_centering = 1, the current is deposited on the nodal MultiFab current_fp_nodal + // and then centered onto the staggered MultiFab current_fp + amrex::MultiFab* current_x = (WarpX::do_current_centering) ? current_fp_nodal[lev][0].get() + : current_fp[lev][0].get(); + amrex::MultiFab* current_y = (WarpX::do_current_centering) ? current_fp_nodal[lev][1].get() + : current_fp[lev][1].get(); + amrex::MultiFab* current_z = (WarpX::do_current_centering) ? current_fp_nodal[lev][2].get() + : current_fp[lev][2].get(); + mypc->Evolve(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], *Efield_avg_aux[lev][0],*Efield_avg_aux[lev][1],*Efield_avg_aux[lev][2], *Bfield_avg_aux[lev][0],*Bfield_avg_aux[lev][1],*Bfield_avg_aux[lev][2], - *current_fp[lev][0],*current_fp[lev][1],*current_fp[lev][2], + *current_x, *current_y, *current_z, current_buf[lev][0].get(), current_buf[lev][1].get(), current_buf[lev][2].get(), rho_fp[lev].get(), charge_buf[lev].get(), Efield_cax[lev][0].get(), Efield_cax[lev][1].get(), Efield_cax[lev][2].get(), Bfield_cax[lev][0].get(), Bfield_cax[lev][1].get(), Bfield_cax[lev][2].get(), cur_time, dt[lev], a_dt_type); + #ifdef WARPX_DIM_RZ // This is called after all particles have deposited their current and charge. ApplyInverseVolumeScalingToCurrentDensity(current_fp[lev][0].get(), current_fp[lev][1].get(), current_fp[lev][2].get(), lev); |