diff options
Diffstat (limited to 'Source')
-rw-r--r-- | Source/BoundaryConditions/PML_current.H | 6 | ||||
-rw-r--r-- | Source/BoundaryConditions/WarpXEvolvePML.cpp | 18 |
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, |