diff options
Diffstat (limited to 'Source/LaserParticleContainer.cpp')
-rw-r--r-- | Source/LaserParticleContainer.cpp | 146 |
1 files changed, 28 insertions, 118 deletions
diff --git a/Source/LaserParticleContainer.cpp b/Source/LaserParticleContainer.cpp index ff8efe79c..8c5d799e3 100644 --- a/Source/LaserParticleContainer.cpp +++ b/Source/LaserParticleContainer.cpp @@ -297,7 +297,11 @@ LaserParticleContainer::Evolve (int lev, const MultiFab&, const MultiFab&, const MultiFab&, const MultiFab&, const MultiFab&, const MultiFab&, MultiFab& jx, MultiFab& jy, MultiFab& jz, - MultiFab* rho, Real t, Real dt) + MultiFab*, MultiFab*, MultiFab*, + MultiFab* rho, MultiFab*, + const MultiFab*, const MultiFab*, const MultiFab*, + const MultiFab*, const MultiFab*, const MultiFab*, + Real t, Real dt) { BL_PROFILE("Laser::Evolve()"); BL_PROFILE_VAR_NS("Laser::Evolve::Copy", blp_copy); @@ -308,7 +312,6 @@ LaserParticleContainer::Evolve (int lev, // WarpX assumes the same number of guard cells for Jx, Jy, Jz long ngJ = jx.nGrow(); - long ngJDeposit = (WarpX::use_filter) ? ngJ +1 : ngJ; Real t_lab = t; if (WarpX::gamma_boost > 1) { @@ -328,11 +331,10 @@ LaserParticleContainer::Evolve (int lev, { Vector<Real> xp, yp, zp, giv, plane_Xp, plane_Yp, amplitude_E; FArrayBox local_rho, local_jx, local_jy, local_jz; - FArrayBox filtered_rho, filtered_jx, filtered_jy, filtered_jz; for (WarpXParIter pti(*this, lev); pti.isValid(); ++pti) { - Real wt = ParallelDescriptor::second(); + Real wt = amrex::second(); const Box& box = pti.validbox(); @@ -387,7 +389,6 @@ LaserParticleContainer::Evolve (int lev, auto depositCharge = [&] (MultiFab* rhomf, int icomp) { long ngRho = rhomf->nGrow(); - long ngRhoDeposit = (WarpX::use_filter) ? ngRho +1 : ngRho; Real* data_ptr; const int *rholen; @@ -396,57 +397,32 @@ LaserParticleContainer::Evolve (int lev, Box grown_box; const std::array<Real, 3>& xyzmin = xyzmin_tile; tile_box.grow(ngRho); - if (WarpX::use_filter) { - grown_box = tile_box; - grown_box.grow(1); - local_rho.resize(grown_box); - } else { - local_rho.resize(tile_box); - } + local_rho.resize(tile_box); local_rho = 0.0; data_ptr = local_rho.dataPtr(); rholen = local_rho.length(); #if (AMREX_SPACEDIM == 3) - const long nx = rholen[0]-1-2*ngRhoDeposit; - const long ny = rholen[1]-1-2*ngRhoDeposit; - const long nz = rholen[2]-1-2*ngRhoDeposit; + const long nx = rholen[0]-1-2*ngRho; + const long ny = rholen[1]-1-2*ngRho; + const long nz = rholen[2]-1-2*ngRho; #else - const long nx = rholen[0]-1-2*ngRhoDeposit; + const long nx = rholen[0]-1-2*ngRho; const long ny = 0; - const long nz = rholen[1]-1-2*ngRhoDeposit; + const long nz = rholen[1]-1-2*ngRho; #endif warpx_charge_deposition(data_ptr, &np, xp.data(), yp.data(), zp.data(), wp.data(), &this->charge, &xyzmin[0], &xyzmin[1], &xyzmin[2], &dx[0], &dx[1], &dx[2], &nx, &ny, &nz, - &ngRhoDeposit, &ngRhoDeposit, &ngRhoDeposit, + &ngRho, &ngRho, &ngRho, &WarpX::nox,&WarpX::noy,&WarpX::noz, &lvect, &WarpX::charge_deposition_algo); const int ncomp = 1; - if (WarpX::use_filter) { - - filtered_rho.resize(tile_box); - filtered_rho = 0; - - WRPX_FILTER(local_rho.dataPtr(), - local_rho.loVect(), - local_rho.hiVect(), - filtered_rho.dataPtr(), - filtered_rho.loVect(), - filtered_rho.hiVect(), - ncomp); - - amrex_atomic_accumulate_fab(BL_TO_FORTRAN_3D(filtered_rho), - BL_TO_FORTRAN_N_3D(rhofab,icomp), ncomp); - - - } else { - amrex_atomic_accumulate_fab(BL_TO_FORTRAN_3D(local_rho), - BL_TO_FORTRAN_N_3D(rhofab,icomp), ncomp); - } + amrex_atomic_accumulate_fab(BL_TO_FORTRAN_3D(local_rho), + BL_TO_FORTRAN_N_3D(rhofab,icomp), ncomp); }; if (rho) depositCharge(rho,0); @@ -519,7 +495,6 @@ LaserParticleContainer::Evolve (int lev, Box tbx = convert(pti.tilebox(), WarpX::jx_nodal_flag); Box tby = convert(pti.tilebox(), WarpX::jy_nodal_flag); Box tbz = convert(pti.tilebox(), WarpX::jz_nodal_flag); - Box gtbx, gtby, gtbz; const std::array<Real, 3>& xyzmin = xyzmin_tile; @@ -527,25 +502,9 @@ LaserParticleContainer::Evolve (int lev, tby.grow(ngJ); tbz.grow(ngJ); - if (WarpX::use_filter) { - - gtbx = tbx; - gtbx.grow(1); - - gtby = tby; - gtby.grow(1); - - gtbz = tbz; - gtbz.grow(1); - - local_jx.resize(gtbx); - local_jy.resize(gtby); - local_jz.resize(gtbz); - } else { - local_jx.resize(tbx); - local_jy.resize(tby); - local_jz.resize(tbz); - } + local_jx.resize(tbx); + local_jy.resize(tby); + local_jz.resize(tbz); local_jx = 0.0; local_jy = 0.0; @@ -560,9 +519,9 @@ LaserParticleContainer::Evolve (int lev, jzntot = local_jz.length(); warpx_current_deposition( - jx_ptr, &ngJDeposit, jxntot, - jy_ptr, &ngJDeposit, jyntot, - jz_ptr, &ngJDeposit, jzntot, + jx_ptr, &ngJ, jxntot, + jy_ptr, &ngJ, jyntot, + jz_ptr, &ngJ, jzntot, &np, xp.data(), yp.data(), zp.data(), uxp.data(), uyp.data(), uzp.data(), giv.data(), wp.data(), &this->charge, @@ -572,61 +531,12 @@ LaserParticleContainer::Evolve (int lev, &lvect,&WarpX::current_deposition_algo); const int ncomp = 1; - if (WarpX::use_filter) { - - filtered_jx.resize(tbx); - filtered_jx = 0.0; - - WRPX_FILTER(local_jx.dataPtr(), - local_jx.loVect(), - local_jx.hiVect(), - filtered_jx.dataPtr(), - filtered_jx.loVect(), - filtered_jx.hiVect(), - ncomp); - - filtered_jy.resize(tby); - filtered_jy = 0.0; - - WRPX_FILTER(local_jy.dataPtr(), - local_jy.loVect(), - local_jy.hiVect(), - filtered_jy.dataPtr(), - filtered_jy.loVect(), - filtered_jy.hiVect(), - ncomp); - - filtered_jz.resize(tbz); - filtered_jz = 0.0; - - WRPX_FILTER(local_jz.dataPtr(), - local_jz.loVect(), - local_jz.hiVect(), - filtered_jz.dataPtr(), - filtered_jz.loVect(), - filtered_jz.hiVect(), - ncomp); - - amrex_atomic_accumulate_fab(BL_TO_FORTRAN_3D(filtered_jx), - BL_TO_FORTRAN_3D(jxfab), ncomp); - - amrex_atomic_accumulate_fab(BL_TO_FORTRAN_3D(filtered_jy), - BL_TO_FORTRAN_3D(jyfab), ncomp); - - amrex_atomic_accumulate_fab(BL_TO_FORTRAN_3D(filtered_jz), - BL_TO_FORTRAN_3D(jzfab), ncomp); - - } else { - - amrex_atomic_accumulate_fab(BL_TO_FORTRAN_3D(local_jx), - BL_TO_FORTRAN_3D(jxfab), ncomp); - - amrex_atomic_accumulate_fab(BL_TO_FORTRAN_3D(local_jy), - BL_TO_FORTRAN_3D(jyfab), ncomp); - - amrex_atomic_accumulate_fab(BL_TO_FORTRAN_3D(local_jz), - BL_TO_FORTRAN_3D(jzfab), ncomp); - } + amrex_atomic_accumulate_fab(BL_TO_FORTRAN_3D(local_jx), + BL_TO_FORTRAN_3D(jxfab), ncomp); + amrex_atomic_accumulate_fab(BL_TO_FORTRAN_3D(local_jy), + BL_TO_FORTRAN_3D(jyfab), ncomp); + amrex_atomic_accumulate_fab(BL_TO_FORTRAN_3D(local_jz), + BL_TO_FORTRAN_3D(jzfab), ncomp); BL_PROFILE_VAR_STOP(blp_pxr_cd); @@ -641,7 +551,7 @@ LaserParticleContainer::Evolve (int lev, if (cost) { const Box& tbx = pti.tilebox(); - wt = (ParallelDescriptor::second() - wt) / tbx.d_numPts(); + wt = (amrex::second() - wt) / tbx.d_numPts(); (*cost)[pti].plus(wt, tbx); } } |