aboutsummaryrefslogtreecommitdiff
path: root/Source/Evolve/WarpXEvolve.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Evolve/WarpXEvolve.cpp')
-rw-r--r--Source/Evolve/WarpXEvolve.cpp37
1 files changed, 15 insertions, 22 deletions
diff --git a/Source/Evolve/WarpXEvolve.cpp b/Source/Evolve/WarpXEvolve.cpp
index ad3ec8483..547f632e9 100644
--- a/Source/Evolve/WarpXEvolve.cpp
+++ b/Source/Evolve/WarpXEvolve.cpp
@@ -545,18 +545,14 @@ WarpX::OneStep_multiJ (const amrex::Real cur_time)
PSATDForwardTransformRho(0, 1);
}
- // 4) Deposit J if needed
- if (WarpX::J_linear_in_time)
- {
- // Deposit J at relative time -dt with time step dt
- // (dt[0] denotes the time step on mesh refinement level 0)
- auto& current = (WarpX::do_current_centering) ? current_fp_nodal : current_fp;
- mypc->DepositCurrent(current, dt[0], -dt[0]);
- // Filter, exchange boundary, and interpolate across levels
- SyncCurrent();
- // Forward FFT of J
- PSATDForwardTransformJ();
- }
+ // 4) Deposit J at relative time -dt with time step dt
+ // (dt[0] denotes the time step on mesh refinement level 0)
+ auto& current = (WarpX::do_current_centering) ? current_fp_nodal : current_fp;
+ mypc->DepositCurrent(current, dt[0], -dt[0]);
+ // Filter, exchange boundary, and interpolate across levels
+ SyncCurrent();
+ // Forward FFT of J
+ PSATDForwardTransformJ();
// Number of depositions for multi-J scheme
const int n_depose = WarpX::do_multi_J_n_depositions;
@@ -569,19 +565,13 @@ WarpX::OneStep_multiJ (const amrex::Real cur_time)
// Loop over multi-J depositions
for (int i_depose = 0; i_depose < n_loop; i_depose++)
{
- // Move rho deposited previously, from new to old
- PSATDMoveRhoNewToRhoOld();
-
// Move J deposited previously, from new to old
- // (when using assumption of J linear in time)
- if (WarpX::J_linear_in_time) PSATDMoveJNewToJOld();
+ PSATDMoveJNewToJOld();
- const amrex::Real t_depose = (WarpX::J_linear_in_time) ?
- (i_depose-n_depose+1)*sub_dt : (i_depose-n_depose+0.5)*sub_dt;
+ const amrex::Real t_depose = (i_depose-n_depose+1)*sub_dt;
// Deposit new J at relative time t_depose with time step dt
// (dt[0] denotes the time step on mesh refinement level 0)
- auto& current = (WarpX::do_current_centering) ? current_fp_nodal : current_fp;
mypc->DepositCurrent(current, dt[0], t_depose);
// Filter, exchange boundary, and interpolate across levels
SyncCurrent();
@@ -591,8 +581,11 @@ WarpX::OneStep_multiJ (const amrex::Real cur_time)
// Deposit new rho
if (WarpX::update_with_rho)
{
- // Deposit rho at relative time (i_depose-n_depose+1)*sub_dt
- mypc->DepositCharge(rho_fp, (i_depose-n_depose+1)*sub_dt);
+ // Move rho deposited previously, from new to old
+ PSATDMoveRhoNewToRhoOld();
+
+ // Deposit rho at relative time t_depose
+ mypc->DepositCharge(rho_fp, t_depose);
// Filter, exchange boundary, and interpolate across levels
SyncRho();
// Forward FFT of rho_new