aboutsummaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
Diffstat (limited to 'Source')
-rw-r--r--Source/Particles/PhysicalParticleContainer.cpp5
-rw-r--r--Source/Particles/Pusher/UpdateMomentumBoris.H3
-rw-r--r--Source/Particles/Pusher/UpdateMomentumVay.H3
3 files changed, 7 insertions, 4 deletions
diff --git a/Source/Particles/PhysicalParticleContainer.cpp b/Source/Particles/PhysicalParticleContainer.cpp
index a1d9a9afb..9441a4d91 100644
--- a/Source/Particles/PhysicalParticleContainer.cpp
+++ b/Source/Particles/PhysicalParticleContainer.cpp
@@ -1754,6 +1754,7 @@ PhysicalParticleContainer::PushPX(WarpXParIter& pti,
Real* AMREX_RESTRICT x = xp.dataPtr();
Real* AMREX_RESTRICT y = yp.dataPtr();
Real* AMREX_RESTRICT z = zp.dataPtr();
+ Real* AMREX_RESTRICT gi = giv.dataPtr();
Real* AMREX_RESTRICT ux = attribs[PIdx::ux].dataPtr();
Real* AMREX_RESTRICT uy = attribs[PIdx::uy].dataPtr();
Real* AMREX_RESTRICT uz = attribs[PIdx::uz].dataPtr();
@@ -1775,7 +1776,7 @@ PhysicalParticleContainer::PushPX(WarpXParIter& pti,
if (WarpX::particle_pusher_algo == ParticlePusherAlgo::Boris){
amrex::ParallelFor( pti.numParticles(),
[=] AMREX_GPU_DEVICE (long i) {
- UpdateMomentumBoris( ux[i], uy[i], uz[i],
+ UpdateMomentumBoris( ux[i], uy[i], uz[i], gi[i],
Ex[i], Ey[i], Ez[i], Bx[i], By[i], Bz[i], q, m, dt);
UpdatePosition( x[i], y[i], z[i],
ux[i], uy[i], uz[i], dt );
@@ -1784,7 +1785,7 @@ PhysicalParticleContainer::PushPX(WarpXParIter& pti,
} else if (WarpX::particle_pusher_algo == ParticlePusherAlgo::Vay) {
amrex::ParallelFor( pti.numParticles(),
[=] AMREX_GPU_DEVICE (long i) {
- UpdateMomentumVay( ux[i], uy[i], uz[i],
+ UpdateMomentumVay( ux[i], uy[i], uz[i], gi[i],
Ex[i], Ey[i], Ez[i], Bx[i], By[i], Bz[i], q, m, dt);
UpdatePosition( x[i], y[i], z[i],
ux[i], uy[i], uz[i], dt );
diff --git a/Source/Particles/Pusher/UpdateMomentumBoris.H b/Source/Particles/Pusher/UpdateMomentumBoris.H
index a33058347..71e9a8ed1 100644
--- a/Source/Particles/Pusher/UpdateMomentumBoris.H
+++ b/Source/Particles/Pusher/UpdateMomentumBoris.H
@@ -7,7 +7,7 @@
* given the value of its momenta `ux`, `uy`, `uz` */
AMREX_GPU_HOST_DEVICE AMREX_INLINE
void UpdateMomentumBoris(
- amrex::Real& ux, amrex::Real& uy, amrex::Real& uz,
+ amrex::Real& ux, amrex::Real& uy, amrex::Real& uz, amrex::Real& gaminv,
const amrex::Real Ex, const amrex::Real Ey, const amrex::Real Ez,
const amrex::Real Bx, const amrex::Real By, const amrex::Real Bz,
const amrex::Real q, const amrex::Real m, const amrex::Real dt )
@@ -41,6 +41,7 @@ void UpdateMomentumBoris(
ux += econst*Ex;
uy += econst*Ey;
uz += econst*Ez;
+ gaminv = 1./std::sqrt(1. + (ux*ux + uy*uy + uz*uz)*inv_c2);
}
#endif // WARPX_PARTICLES_PUSHER_UPDATEMOMENTUM_BORIS_H_
diff --git a/Source/Particles/Pusher/UpdateMomentumVay.H b/Source/Particles/Pusher/UpdateMomentumVay.H
index 1f0f19e63..044297e22 100644
--- a/Source/Particles/Pusher/UpdateMomentumVay.H
+++ b/Source/Particles/Pusher/UpdateMomentumVay.H
@@ -9,7 +9,7 @@
* given the value of its momenta `ux`, `uy`, `uz` */
AMREX_GPU_HOST_DEVICE AMREX_INLINE
void UpdateMomentumVay(
- amrex::Real& ux, amrex::Real& uy, amrex::Real& uz,
+ amrex::Real& ux, amrex::Real& uy, amrex::Real& uz, amrex::Real& gaminv,
const amrex::Real Ex, const amrex::Real Ey, const amrex::Real Ez,
const amrex::Real Bx, const amrex::Real By, const amrex::Real Bz,
const amrex::Real q, const amrex::Real m, const amrex::Real dt )
@@ -48,6 +48,7 @@ void UpdateMomentumVay(
ux = s*(uxpr+tx*tu+uypr*tz-uzpr*ty);
uy = s*(uypr+ty*tu+uzpr*tx-uxpr*tz);
uz = s*(uzpr+tz*tu+uxpr*ty-uypr*tx);
+ gaminv = 1./std::sqrt(1. + (ux*ux + uy*uy + uz*uz)*invclightsq);
}
#endif // WARPX_PARTICLES_PUSHER_UPDATEMOMENTUM_VAY_H_