diff options
Diffstat (limited to 'Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithm.cpp')
-rw-r--r-- | Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithm.cpp | 232 |
1 files changed, 116 insertions, 116 deletions
diff --git a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithm.cpp b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithm.cpp index bc74a36a2..36e113555 100644 --- a/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithm.cpp +++ b/Source/FieldSolver/SpectralSolver/SpectralAlgorithms/PsatdAlgorithm.cpp @@ -29,6 +29,7 @@ using namespace amrex; PsatdAlgorithm::PsatdAlgorithm( const SpectralKSpace& spectral_kspace, const DistributionMapping& dm, + const SpectralFieldIndex& spectral_index, const int norder_x, const int norder_y, const int norder_z, @@ -40,7 +41,8 @@ PsatdAlgorithm::PsatdAlgorithm( const bool time_averaging, const bool J_linear_in_time) // Initializer list - : SpectralBaseAlgorithm(spectral_kspace, dm, norder_x, norder_y, norder_z, nodal, fill_guards), + : SpectralBaseAlgorithm(spectral_kspace, dm, spectral_index, norder_x, norder_y, norder_z, nodal, fill_guards), + m_spectral_index(spectral_index), // Initialize the centered finite-order modified k vectors: // these are computed always with the assumption of centered grids // (argument nodal = true), for both nodal and staggered simulations @@ -108,6 +110,8 @@ PsatdAlgorithm::pushSpectralFields (SpectralFieldData& f) const const amrex::Real dt = m_dt; + const SpectralFieldIndex& Idx = m_spectral_index; + // Loop over boxes for (amrex::MFIter mfi(f.fields); mfi.isValid(); ++mfi) { @@ -167,24 +171,20 @@ PsatdAlgorithm::pushSpectralFields (SpectralFieldData& f) const // Loop over indices within one box ParallelFor(bx, [=] AMREX_GPU_DEVICE(int i, int j, int k) noexcept { - using Idx = SpectralFieldIndex; - using IdxAvg = SpectralFieldIndexTimeAveraging; - using IdxLin = SpectralFieldIndexJLinearInTime; - // Record old values of the fields to be updated - const Complex Ex_old = fields(i,j,k,Idx::Ex); - const Complex Ey_old = fields(i,j,k,Idx::Ey); - const Complex Ez_old = fields(i,j,k,Idx::Ez); - const Complex Bx_old = fields(i,j,k,Idx::Bx); - const Complex By_old = fields(i,j,k,Idx::By); - const Complex Bz_old = fields(i,j,k,Idx::Bz); + const Complex Ex_old = fields(i,j,k,Idx.Ex); + const Complex Ey_old = fields(i,j,k,Idx.Ey); + const Complex Ez_old = fields(i,j,k,Idx.Ez); + const Complex Bx_old = fields(i,j,k,Idx.Bx); + const Complex By_old = fields(i,j,k,Idx.By); + const Complex Bz_old = fields(i,j,k,Idx.Bz); // Shortcuts for the values of J and rho - const Complex Jx = fields(i,j,k,Idx::Jx); - const Complex Jy = fields(i,j,k,Idx::Jy); - const Complex Jz = fields(i,j,k,Idx::Jz); - const Complex rho_old = fields(i,j,k,Idx::rho_old); - const Complex rho_new = fields(i,j,k,Idx::rho_new); + const Complex Jx = fields(i,j,k,Idx.Jx); + const Complex Jy = fields(i,j,k,Idx.Jy); + const Complex Jz = fields(i,j,k,Idx.Jz); + const Complex rho_old = fields(i,j,k,Idx.rho_old); + const Complex rho_new = fields(i,j,k,Idx.rho_new); // k vector values const amrex::Real kx = modified_kx_arr[i]; @@ -215,17 +215,17 @@ PsatdAlgorithm::pushSpectralFields (SpectralFieldData& f) const if (update_with_rho) { - fields(i,j,k,Idx::Ex) = T2 * C * Ex_old - + I * c2 * T2 * S_ck * (ky * Bz_old - kz * By_old) - + X4 * Jx - I * (X2 * rho_new - T2 * X3 * rho_old) * kx; + fields(i,j,k,Idx.Ex) = T2 * C * Ex_old + + I * c2 * T2 * S_ck * (ky * Bz_old - kz * By_old) + + X4 * Jx - I * (X2 * rho_new - T2 * X3 * rho_old) * kx; - fields(i,j,k,Idx::Ey) = T2 * C * Ey_old - + I * c2 * T2 * S_ck * (kz * Bx_old - kx * Bz_old) - + X4 * Jy - I * (X2 * rho_new - T2 * X3 * rho_old) * ky; + fields(i,j,k,Idx.Ey) = T2 * C * Ey_old + + I * c2 * T2 * S_ck * (kz * Bx_old - kx * Bz_old) + + X4 * Jy - I * (X2 * rho_new - T2 * X3 * rho_old) * ky; - fields(i,j,k,Idx::Ez) = T2 * C * Ez_old - + I * c2 * T2 * S_ck * (kx * By_old - ky * Bx_old) - + X4 * Jz - I * (X2 * rho_new - T2 * X3 * rho_old) * kz; + fields(i,j,k,Idx.Ez) = T2 * C * Ez_old + + I * c2 * T2 * S_ck * (kx * By_old - ky * Bx_old) + + X4 * Jz - I * (X2 * rho_new - T2 * X3 * rho_old) * kz; } // Update equations for E in the formulation without rho @@ -236,56 +236,56 @@ PsatdAlgorithm::pushSpectralFields (SpectralFieldData& f) const Complex k_dot_J = kx * Jx + ky * Jy + kz * Jz; Complex k_dot_E = kx * Ex_old + ky * Ey_old + kz * Ez_old; - fields(i,j,k,Idx::Ex) = T2 * C * Ex_old - + I * c2 * T2 * S_ck * (ky * Bz_old - kz * By_old) - + X4 * Jx + X2 * k_dot_E * kx + X3 * k_dot_J * kx; + fields(i,j,k,Idx.Ex) = T2 * C * Ex_old + + I * c2 * T2 * S_ck * (ky * Bz_old - kz * By_old) + + X4 * Jx + X2 * k_dot_E * kx + X3 * k_dot_J * kx; - fields(i,j,k,Idx::Ey) = T2 * C * Ey_old - + I * c2 * T2 * S_ck * (kz * Bx_old - kx * Bz_old) - + X4 * Jy + X2 * k_dot_E * ky + X3 * k_dot_J * ky; + fields(i,j,k,Idx.Ey) = T2 * C * Ey_old + + I * c2 * T2 * S_ck * (kz * Bx_old - kx * Bz_old) + + X4 * Jy + X2 * k_dot_E * ky + X3 * k_dot_J * ky; - fields(i,j,k,Idx::Ez) = T2 * C * Ez_old - + I * c2 * T2 * S_ck * (kx * By_old - ky * Bx_old) - + X4 * Jz + X2 * k_dot_E * kz + X3 * k_dot_J * kz; + fields(i,j,k,Idx.Ez) = T2 * C * Ez_old + + I * c2 * T2 * S_ck * (kx * By_old - ky * Bx_old) + + X4 * Jz + X2 * k_dot_E * kz + X3 * k_dot_J * kz; } // Update equations for B // T2 = 1 always with standard PSATD (zero Galilean velocity) - fields(i,j,k,Idx::Bx) = T2 * C * Bx_old - - I * T2 * S_ck * (ky * Ez_old - kz * Ey_old) - + I * X1 * (ky * Jz - kz * Jy); + fields(i,j,k,Idx.Bx) = T2 * C * Bx_old + - I * T2 * S_ck * (ky * Ez_old - kz * Ey_old) + + I * X1 * (ky * Jz - kz * Jy); - fields(i,j,k,Idx::By) = T2 * C * By_old - - I * T2 * S_ck * (kz * Ex_old - kx * Ez_old) - + I * X1 * (kz * Jx - kx * Jz); + fields(i,j,k,Idx.By) = T2 * C * By_old + - I * T2 * S_ck * (kz * Ex_old - kx * Ez_old) + + I * X1 * (kz * Jx - kx * Jz); - fields(i,j,k,Idx::Bz) = T2 * C * Bz_old - - I * T2 * S_ck * (kx * Ey_old - ky * Ex_old) - + I * X1 * (kx * Jy - ky * Jx); + fields(i,j,k,Idx.Bz) = T2 * C * Bz_old + - I * T2 * S_ck * (kx * Ey_old - ky * Ex_old) + + I * X1 * (kx * Jy - ky * Jx); if (J_linear_in_time) { - const Complex Jx_new = fields(i,j,k,IdxLin::Jx_new); - const Complex Jy_new = fields(i,j,k,IdxLin::Jy_new); - const Complex Jz_new = fields(i,j,k,IdxLin::Jz_new); + const Complex Jx_new = fields(i,j,k,Idx.Jx_new); + const Complex Jy_new = fields(i,j,k,Idx.Jy_new); + const Complex Jz_new = fields(i,j,k,Idx.Jz_new); - const Complex F_old = fields(i,j,k,IdxLin::F); - const Complex G_old = fields(i,j,k,IdxLin::G); + const Complex F_old = fields(i,j,k,Idx.F); + const Complex G_old = fields(i,j,k,Idx.G); - fields(i,j,k,Idx::Ex) += -X1 * (Jx_new - Jx) / dt + I * c2 * S_ck * F_old * kx; + fields(i,j,k,Idx.Ex) += -X1 * (Jx_new - Jx) / dt + I * c2 * S_ck * F_old * kx; - fields(i,j,k,Idx::Ey) += -X1 * (Jy_new - Jy) / dt + I * c2 * S_ck * F_old * ky; + fields(i,j,k,Idx.Ey) += -X1 * (Jy_new - Jy) / dt + I * c2 * S_ck * F_old * ky; - fields(i,j,k,Idx::Ez) += -X1 * (Jz_new - Jz) / dt + I * c2 * S_ck * F_old * kz; + fields(i,j,k,Idx.Ez) += -X1 * (Jz_new - Jz) / dt + I * c2 * S_ck * F_old * kz; - fields(i,j,k,Idx::Bx) += I * X2/c2 * (ky * (Jz_new - Jz) - kz * (Jy_new - Jy)); + fields(i,j,k,Idx.Bx) += I * X2/c2 * (ky * (Jz_new - Jz) - kz * (Jy_new - Jy)); + I * c2 * S_ck * G_old * kx; - fields(i,j,k,Idx::By) += I * X2/c2 * (kz * (Jx_new - Jx) - kx * (Jz_new - Jz)); + fields(i,j,k,Idx.By) += I * X2/c2 * (kz * (Jx_new - Jx) - kx * (Jz_new - Jz)); + I * c2 * S_ck * G_old * ky; - fields(i,j,k,Idx::Bz) += I * X2/c2 * (kx * (Jy_new - Jy) - ky * (Jx_new - Jx)); + fields(i,j,k,Idx.Bz) += I * X2/c2 * (kx * (Jy_new - Jy) - ky * (Jx_new - Jx)); + I * c2 * S_ck * G_old * kz; const Complex k_dot_J = kx * Jx + ky * Jy + kz * Jz; @@ -293,10 +293,10 @@ PsatdAlgorithm::pushSpectralFields (SpectralFieldData& f) const const Complex k_dot_E = kx * Ex_old + ky * Ey_old + kz * Ez_old; const Complex k_dot_B = kx * Bx_old + ky * By_old + kz * Bz_old; - fields(i,j,k,IdxLin::F) = C * F_old + S_ck * (I * k_dot_E - rho_old * inv_ep0) + fields(i,j,k,Idx.F) = C * F_old + S_ck * (I * k_dot_E - rho_old * inv_ep0) - X1 * ((rho_new - rho_old) / dt + I * k_dot_J) - I * X2/c2 * k_dot_dJ; - fields(i,j,k,IdxLin::G) = C * G_old + I * S_ck * k_dot_B; + fields(i,j,k,Idx.G) = C * G_old + I * S_ck * k_dot_B; if (time_averaging) { @@ -307,32 +307,32 @@ PsatdAlgorithm::pushSpectralFields (SpectralFieldData& f) const // because it is meant to be used with sub-cycling // maybe this should be made more generic - fields(i,j,k,IdxLin::Ex_avg) += S_ck * Ex_old + fields(i,j,k,Idx.Ex_avg) += S_ck * Ex_old + I * c2 * ep0 * X1 * (ky * Bz_old - kz * By_old) + I * X5 * rho_old * kx + I * X6 * rho_new * kx + X3/c2 * Jx - X2/c2 * Jx_new + I * c2 * ep0 * X1 * F_old * kx; - fields(i,j,k,IdxLin::Ey_avg) += S_ck * Ey_old + fields(i,j,k,Idx.Ey_avg) += S_ck * Ey_old + I * c2 * ep0 * X1 * (kz * Bx_old - kx * Bz_old) + I * X5 * rho_old * ky + I * X6 * rho_new * ky + X3/c2 * Jy - X2/c2 * Jy_new + I * c2 * ep0 * X1 * F_old * ky; - fields(i,j,k,IdxLin::Ez_avg) += S_ck * Ez_old + fields(i,j,k,Idx.Ez_avg) += S_ck * Ez_old + I * c2 * ep0 * X1 * (kx * By_old - ky * Bx_old) + I * X5 * rho_old * kz + I * X6 * rho_new * kz + X3/c2 * Jz - X2/c2 * Jz_new + I * c2 * ep0 * X1 * F_old * kz; - fields(i,j,k,IdxLin::Bx_avg) += S_ck * Bx_old + fields(i,j,k,Idx.Bx_avg) += S_ck * Bx_old - I * ep0 * X1 * (ky * Ez_old - kz * Ey_old) - I * X5/c2 * (ky * Jz - kz * Jy) - I * X6/c2 * (ky * Jz_new - kz * Jy_new); + I * c2 * ep0 * X1 * G_old * kx; - fields(i,j,k,IdxLin::By_avg) += S_ck * By_old + fields(i,j,k,Idx.By_avg) += S_ck * By_old - I * ep0 * X1 * (kz * Ex_old - kx * Ez_old) - I * X5/c2 * (kz * Jx - kx * Jz) - I * X6/c2 * (kz * Jx_new - kx * Jz_new); + I * c2 * ep0 * X1 * G_old * ky; - fields(i,j,k,IdxLin::Bz_avg) += S_ck * Bz_old + fields(i,j,k,Idx.Bz_avg) += S_ck * Bz_old - I * ep0 * X1 * (kx * Ey_old - ky * Ex_old) - I * X5/c2 * (kx * Jy - ky * Jx) - I * X6/c2 * (kx * Jy_new - ky * Jx_new); + I * c2 * ep0 * X1 * G_old * kz; @@ -350,29 +350,29 @@ PsatdAlgorithm::pushSpectralFields (SpectralFieldData& f) const const Complex Y2 = Y2_arr(i,j,k); const Complex Y4 = Y4_arr(i,j,k); - fields(i,j,k,IdxAvg::Ex_avg) = Psi1 * Ex_old - - I * c2 * Psi2 * (ky * Bz_old - kz * By_old) - + Y4 * Jx + (Y2 * rho_new + Y3 * rho_old) * kx; + fields(i,j,k,Idx.Ex_avg) = Psi1 * Ex_old + - I * c2 * Psi2 * (ky * Bz_old - kz * By_old) + + Y4 * Jx + (Y2 * rho_new + Y3 * rho_old) * kx; - fields(i,j,k,IdxAvg::Ey_avg) = Psi1 * Ey_old - - I * c2 * Psi2 * (kz * Bx_old - kx * Bz_old) - + Y4 * Jy + (Y2 * rho_new + Y3 * rho_old) * ky; + fields(i,j,k,Idx.Ey_avg) = Psi1 * Ey_old + - I * c2 * Psi2 * (kz * Bx_old - kx * Bz_old) + + Y4 * Jy + (Y2 * rho_new + Y3 * rho_old) * ky; - fields(i,j,k,IdxAvg::Ez_avg) = Psi1 * Ez_old - - I * c2 * Psi2 * (kx * By_old - ky * Bx_old) - + Y4 * Jz + (Y2 * rho_new + Y3 * rho_old) * kz; + fields(i,j,k,Idx.Ez_avg) = Psi1 * Ez_old + - I * c2 * Psi2 * (kx * By_old - ky * Bx_old) + + Y4 * Jz + (Y2 * rho_new + Y3 * rho_old) * kz; - fields(i,j,k,IdxAvg::Bx_avg) = Psi1 * Bx_old - + I * Psi2 * (ky * Ez_old - kz * Ey_old) - + I * Y1 * (ky * Jz - kz * Jy); + fields(i,j,k,Idx.Bx_avg) = Psi1 * Bx_old + + I * Psi2 * (ky * Ez_old - kz * Ey_old) + + I * Y1 * (ky * Jz - kz * Jy); - fields(i,j,k,IdxAvg::By_avg) = Psi1 * By_old - + I * Psi2 * (kz * Ex_old - kx * Ez_old) - + I * Y1 * (kz * Jx - kx * Jz); + fields(i,j,k,Idx.By_avg) = Psi1 * By_old + + I * Psi2 * (kz * Ex_old - kx * Ez_old) + + I * Y1 * (kz * Jx - kx * Jz); - fields(i,j,k,IdxAvg::Bz_avg) = Psi1 * Bz_old - + I * Psi2 * (kx * Ey_old - ky * Ex_old) - + I * Y1 * (kx * Jy - ky * Jx); + fields(i,j,k,Idx.Bz_avg) = Psi1 * Bz_old + + I * Psi2 * (kx * Ey_old - ky * Ex_old) + + I * Y1 * (kx * Jy - ky * Jx); } }); } @@ -851,14 +851,14 @@ PsatdAlgorithm::CurrentCorrection ( // Profiling BL_PROFILE("PsatdAlgorithm::CurrentCorrection"); - using Idx = SpectralFieldIndex; + const SpectralFieldIndex& Idx = m_spectral_index; // Forward Fourier transform of J and rho - field_data.ForwardTransform(lev, *current[0], Idx::Jx, 0); - field_data.ForwardTransform(lev, *current[1], Idx::Jy, 0); - field_data.ForwardTransform(lev, *current[2], Idx::Jz, 0); - field_data.ForwardTransform(lev, *rho, Idx::rho_old, 0); - field_data.ForwardTransform(lev, *rho, Idx::rho_new, 1); + field_data.ForwardTransform(lev, *current[0], Idx.Jx, 0); + field_data.ForwardTransform(lev, *current[1], Idx.Jy, 0); + field_data.ForwardTransform(lev, *current[2], Idx.Jz, 0); + field_data.ForwardTransform(lev, *rho, Idx.rho_old, 0); + field_data.ForwardTransform(lev, *rho, Idx.rho_new, 1); const amrex::IntVect& fill_guards = m_fill_guards; @@ -892,11 +892,11 @@ PsatdAlgorithm::CurrentCorrection ( ParallelFor(bx, [=] AMREX_GPU_DEVICE(int i, int j, int k) noexcept { // Shortcuts for the values of J and rho - const Complex Jx = fields(i,j,k,Idx::Jx); - const Complex Jy = fields(i,j,k,Idx::Jy); - const Complex Jz = fields(i,j,k,Idx::Jz); - const Complex rho_old = fields(i,j,k,Idx::rho_old); - const Complex rho_new = fields(i,j,k,Idx::rho_new); + const Complex Jx = fields(i,j,k,Idx.Jx); + const Complex Jy = fields(i,j,k,Idx.Jy); + const Complex Jz = fields(i,j,k,Idx.Jz); + const Complex rho_old = fields(i,j,k,Idx.rho_old); + const Complex rho_new = fields(i,j,k,Idx.rho_new); // k vector values, and coefficients const amrex::Real kx = modified_kx_arr[i]; @@ -928,25 +928,25 @@ PsatdAlgorithm::CurrentCorrection ( const Complex rho_old_mod = rho_old * amrex::exp(I * k_dot_vg * dt); const Complex den = 1._rt - amrex::exp(I * k_dot_vg * dt); - fields(i,j,k,Idx::Jx) = Jx - (k_dot_J - k_dot_vg * (rho_new - rho_old_mod) / den) + fields(i,j,k,Idx.Jx) = Jx - (k_dot_J - k_dot_vg * (rho_new - rho_old_mod) / den) * kx / (k_norm * k_norm); - fields(i,j,k,Idx::Jy) = Jy - (k_dot_J - k_dot_vg * (rho_new - rho_old_mod) / den) + fields(i,j,k,Idx.Jy) = Jy - (k_dot_J - k_dot_vg * (rho_new - rho_old_mod) / den) * ky / (k_norm * k_norm); - fields(i,j,k,Idx::Jz) = Jz - (k_dot_J - k_dot_vg * (rho_new - rho_old_mod) / den) + fields(i,j,k,Idx.Jz) = Jz - (k_dot_J - k_dot_vg * (rho_new - rho_old_mod) / den) * kz / (k_norm * k_norm); } else { - fields(i,j,k,Idx::Jx) = Jx - (k_dot_J - I * (rho_new - rho_old) / dt) + fields(i,j,k,Idx.Jx) = Jx - (k_dot_J - I * (rho_new - rho_old) / dt) * kx / (k_norm * k_norm); - fields(i,j,k,Idx::Jy) = Jy - (k_dot_J - I * (rho_new - rho_old) / dt) + fields(i,j,k,Idx.Jy) = Jy - (k_dot_J - I * (rho_new - rho_old) / dt) * ky / (k_norm * k_norm); - fields(i,j,k,Idx::Jz) = Jz - (k_dot_J - I * (rho_new - rho_old) / dt) + fields(i,j,k,Idx.Jz) = Jz - (k_dot_J - I * (rho_new - rho_old) / dt) * kz / (k_norm * k_norm); } } @@ -954,9 +954,9 @@ PsatdAlgorithm::CurrentCorrection ( } // Backward Fourier transform of J - field_data.BackwardTransform(lev, *current[0], Idx::Jx, 0, fill_guards); - field_data.BackwardTransform(lev, *current[1], Idx::Jy, 0, fill_guards); - field_data.BackwardTransform(lev, *current[2], Idx::Jz, 0, fill_guards); + field_data.BackwardTransform(lev, *current[0], Idx.Jx, 0, fill_guards); + field_data.BackwardTransform(lev, *current[1], Idx.Jy, 0, fill_guards); + field_data.BackwardTransform(lev, *current[2], Idx.Jz, 0, fill_guards); } void @@ -968,14 +968,14 @@ PsatdAlgorithm::VayDeposition ( // Profiling BL_PROFILE("PsatdAlgorithm::VayDeposition()"); - using Idx = SpectralFieldIndex; + const SpectralFieldIndex& Idx = m_spectral_index; // Forward Fourier transform of D (temporarily stored in current): // D is nodal and does not match the staggering of J, therefore we pass the // actual staggering of D (IntVect(1)) to the ForwardTransform function - field_data.ForwardTransform(lev, *current[0], Idx::Jx, 0, IntVect(1)); - field_data.ForwardTransform(lev, *current[1], Idx::Jy, 0, IntVect(1)); - field_data.ForwardTransform(lev, *current[2], Idx::Jz, 0, IntVect(1)); + field_data.ForwardTransform(lev, *current[0], Idx.Jx, 0, IntVect(1)); + field_data.ForwardTransform(lev, *current[1], Idx.Jy, 0, IntVect(1)); + field_data.ForwardTransform(lev, *current[2], Idx.Jz, 0, IntVect(1)); const amrex::IntVect& fill_guards = m_fill_guards; @@ -998,11 +998,11 @@ PsatdAlgorithm::VayDeposition ( ParallelFor(bx, [=] AMREX_GPU_DEVICE(int i, int j, int k) noexcept { // Shortcuts for the values of D - const Complex Dx = fields(i,j,k,Idx::Jx); + const Complex Dx = fields(i,j,k,Idx.Jx); #if (AMREX_SPACEDIM == 3) - const Complex Dy = fields(i,j,k,Idx::Jy); + const Complex Dy = fields(i,j,k,Idx.Jy); #endif - const Complex Dz = fields(i,j,k,Idx::Jz); + const Complex Dz = fields(i,j,k,Idx.Jz); // Imaginary unit constexpr Complex I = Complex{0._rt, 1._rt}; @@ -1017,25 +1017,25 @@ PsatdAlgorithm::VayDeposition ( #endif // Compute Jx - if (kx_mod != 0._rt) fields(i,j,k,Idx::Jx) = I * Dx / kx_mod; - else fields(i,j,k,Idx::Jx) = 0._rt; + if (kx_mod != 0._rt) fields(i,j,k,Idx.Jx) = I * Dx / kx_mod; + else fields(i,j,k,Idx.Jx) = 0._rt; #if (AMREX_SPACEDIM == 3) // Compute Jy - if (ky_mod != 0._rt) fields(i,j,k,Idx::Jy) = I * Dy / ky_mod; - else fields(i,j,k,Idx::Jy) = 0._rt; + if (ky_mod != 0._rt) fields(i,j,k,Idx.Jy) = I * Dy / ky_mod; + else fields(i,j,k,Idx.Jy) = 0._rt; #endif // Compute Jz - if (kz_mod != 0._rt) fields(i,j,k,Idx::Jz) = I * Dz / kz_mod; - else fields(i,j,k,Idx::Jz) = 0._rt; + if (kz_mod != 0._rt) fields(i,j,k,Idx.Jz) = I * Dz / kz_mod; + else fields(i,j,k,Idx.Jz) = 0._rt; }); } // Backward Fourier transform of J - field_data.BackwardTransform(lev, *current[0], Idx::Jx, 0, fill_guards); - field_data.BackwardTransform(lev, *current[1], Idx::Jy, 0, fill_guards); - field_data.BackwardTransform(lev, *current[2], Idx::Jz, 0, fill_guards); + field_data.BackwardTransform(lev, *current[0], Idx.Jx, 0, fill_guards); + field_data.BackwardTransform(lev, *current[1], Idx.Jy, 0, fill_guards); + field_data.BackwardTransform(lev, *current[2], Idx.Jz, 0, fill_guards); } #endif // WARPX_USE_PSATD |