aboutsummaryrefslogtreecommitdiff
path: root/Source/FieldSolver/FiniteDifferenceSolver/EvolveE.cpp
diff options
context:
space:
mode:
authorGravatar David Grote <grote1@llnl.gov> 2020-03-13 15:17:25 -0700
committerGravatar GitHub <noreply@github.com> 2020-03-13 15:17:25 -0700
commitfe0f8a45cd7ceab2b4797135fd14fb6f130041e4 (patch)
treec0f77dc573b5b6a32e9463f784af5fb56285bba6 /Source/FieldSolver/FiniteDifferenceSolver/EvolveE.cpp
parentf1c465c05a6b0376a563fffecb660f3bf8166ba0 (diff)
downloadWarpX-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.cpp26
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
}
}