aboutsummaryrefslogtreecommitdiff
path: root/Source/WarpX.cpp
diff options
context:
space:
mode:
authorGravatar David Grote <dpgrote@lbl.gov> 2022-03-28 09:03:37 -0700
committerGravatar GitHub <noreply@github.com> 2022-03-28 09:03:37 -0700
commitebcb82829cf7254a5fe1e474c7d40dcd479a7132 (patch)
treecf6522c427535a4b895ef12e419bd18192965d9b /Source/WarpX.cpp
parentc30f8caad3a514e62a47bb498a2b1422941922da (diff)
downloadWarpX-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.cpp40
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)
{