aboutsummaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
Diffstat (limited to 'Source')
-rw-r--r--Source/BoundaryConditions/PML_current.H6
-rw-r--r--Source/BoundaryConditions/WarpXEvolvePML.cpp18
2 files changed, 16 insertions, 8 deletions
diff --git a/Source/BoundaryConditions/PML_current.H b/Source/BoundaryConditions/PML_current.H
index 5d23b1554..3e45fe3a5 100644
--- a/Source/BoundaryConditions/PML_current.H
+++ b/Source/BoundaryConditions/PML_current.H
@@ -88,7 +88,7 @@ void damp_jx_pml (int j, int k, int l,
#if (AMREX_SPACEDIM == 3)
jx(j,k,l) = jx(j,k,l) * sigsjx[j] * sigjy[k] * sigjz[l];
#else
- jx(j,k,l) = jx(j,k,l) * sigsjx[j] * sigjz[l]; //jx(j,k,0) ?
+ jx(j,k,l) = jx(j,k,l) * sigsjx[j] * sigjz[k];
#endif
}
@@ -102,7 +102,7 @@ void damp_jy_pml (int j, int k, int l,
#if (AMREX_SPACEDIM == 3)
jy(j,k,l) = jy(j,k,l) * sigjx[j] * sigsjy[k] * sigjz[l];
#else
- jy(j,k,l) = jy(j,k,l) * sigjx[j] * sigjz[l];
+ jy(j,k,l) = jy(j,k,l) * sigjx[j] * sigjz[k];
#endif
}
@@ -116,7 +116,7 @@ void damp_jz_pml (int j, int k, int l,
#if (AMREX_SPACEDIM == 3)
jz(j,k,l) = jz(j,k,l) * sigjx[j] * sigjy[k] * sigsjz[l];
#else
- jz(j,k,l) = jz(j,k,l) * sigjx[j] * sigsjz[l];
+ jz(j,k,l) = jz(j,k,l) * sigjx[j] * sigsjz[k];
#endif
}
diff --git a/Source/BoundaryConditions/WarpXEvolvePML.cpp b/Source/BoundaryConditions/WarpXEvolvePML.cpp
index 4cea1ee0c..1e5519451 100644
--- a/Source/BoundaryConditions/WarpXEvolvePML.cpp
+++ b/Source/BoundaryConditions/WarpXEvolvePML.cpp
@@ -112,24 +112,32 @@ WarpX::DampJPML (int lev, PatchType patch_type)
const auto& pml_j = (patch_type == PatchType::fine) ? pml[lev]->Getj_fp() : pml[lev]->Getj_cp();
const auto& sigba = (patch_type == PatchType::fine) ? pml[lev]->GetMultiSigmaBox_fp()
: pml[lev]->GetMultiSigmaBox_cp();
-
+
+#ifdef _OPENMP
+#pragma omp parallel if (Gpu::notInLaunchRegion())
+#endif
for ( MFIter mfi(*pml_j[0], TilingIfNotGPU()); mfi.isValid(); ++mfi )
{
auto const& pml_jxfab = pml_j[0]->array(mfi);
auto const& pml_jyfab = pml_j[1]->array(mfi);
auto const& pml_jzfab = pml_j[2]->array(mfi);
const Real* sigma_cum_fac_j_x = sigba[mfi].sigma_cum_fac[0].data();
- const Real* sigma_cum_fac_j_y = sigba[mfi].sigma_cum_fac[1].data();
- const Real* sigma_cum_fac_j_z = sigba[mfi].sigma_cum_fac[2].data();
const Real* sigma_star_cum_fac_j_x = sigba[mfi].sigma_star_cum_fac[0].data();
+#if (AMREX_SPACEDIM == 3)
+ const Real* sigma_cum_fac_j_y = sigba[mfi].sigma_cum_fac[1].data();
const Real* sigma_star_cum_fac_j_y = sigba[mfi].sigma_star_cum_fac[1].data();
+ const Real* sigma_cum_fac_j_z = sigba[mfi].sigma_cum_fac[2].data();
const Real* sigma_star_cum_fac_j_z = sigba[mfi].sigma_star_cum_fac[2].data();
-
+#else
+ const Real* sigma_cum_fac_j_y = nullptr;
+ const Real* sigma_star_cum_fac_j_y = nullptr;
+ const Real* sigma_cum_fac_j_z = sigba[mfi].sigma_cum_fac[1].data();
+ const Real* sigma_star_cum_fac_j_z = sigba[mfi].sigma_star_cum_fac[1].data();
+#endif
const Box& tjx = mfi.tilebox(jx_nodal_flag);
const Box& tjy = mfi.tilebox(jy_nodal_flag);
const Box& tjz = mfi.tilebox(jz_nodal_flag);
-
amrex::ParallelFor( tjx, tjy, tjz,
[=] AMREX_GPU_DEVICE (int i, int j, int k) {
damp_jx_pml(i, j, k, pml_jxfab, sigma_star_cum_fac_j_x,