aboutsummaryrefslogtreecommitdiff
path: root/Source/Parallelization/WarpXComm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Parallelization/WarpXComm.cpp')
-rw-r--r--Source/Parallelization/WarpXComm.cpp100
1 files changed, 35 insertions, 65 deletions
diff --git a/Source/Parallelization/WarpXComm.cpp b/Source/Parallelization/WarpXComm.cpp
index 9c6d3e9a4..ee12a9d68 100644
--- a/Source/Parallelization/WarpXComm.cpp
+++ b/Source/Parallelization/WarpXComm.cpp
@@ -113,52 +113,36 @@ WarpX::UpdateAuxilaryDataStagToNodal ()
// for out-of-bound accesses due to large-stencil operations)
Box bx = mfi.growntilebox();
- if (maxwell_solver_id == MaxwellSolverAlgo::PSATD) {
+ // Order of finite-order centering of fields
+ const int fg_nox = WarpX::field_centering_nox;
+ const int fg_noy = WarpX::field_centering_noy;
+ const int fg_noz = WarpX::field_centering_noz;
-#ifdef WARPX_USE_PSATD
+ // Device vectors of stencil coefficients used for finite-order centering of fields
+ amrex::Real const * stencil_coeffs_x = WarpX::device_field_centering_stencil_coeffs_x.data();
+ amrex::Real const * stencil_coeffs_y = WarpX::device_field_centering_stencil_coeffs_y.data();
+ amrex::Real const * stencil_coeffs_z = WarpX::device_field_centering_stencil_coeffs_z.data();
- // Order of finite-order centering of fields
- const int fg_nox = WarpX::field_centering_nox;
- const int fg_noy = WarpX::field_centering_noy;
- const int fg_noz = WarpX::field_centering_noz;
-
- // Device vectors of stencil coefficients used for finite-order centering of fields
- amrex::Real const * stencil_coeffs_x = WarpX::device_field_centering_stencil_coeffs_x.data();
- amrex::Real const * stencil_coeffs_y = WarpX::device_field_centering_stencil_coeffs_y.data();
- amrex::Real const * stencil_coeffs_z = WarpX::device_field_centering_stencil_coeffs_z.data();
-
- amrex::ParallelFor(bx, [=] AMREX_GPU_DEVICE (int j, int k, int l) noexcept
- {
- warpx_interp<true>(j, k, l, bx_aux, bx_fp, dst_stag, Bx_stag, fg_nox, fg_noy, fg_noz,
- stencil_coeffs_x, stencil_coeffs_y, stencil_coeffs_z);
+ amrex::ParallelFor(bx, [=] AMREX_GPU_DEVICE (int j, int k, int l) noexcept
+ {
+ warpx_interp(j, k, l, bx_aux, bx_fp, dst_stag, Bx_stag, fg_nox, fg_noy, fg_noz,
+ stencil_coeffs_x, stencil_coeffs_y, stencil_coeffs_z);
- warpx_interp<true>(j, k, l, by_aux, by_fp, dst_stag, By_stag, fg_nox, fg_noy, fg_noz,
- stencil_coeffs_x, stencil_coeffs_y, stencil_coeffs_z);
+ warpx_interp(j, k, l, by_aux, by_fp, dst_stag, By_stag, fg_nox, fg_noy, fg_noz,
+ stencil_coeffs_x, stencil_coeffs_y, stencil_coeffs_z);
- warpx_interp<true>(j, k, l, bz_aux, bz_fp, dst_stag, Bz_stag, fg_nox, fg_noy, fg_noz,
- stencil_coeffs_x, stencil_coeffs_y, stencil_coeffs_z);
+ warpx_interp(j, k, l, bz_aux, bz_fp, dst_stag, Bz_stag, fg_nox, fg_noy, fg_noz,
+ stencil_coeffs_x, stencil_coeffs_y, stencil_coeffs_z);
- warpx_interp<true>(j, k, l, ex_aux, ex_fp, dst_stag, Ex_stag, fg_nox, fg_noy, fg_noz,
- stencil_coeffs_x, stencil_coeffs_y, stencil_coeffs_z);
+ warpx_interp(j, k, l, ex_aux, ex_fp, dst_stag, Ex_stag, fg_nox, fg_noy, fg_noz,
+ stencil_coeffs_x, stencil_coeffs_y, stencil_coeffs_z);
- warpx_interp<true>(j, k, l, ey_aux, ey_fp, dst_stag, Ey_stag, fg_nox, fg_noy, fg_noz,
- stencil_coeffs_x, stencil_coeffs_y, stencil_coeffs_z);
+ warpx_interp(j, k, l, ey_aux, ey_fp, dst_stag, Ey_stag, fg_nox, fg_noy, fg_noz,
+ stencil_coeffs_x, stencil_coeffs_y, stencil_coeffs_z);
- warpx_interp<true>(j, k, l, ez_aux, ez_fp, dst_stag, Ez_stag, fg_nox, fg_noy, fg_noz,
- stencil_coeffs_x, stencil_coeffs_y, stencil_coeffs_z);
- });
-#endif
- } else { // FDTD
- amrex::ParallelFor(bx, [=] AMREX_GPU_DEVICE (int j, int k, int l) noexcept
- {
- warpx_interp(j, k, l, bx_aux, bx_fp, dst_stag, Bx_stag);
- warpx_interp(j, k, l, by_aux, by_fp, dst_stag, By_stag);
- warpx_interp(j, k, l, bz_aux, bz_fp, dst_stag, Bz_stag);
- warpx_interp(j, k, l, ex_aux, ex_fp, dst_stag, Ex_stag);
- warpx_interp(j, k, l, ey_aux, ey_fp, dst_stag, Ey_stag);
- warpx_interp(j, k, l, ez_aux, ez_fp, dst_stag, Ez_stag);
- });
- }
+ warpx_interp(j, k, l, ez_aux, ez_fp, dst_stag, Ez_stag, fg_nox, fg_noy, fg_noz,
+ stencil_coeffs_x, stencil_coeffs_y, stencil_coeffs_z);
+ });
}
// NOTE: high-order interpolation is not implemented for mesh refinement
@@ -453,35 +437,21 @@ void WarpX::UpdateCurrentNodalToStag (amrex::MultiFab& dst, amrex::MultiFab cons
amrex::Array4<amrex::Real const> const& src_arr = src.const_array(mfi);
amrex::Array4<amrex::Real> const& dst_arr = dst.array(mfi);
- if (maxwell_solver_id == MaxwellSolverAlgo::PSATD)
- {
-#ifdef WARPX_USE_PSATD
+ // Order of finite-order centering of currents
+ const int cc_nox = WarpX::current_centering_nox;
+ const int cc_noy = WarpX::current_centering_noy;
+ const int cc_noz = WarpX::current_centering_noz;
- // Order of finite-order centering of currents
- const int cc_nox = WarpX::current_centering_nox;
- const int cc_noy = WarpX::current_centering_noy;
- const int cc_noz = WarpX::current_centering_noz;
+ // Device vectors of stencil coefficients used for finite-order centering of currents
+ amrex::Real const * stencil_coeffs_x = WarpX::device_current_centering_stencil_coeffs_x.data();
+ amrex::Real const * stencil_coeffs_y = WarpX::device_current_centering_stencil_coeffs_y.data();
+ amrex::Real const * stencil_coeffs_z = WarpX::device_current_centering_stencil_coeffs_z.data();
- // Device vectors of stencil coefficients used for finite-order centering of currents
- amrex::Real const * stencil_coeffs_x = WarpX::device_current_centering_stencil_coeffs_x.data();
- amrex::Real const * stencil_coeffs_y = WarpX::device_current_centering_stencil_coeffs_y.data();
- amrex::Real const * stencil_coeffs_z = WarpX::device_current_centering_stencil_coeffs_z.data();
-
- amrex::ParallelFor(bx, [=] AMREX_GPU_DEVICE (int j, int k, int l) noexcept
- {
- warpx_interp<true>(j, k, l, dst_arr, src_arr, dst_stag, src_stag, cc_nox, cc_noy, cc_noz,
- stencil_coeffs_x, stencil_coeffs_y, stencil_coeffs_z);
- });
-#endif
- }
-
- else // FDTD
+ amrex::ParallelFor(bx, [=] AMREX_GPU_DEVICE (int j, int k, int l) noexcept
{
- amrex::ParallelFor(bx, [=] AMREX_GPU_DEVICE (int j, int k, int l) noexcept
- {
- warpx_interp<false>(j, k, l, dst_arr, src_arr, dst_stag, src_stag);
- });
- }
+ warpx_interp(j, k, l, dst_arr, src_arr, dst_stag, src_stag, cc_nox, cc_noy, cc_noz,
+ stencil_coeffs_x, stencil_coeffs_y, stencil_coeffs_z);
+ });
}
}