8#ifndef WARPX_PARTICLES_PUSHER_UPDATEPOSITION_H_
9#define WARPX_PARTICLES_PUSHER_UPDATEPOSITION_H_
41#if !defined(WARPX_DIM_1D_Z)
42 x += ux * inv_gamma * dt;
44#if defined(WARPX_DIM_3D) || defined(WARPX_DIM_RZ) || defined(WARPX_DIM_RCYLINDER) || defined(WARPX_DIM_RSPHERE)
46 y += uy * inv_gamma * dt;
48#if !defined(WARPX_DIM_RCYLINDER)
49 z += uz * inv_gamma * dt;
58#if !defined(WARPX_DIM_1D_Z)
59 x += ux * c_over_unorm * dt;
61#if defined(WARPX_DIM_3D) || defined(WARPX_DIM_RZ) || defined(WARPX_DIM_RCYLINDER) || defined(WARPX_DIM_RSPHERE)
63 y += uy * c_over_unorm * dt;
65#if !defined(WARPX_DIM_RCYLINDER)
66 z += uz * c_over_unorm * dt;
91 const amrex::ParticleReal gamma_n = std::sqrt(1._prt + (uxp_n*uxp_n + uyp_n*uyp_n + uzp_n*uzp_n)*inv_c2);
92 const amrex::ParticleReal gamma_np1 = std::sqrt(1._prt + (uxp_np1*uxp_np1 + uyp_np1*uyp_np1 + uzp_np1*uzp_np1)*inv_c2);
117#if !defined(WARPX_DIM_1D_Z)
118 x += ux * inv_gamma * dt;
120#if defined(WARPX_DIM_3D) || defined(WARPX_DIM_RZ) || defined(WARPX_DIM_RCYLINDER) || defined(WARPX_DIM_RSPHERE)
122 y += uy * inv_gamma * dt;
124#if !defined(WARPX_DIM_RCYLINDER)
125 z += uz * inv_gamma * dt;
147#if !defined(WARPX_DIM_RCYLINDER)
148 step_norm = (dzp - dzp_save)*(dzp - dzp_save)*idzg2;
152#if !defined(WARPX_DIM_1D_Z)
153 step_norm += (dxp - dxp_save)*(dxp - dxp_save)*idxg2;
155#if defined(WARPX_DIM_3D)
156 step_norm += (dyp - dyp_save)*(dyp - dyp_save)*idyg2;
157#elif defined(WARPX_DIM_RZ) || defined(WARPX_DIM_RCYLINDER) || defined(WARPX_DIM_RSPHERE)
158 step_norm += (dyp - dyp_save)*(dyp - dyp_save)*idxg2;
160 step_norm = std::sqrt(step_norm);
#define AMREX_FORCE_INLINE
#define AMREX_GPU_HOST_DEVICE
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal GetImplicitGammaInverse(const amrex::ParticleReal uxp_n, const amrex::ParticleReal uyp_n, const amrex::ParticleReal uzp_n, const amrex::ParticleReal uxp_nph, const amrex::ParticleReal uyp_nph, const amrex::ParticleReal uzp_nph) noexcept
Compute the inverse Lorentz factor for the position update in the implicit methods,...
Definition UpdatePosition.H:77
AMREX_GPU_HOST_DEVICE AMREX_INLINE void UpdatePositionImplicit(amrex::ParticleReal &x, amrex::ParticleReal &y, amrex::ParticleReal &z, const amrex::ParticleReal ux_n, const amrex::ParticleReal uy_n, const amrex::ParticleReal uz_n, const amrex::ParticleReal ux, const amrex::ParticleReal uy, const amrex::ParticleReal uz, const amrex::Real dt)
Push the particle's positions over one timestep, given the value of its momenta ux,...
Definition UpdatePosition.H:105
AMREX_GPU_HOST_DEVICE AMREX_INLINE void PositionNorm(const amrex::ParticleReal dxp, const amrex::ParticleReal dyp, const amrex::ParticleReal dzp, const amrex::ParticleReal dxp_save, const amrex::ParticleReal dyp_save, const amrex::ParticleReal dzp_save, const amrex::ParticleReal idxg2, const amrex::ParticleReal idyg2, const amrex::ParticleReal idzg2, amrex::ParticleReal &step_norm)
Check particle position for convergence. This is used by the Picard method used to achieve a self-con...
Definition UpdatePosition.H:134
AMREX_GPU_HOST_DEVICE AMREX_INLINE void UpdatePosition(amrex::ParticleReal &x, amrex::ParticleReal &y, amrex::ParticleReal &z, const amrex::ParticleReal ux, const amrex::ParticleReal uy, const amrex::ParticleReal uz, const amrex::Real dt, amrex::ParticleReal const mass)
Push the particle position over one time step, given the value of its momenta ux, uy,...
Definition UpdatePosition.H:24
amrex_particle_real ParticleReal
constexpr auto c
vacuum speed of light [m/s]
Definition constant.H:153