diff options
author | 2022-04-20 14:10:11 -0700 | |
---|---|---|
committer | 2022-04-20 14:10:11 -0700 | |
commit | f316aa4e8c199e012ef04c26e1539dee8e682bd2 (patch) | |
tree | f3bfcb72376f5dd747db6a1a4dced13e0b5d0e59 /Source/Particles/WarpXParticleContainer.cpp | |
parent | e538399d99121d37ece3d23f4444342117a9a723 (diff) | |
download | WarpX-f316aa4e8c199e012ef04c26e1539dee8e682bd2.tar.gz WarpX-f316aa4e8c199e012ef04c26e1539dee8e682bd2.tar.zst WarpX-f316aa4e8c199e012ef04c26e1539dee8e682bd2.zip |
Current Deposition Interfaces: Always Pass `dt` & `relative_time` (#2937)
* Current Deposition Interfaces: Always Pass `dt` & `relative_time`
* Fix CI Failures
* Fix 1D/RZ Warnings
* Fix RZ Bug
* Fix Bugs
* Minimize Changes, Fix Roundoff Errors
* Cleaning
* Remove dt From doDepositionShapeN
* Cleaning Esirkepov Deposition
* Cleaning Vay Deposition
* Fix Roundoff Errors
* Fix Roundoff Errors (continued)
* Fix Bug (RZ)
Diffstat (limited to 'Source/Particles/WarpXParticleContainer.cpp')
-rw-r--r-- | Source/Particles/WarpXParticleContainer.cpp | 39 |
1 files changed, 15 insertions, 24 deletions
diff --git a/Source/Particles/WarpXParticleContainer.cpp b/Source/Particles/WarpXParticleContainer.cpp index 6ca49aaf3..1d057f5a2 100644 --- a/Source/Particles/WarpXParticleContainer.cpp +++ b/Source/Particles/WarpXParticleContainer.cpp @@ -290,11 +290,10 @@ WarpXParticleContainer::AddNParticles (int /*lev*/, * \param lev : Level of box that contains particles * \param depos_lev : Level on which particles deposit (if buffers are used) * \param dt : Time step for particle level - * \param relative_time: Time at which to deposit J, relative to the time of - * the current positions of the particles (expressed as - * a fraction of dt). When different than 0, the particle - * position will be temporarily modified to match the - * time of the deposition. + * \param relative_time: Time at which to deposit J, relative to the time of the + * current positions of the particles. When different than 0, + * the particle position will be temporarily modified to match + * the time of the deposition. */ void WarpXParticleContainer::DepositCurrent (WarpXParIter& pti, @@ -421,14 +420,6 @@ WarpXParticleContainer::DepositCurrent (WarpXParIter& pti, if (WarpX::do_nodal==1) { amrex::Abort("The Esirkepov algorithm cannot be used with a nodal grid."); } - if ( relative_time != -0.5_rt ) { - amrex::Abort("The Esirkepov deposition cannot be performed at another time then -0.5 dt."); - } - } - if (WarpX::current_deposition_algo == CurrentDepositionAlgo::Vay) { - if ( relative_time != -0.5_rt ) { - amrex::Abort("The Esirkepov deposition cannot be performed at another time then -0.5 dt."); - } } WARPX_PROFILE_VAR_START(blp_deposit); @@ -440,21 +431,21 @@ WarpXParticleContainer::DepositCurrent (WarpXParIter& pti, doEsirkepovDepositionShapeN<1>( GetPosition, wp.dataPtr() + offset, uxp.dataPtr() + offset, uyp.dataPtr() + offset, uzp.dataPtr() + offset, ion_lev, - jx_arr, jy_arr, jz_arr, np_to_depose, dt, dx, xyzmin, lo, q, + jx_arr, jy_arr, jz_arr, np_to_depose, dt, relative_time, dx, xyzmin, lo, q, WarpX::n_rz_azimuthal_modes, cost, WarpX::load_balance_costs_update_algo); } else if (WarpX::nox == 2){ doEsirkepovDepositionShapeN<2>( GetPosition, wp.dataPtr() + offset, uxp.dataPtr() + offset, uyp.dataPtr() + offset, uzp.dataPtr() + offset, ion_lev, - jx_arr, jy_arr, jz_arr, np_to_depose, dt, dx, xyzmin, lo, q, + jx_arr, jy_arr, jz_arr, np_to_depose, dt, relative_time, dx, xyzmin, lo, q, WarpX::n_rz_azimuthal_modes, cost, WarpX::load_balance_costs_update_algo); } else if (WarpX::nox == 3){ doEsirkepovDepositionShapeN<3>( GetPosition, wp.dataPtr() + offset, uxp.dataPtr() + offset, uyp.dataPtr() + offset, uzp.dataPtr() + offset, ion_lev, - jx_arr, jy_arr, jz_arr, np_to_depose, dt, dx, xyzmin, lo, q, + jx_arr, jy_arr, jz_arr, np_to_depose, dt, relative_time, dx, xyzmin, lo, q, WarpX::n_rz_azimuthal_modes, cost, WarpX::load_balance_costs_update_algo); } @@ -463,21 +454,21 @@ WarpXParticleContainer::DepositCurrent (WarpXParIter& pti, doVayDepositionShapeN<1>( GetPosition, wp.dataPtr() + offset, uxp.dataPtr() + offset, uyp.dataPtr() + offset, uzp.dataPtr() + offset, ion_lev, - jx_fab, jy_fab, jz_fab, np_to_depose, dt, dx, xyzmin, lo, q, + jx_fab, jy_fab, jz_fab, np_to_depose, dt, relative_time, dx, xyzmin, lo, q, WarpX::n_rz_azimuthal_modes, cost, WarpX::load_balance_costs_update_algo); } else if (WarpX::nox == 2){ doVayDepositionShapeN<2>( GetPosition, wp.dataPtr() + offset, uxp.dataPtr() + offset, uyp.dataPtr() + offset, uzp.dataPtr() + offset, ion_lev, - jx_fab, jy_fab, jz_fab, np_to_depose, dt, dx, xyzmin, lo, q, + jx_fab, jy_fab, jz_fab, np_to_depose, dt, relative_time, dx, xyzmin, lo, q, WarpX::n_rz_azimuthal_modes, cost, WarpX::load_balance_costs_update_algo); } else if (WarpX::nox == 3){ doVayDepositionShapeN<3>( GetPosition, wp.dataPtr() + offset, uxp.dataPtr() + offset, uyp.dataPtr() + offset, uzp.dataPtr() + offset, ion_lev, - jx_fab, jy_fab, jz_fab, np_to_depose, dt, dx, xyzmin, lo, q, + jx_fab, jy_fab, jz_fab, np_to_depose, dt, relative_time, dx, xyzmin, lo, q, WarpX::n_rz_azimuthal_modes, cost, WarpX::load_balance_costs_update_algo); } @@ -486,21 +477,21 @@ WarpXParticleContainer::DepositCurrent (WarpXParIter& pti, doDepositionShapeN<1>( GetPosition, wp.dataPtr() + offset, uxp.dataPtr() + offset, uyp.dataPtr() + offset, uzp.dataPtr() + offset, ion_lev, - jx_fab, jy_fab, jz_fab, np_to_depose, dt*relative_time, dx, + jx_fab, jy_fab, jz_fab, np_to_depose, relative_time, dx, xyzmin, lo, q, WarpX::n_rz_azimuthal_modes, cost, WarpX::load_balance_costs_update_algo); } else if (WarpX::nox == 2){ doDepositionShapeN<2>( GetPosition, wp.dataPtr() + offset, uxp.dataPtr() + offset, uyp.dataPtr() + offset, uzp.dataPtr() + offset, ion_lev, - jx_fab, jy_fab, jz_fab, np_to_depose, dt*relative_time, dx, + jx_fab, jy_fab, jz_fab, np_to_depose, relative_time, dx, xyzmin, lo, q, WarpX::n_rz_azimuthal_modes, cost, WarpX::load_balance_costs_update_algo); } else if (WarpX::nox == 3){ doDepositionShapeN<3>( GetPosition, wp.dataPtr() + offset, uxp.dataPtr() + offset, uyp.dataPtr() + offset, uzp.dataPtr() + offset, ion_lev, - jx_fab, jy_fab, jz_fab, np_to_depose, dt*relative_time, dx, + jx_fab, jy_fab, jz_fab, np_to_depose, relative_time, dx, xyzmin, lo, q, WarpX::n_rz_azimuthal_modes, cost, WarpX::load_balance_costs_update_algo); } @@ -520,7 +511,7 @@ WarpXParticleContainer::DepositCurrent (WarpXParIter& pti, void WarpXParticleContainer::DepositCurrent ( amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > >& J, - const amrex::Real dt, const amrex::Real relative_t) + const amrex::Real dt, const amrex::Real relative_time) { // Loop over the refinement levels int const finest_level = J.size() - 1; @@ -550,7 +541,7 @@ WarpXParticleContainer::DepositCurrent ( DepositCurrent(pti, wp, uxp, uyp, uzp, ion_lev, J[lev][0].get(), J[lev][1].get(), J[lev][2].get(), - 0, np, thread_num, lev, lev, dt, relative_t/dt); + 0, np, thread_num, lev, lev, dt, relative_time); } #ifdef AMREX_USE_OMP } |