diff options
author | 2020-03-13 15:17:25 -0700 | |
---|---|---|
committer | 2020-03-13 15:17:25 -0700 | |
commit | fe0f8a45cd7ceab2b4797135fd14fb6f130041e4 (patch) | |
tree | c0f77dc573b5b6a32e9463f784af5fb56285bba6 /Source/FieldSolver/FiniteDifferenceSolver/EvolveE.cpp | |
parent | f1c465c05a6b0376a563fffecb660f3bf8166ba0 (diff) | |
download | WarpX-fe0f8a45cd7ceab2b4797135fd14fb6f130041e4.tar.gz WarpX-fe0f8a45cd7ceab2b4797135fd14fb6f130041e4.tar.zst WarpX-fe0f8a45cd7ceab2b4797135fd14fb6f130041e4.zip |
Fixed FDTD coefficients of E push from F (#804)
Diffstat (limited to 'Source/FieldSolver/FiniteDifferenceSolver/EvolveE.cpp')
-rw-r--r-- | Source/FieldSolver/FiniteDifferenceSolver/EvolveE.cpp | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/Source/FieldSolver/FiniteDifferenceSolver/EvolveE.cpp b/Source/FieldSolver/FiniteDifferenceSolver/EvolveE.cpp index ebe3dfcdd..22067b7b6 100644 --- a/Source/FieldSolver/FiniteDifferenceSolver/EvolveE.cpp +++ b/Source/FieldSolver/FiniteDifferenceSolver/EvolveE.cpp @@ -137,13 +137,13 @@ void FiniteDifferenceSolver::EvolveECartesian ( amrex::ParallelFor(tex, tey, tez, [=] AMREX_GPU_DEVICE (int i, int j, int k){ - Ex(i, j, k) += T_Algo::UpwardDx(F, coefs_x, n_coefs_x, i, j, k); + Ex(i, j, k) += c2 * dt * T_Algo::UpwardDx(F, coefs_x, n_coefs_x, i, j, k); }, [=] AMREX_GPU_DEVICE (int i, int j, int k){ - Ey(i, j, k) += T_Algo::UpwardDy(F, coefs_y, n_coefs_y, i, j, k); + Ey(i, j, k) += c2 * dt * T_Algo::UpwardDy(F, coefs_y, n_coefs_y, i, j, k); }, [=] AMREX_GPU_DEVICE (int i, int j, int k){ - Ez(i, j, k) += T_Algo::UpwardDz(F, coefs_z, n_coefs_z, i, j, k); + Ez(i, j, k) += c2 * dt * T_Algo::UpwardDz(F, coefs_z, n_coefs_z, i, j, k); } ); @@ -303,10 +303,10 @@ void FiniteDifferenceSolver::EvolveECylindrical ( amrex::ParallelFor(ter, tet, tez, [=] AMREX_GPU_DEVICE (int i, int j, int k){ - Er(i, j, 0, 0) += T_Algo::UpwardDr(F, coefs_r, n_coefs_r, i, j, 0, 0); + Er(i, j, 0, 0) += c2 * dt * T_Algo::UpwardDr(F, coefs_r, n_coefs_r, i, j, 0, 0); for (int m=1; m<nmodes; m++) { // Higher-order modes - Er(i, j, 0, 2*m-1) += T_Algo::UpwardDr(F, coefs_r, n_coefs_r, i, j, 0, 2*m-1); // Real part - Er(i, j, 0, 2*m ) += T_Algo::UpwardDr(F, coefs_r, n_coefs_r, i, j, 0, 2*m ); // Imaginary part + Er(i, j, 0, 2*m-1) += c2 * dt * T_Algo::UpwardDr(F, coefs_r, n_coefs_r, i, j, 0, 2*m-1); // Real part + Er(i, j, 0, 2*m ) += c2 * dt * T_Algo::UpwardDr(F, coefs_r, n_coefs_r, i, j, 0, 2*m ); // Imaginary part } }, [=] AMREX_GPU_DEVICE (int i, int j, int k){ @@ -314,24 +314,24 @@ void FiniteDifferenceSolver::EvolveECylindrical ( Real const r = rmin + i*dr; // r on a nodal grid (Et is nodal in r) if (r != 0){ // Off-axis, regular Maxwell equations for (int m=1; m<nmodes; m++) { // Higher-order modes - Et(i, j, 0, 2*m-1) += m * F(i, j, 0, 2*m )/r; // Real part - Et(i, j, 0, 2*m ) += -m * F(i, j, 0, 2*m-1)/r; // Imaginary part + Et(i, j, 0, 2*m-1) += c2 * dt * m * F(i, j, 0, 2*m )/r; // Real part + Et(i, j, 0, 2*m ) += c2 * dt * -m * F(i, j, 0, 2*m-1)/r; // Imaginary part } } else { // r==0: on-axis corrections // For m==1, F is linear in r, for small r // Therefore, the formula below regularizes the singularity if (nmodes >= 2) { // needs to have at least m=0 and m=1 int const m=1; - Et(i, j, 0, 2*m-1) += m * F(i+1, j, 0, 2*m )/dr; // Real part - Et(i, j, 0, 2*m ) += -m * F(i+1, j, 0, 2*m-1)/dr; // Imaginary part + Et(i, j, 0, 2*m-1) += c2 * dt * m * F(i+1, j, 0, 2*m )/dr; // Real part + Et(i, j, 0, 2*m ) += c2 * dt * -m * F(i+1, j, 0, 2*m-1)/dr; // Imaginary part } } }, [=] AMREX_GPU_DEVICE (int i, int j, int k){ - Ez(i, j, 0, 0) += T_Algo::UpwardDz(F, coefs_z, n_coefs_z, i, j, 0, 0); + Ez(i, j, 0, 0) += c2 * dt * T_Algo::UpwardDz(F, coefs_z, n_coefs_z, i, j, 0, 0); for (int m=1; m<nmodes; m++) { // Higher-order modes - Ez(i, j, 0, 2*m-1) += T_Algo::UpwardDz(F, coefs_z, n_coefs_z, i, j, 0, 2*m-1); // Real part - Ez(i, j, 0, 2*m ) += T_Algo::UpwardDz(F, coefs_z, n_coefs_z, i, j, 0, 2*m ); // Imaginary part + Ez(i, j, 0, 2*m-1) += c2 * dt * T_Algo::UpwardDz(F, coefs_z, n_coefs_z, i, j, 0, 2*m-1); // Real part + Ez(i, j, 0, 2*m ) += c2 * dt * T_Algo::UpwardDz(F, coefs_z, n_coefs_z, i, j, 0, 2*m ); // Imaginary part } } |