diff options
author | 2022-03-28 09:03:37 -0700 | |
---|---|---|
committer | 2022-03-28 09:03:37 -0700 | |
commit | ebcb82829cf7254a5fe1e474c7d40dcd479a7132 (patch) | |
tree | cf6522c427535a4b895ef12e419bd18192965d9b /Source/WarpX.cpp | |
parent | c30f8caad3a514e62a47bb498a2b1422941922da (diff) | |
download | WarpX-ebcb82829cf7254a5fe1e474c7d40dcd479a7132.tar.gz WarpX-ebcb82829cf7254a5fe1e474c7d40dcd479a7132.tar.zst WarpX-ebcb82829cf7254a5fe1e474c7d40dcd479a7132.zip |
Clean up handling of `v_galilean` (#2989)
* Cleaned up handling of v_galilean
* Missed one
* Update Source/WarpX.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/WarpX.H
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/WarpX.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/Particles/PhotonParticleContainer.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/FieldSolver/WarpXPushFieldsEM.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/Diagnostics/ReducedDiags/FieldProbe.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/Particles/WarpXParticleContainer.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/Particles/WarpXParticleContainer.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/Diagnostics/ReducedDiags/ParticleExtrema.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/Particles/PhysicalParticleContainer.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/Particles/PhysicalParticleContainer.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/Utils/WarpXUtil.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/Particles/RigidInjectedParticleContainer.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/Particles/ElementaryProcess/QEDPhotonEmission.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/Particles/ElementaryProcess/QEDPairGeneration.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/Particles/ElementaryProcess/Ionization.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* Update Source/FieldSolver/WarpXPushFieldsEM.cpp
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
* More cleanup
* Reset Galilean Benchmarks
* For mirrors, now include the Galilean shift
* Removed the flag since it is true for all calls
* Fix Source/FieldSolver/SpectralSolver/SpectralFieldDataRZ.cpp
* Update Source/WarpX.H
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
Co-authored-by: Edoardo Zoni <59625522+EZoni@users.noreply.github.com>
Co-authored-by: Edoardo Zoni <ezoni@lbl.gov>
Diffstat (limited to 'Source/WarpX.cpp')
-rw-r--r-- | Source/WarpX.cpp | 40 |
1 files changed, 26 insertions, 14 deletions
diff --git a/Source/WarpX.cpp b/Source/WarpX.cpp index 827f7fb1c..3d11074df 100644 --- a/Source/WarpX.cpp +++ b/Source/WarpX.cpp @@ -1224,6 +1224,9 @@ WarpX::ReadParameters () if (m_v_comoving[0] != 0. || m_v_comoving[1] != 0. || m_v_comoving[2] != 0.) { amrex::Abort("Esirkepov current deposition cannot be used with the comoving PSATD algorithm"); } + if (m_v_galilean[0] != 0. || m_v_galilean[1] != 0. || m_v_galilean[2] != 0.) { + amrex::Abort("Esirkepov current deposition cannot be used with the Galilean algorithm."); + } } if (current_deposition_algo == CurrentDepositionAlgo::Vay) { @@ -2206,12 +2209,19 @@ WarpX::getRealBox(const Box& bx, int lev) } std::array<Real,3> -WarpX::LowerCorner(const Box& bx, std::array<amrex::Real,3> galilean_shift, int lev) +WarpX::LowerCorner(const Box& bx, const int lev, const amrex::Real time_shift_delta) { + auto & warpx = GetInstance(); RealBox grid_box = getRealBox( bx, lev ); const Real* xyzmin = grid_box.lo(); + amrex::Real cur_time = warpx.gett_new(lev); + amrex::Real time_shift = (cur_time + time_shift_delta - warpx.time_of_last_gal_shift); + amrex::Array<amrex::Real,3> galilean_shift = { warpx.m_v_galilean[0]*time_shift, + warpx.m_v_galilean[1]*time_shift, + warpx.m_v_galilean[2]*time_shift }; + #if defined(WARPX_DIM_3D) return { xyzmin[0] + galilean_shift[0], xyzmin[1] + galilean_shift[1], xyzmin[2] + galilean_shift[2] }; @@ -2224,28 +2234,30 @@ WarpX::LowerCorner(const Box& bx, std::array<amrex::Real,3> galilean_shift, int } std::array<Real,3> -WarpX::UpperCorner(const Box& bx, int lev) +WarpX::UpperCorner(const Box& bx, const int lev, const amrex::Real time_shift_delta) { + auto & warpx = GetInstance(); const RealBox grid_box = getRealBox( bx, lev ); + const Real* xyzmax = grid_box.hi(); + + amrex::Real cur_time = warpx.gett_new(lev); + amrex::Real time_shift = (cur_time + time_shift_delta - warpx.time_of_last_gal_shift); + amrex::Array<amrex::Real,3> galilean_shift = { warpx.m_v_galilean[0]*time_shift, + warpx.m_v_galilean[1]*time_shift, + warpx.m_v_galilean[2]*time_shift }; + #if defined(WARPX_DIM_3D) - return { xyzmax[0], xyzmax[1], xyzmax[2] }; + return { xyzmax[0] + galilean_shift[0], xyzmax[1] + galilean_shift[1], xyzmax[2] + galilean_shift[2] }; + #elif defined(WARPX_DIM_XZ) || defined(WARPX_DIM_RZ) - return { xyzmax[0], std::numeric_limits<Real>::max(), xyzmax[1] }; + return { xyzmax[0] + galilean_shift[0], std::numeric_limits<Real>::max(), xyzmax[1] + galilean_shift[1] }; + #elif defined(WARPX_DIM_1D_Z) - return { std::numeric_limits<Real>::max(), std::numeric_limits<Real>::max(), xyzmax[0] }; + return { std::numeric_limits<Real>::max(), std::numeric_limits<Real>::max(), xyzmax[0] + galilean_shift[0] }; #endif } -std::array<Real,3> -WarpX::LowerCornerWithGalilean (const Box& bx, const amrex::Vector<amrex::Real>& v_galilean, int lev) -{ - amrex::Real cur_time = gett_new(lev); - amrex::Real time_shift = (cur_time - time_of_last_gal_shift); - amrex::Array<amrex::Real,3> galilean_shift = { v_galilean[0]*time_shift, v_galilean[1]*time_shift, v_galilean[2]*time_shift }; - return WarpX::LowerCorner(bx, galilean_shift, lev); -} - IntVect WarpX::RefRatio (int lev) { |