diff options
author | 2023-03-27 17:44:20 -0700 | |
---|---|---|
committer | 2023-03-28 00:44:20 +0000 | |
commit | d066a2dbd8359131b0e1846fd0c173d27e3aa862 (patch) | |
tree | 3854201dc7f1b0b646b6874f3df394582213e713 /Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmRZ.cpp | |
parent | d023933e3966021ee2afc88eed62c1d8748ced0a (diff) | |
download | WarpX-d066a2dbd8359131b0e1846fd0c173d27e3aa862.tar.gz WarpX-d066a2dbd8359131b0e1846fd0c173d27e3aa862.tar.zst WarpX-d066a2dbd8359131b0e1846fd0c173d27e3aa862.zip |
Fix bugs related to azimuthal modes for multi-J algo in RZ geometry (#3764)
* Bug fix: loop over all azimuthal modes taking into account the shift `mode*n_fields`
* Bug fix: added missing speed of light factor in coefficient `c2`
* Bug fix: added missing `mode` as fourth optional component in `X5(i,j,k,mode)` and `X6(i,j,k,mode)` coefficients, used only with RZ multi-J averaged PSATD
* Reset benchmark of `multi_J_rz_psatd`
Diffstat (limited to 'Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmRZ.cpp')
-rw-r--r-- | Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmRZ.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmRZ.cpp b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmRZ.cpp index 46ac2c0b8..5b024b425 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmRZ.cpp +++ b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithmRZ.cpp @@ -400,7 +400,7 @@ void PsatdAlgorithmRZ::InitializeSpectralCoefficients (SpectralFieldDataRZ const if (time_averaging && J_linear) { - constexpr amrex::Real c2 = PhysConst::c; + constexpr amrex::Real c2 = PhysConst::c * PhysConst::c; const amrex::Real dt3 = dt * dt * dt; const amrex::Real om = c * k_norm; const amrex::Real om2 = om * om; @@ -408,14 +408,14 @@ void PsatdAlgorithmRZ::InitializeSpectralCoefficients (SpectralFieldDataRZ const if (om != 0.0_rt) { - X5(i,j,k) = c2 / ep0 * (S_ck(i,j,k) / om2 - (1._rt - C(i,j,k)) / (om4 * dt) + X5(i,j,k,mode) = c2 / ep0 * (S_ck(i,j,k,mode) / om2 - (1._rt - C(i,j,k,mode)) / (om4 * dt) - 0.5_rt * dt / om2); - X6(i,j,k) = c2 / ep0 * ((1._rt - C(i,j,k)) / (om4 * dt) - 0.5_rt * dt / om2); + X6(i,j,k,mode) = c2 / ep0 * ((1._rt - C(i,j,k,mode)) / (om4 * dt) - 0.5_rt * dt / om2); } else { - X5(i,j,k) = - c2 * dt3 / (8._rt * ep0); - X6(i,j,k) = - c2 * dt3 / (24._rt * ep0); + X5(i,j,k,mode) = - c2 * dt3 / (8._rt * ep0); + X6(i,j,k,mode) = - c2 * dt3 / (24._rt * ep0); } } }); |