aboutsummaryrefslogtreecommitdiff
path: root/Source/Evolve/WarpXEvolve.cpp
diff options
context:
space:
mode:
authorGravatar Edoardo Zoni <59625522+EZoni@users.noreply.github.com> 2023-04-10 16:19:38 -0700
committerGravatar GitHub <noreply@github.com> 2023-04-10 16:19:38 -0700
commitb63351bf5f0a1b794c8e0b1eaf334f4a0a06a706 (patch)
tree13391dae30967bc32030e86853ad0c875cad477d /Source/Evolve/WarpXEvolve.cpp
parent81d4b5b58475435f0c44a3cd56a07681e0912dc0 (diff)
downloadWarpX-b63351bf5f0a1b794c8e0b1eaf334f4a0a06a706.tar.gz
WarpX-b63351bf5f0a1b794c8e0b1eaf334f4a0a06a706.tar.zst
WarpX-b63351bf5f0a1b794c8e0b1eaf334f4a0a06a706.zip
PSATD: call FFT of rho with explicit spectral index (#3720)
Diffstat (limited to 'Source/Evolve/WarpXEvolve.cpp')
-rw-r--r--Source/Evolve/WarpXEvolve.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/Source/Evolve/WarpXEvolve.cpp b/Source/Evolve/WarpXEvolve.cpp
index 742669cd4..859ba2145 100644
--- a/Source/Evolve/WarpXEvolve.cpp
+++ b/Source/Evolve/WarpXEvolve.cpp
@@ -549,6 +549,9 @@ WarpX::OneStep_multiJ (const amrex::Real cur_time)
"multi-J algorithm not implemented for FDTD"
);
+ const int rho_mid = spectral_solver_fp[0]->m_spectral_index.rho_mid;
+ const int rho_new = spectral_solver_fp[0]->m_spectral_index.rho_new;
+
// Push particle from x^{n} to x^{n+1}
// from p^{n-1/2} to p^{n+1/2}
const bool skip_deposition = true;
@@ -574,7 +577,7 @@ WarpX::OneStep_multiJ (const amrex::Real cur_time)
// Filter, exchange boundary, and interpolate across levels
SyncRho();
// Forward FFT of rho
- PSATDForwardTransformRho(rho_fp, rho_cp, 0, 1);
+ PSATDForwardTransformRho(rho_fp, rho_cp, 0, rho_new);
}
// 4) Deposit J at relative time -dt with time step dt
@@ -638,7 +641,8 @@ WarpX::OneStep_multiJ (const amrex::Real cur_time)
// Filter, exchange boundary, and interpolate across levels
SyncRho();
// Forward FFT of rho
- PSATDForwardTransformRho(rho_fp, rho_cp, 0, 1);
+ const int rho_idx = (rho_in_time == RhoInTime::Linear) ? rho_new : rho_mid;
+ PSATDForwardTransformRho(rho_fp, rho_cp, 0, rho_idx);
}
if (WarpX::current_correction)