diff options
Diffstat (limited to 'Source/Particles/Pusher/UpdateMomentumBorisWithRadiationReaction.H')
-rw-r--r-- | Source/Particles/Pusher/UpdateMomentumBorisWithRadiationReaction.H | 56 |
1 files changed, 28 insertions, 28 deletions
diff --git a/Source/Particles/Pusher/UpdateMomentumBorisWithRadiationReaction.H b/Source/Particles/Pusher/UpdateMomentumBorisWithRadiationReaction.H index 6f0eae476..b637f865a 100644 --- a/Source/Particles/Pusher/UpdateMomentumBorisWithRadiationReaction.H +++ b/Source/Particles/Pusher/UpdateMomentumBorisWithRadiationReaction.H @@ -22,17 +22,17 @@ void UpdateMomentumBorisWithRadiationReaction( amrex::ParticleReal& ux, amrex::ParticleReal& uy, amrex::ParticleReal& uz, const amrex::ParticleReal Ex, const amrex::ParticleReal Ey, const amrex::ParticleReal Ez, const amrex::ParticleReal Bx, const amrex::ParticleReal By, const amrex::ParticleReal Bz, - const amrex::Real q, const amrex::Real m, const amrex::Real dt ) + const amrex::ParticleReal q, const amrex::ParticleReal m, const amrex::Real dt ) { using namespace amrex::literals; //RR algorithm needs to store old value of the normalized momentum - const amrex::Real ux_old = ux; - const amrex::Real uy_old = uy; - const amrex::Real uz_old = uz; + const amrex::ParticleReal ux_old = ux; + const amrex::ParticleReal uy_old = uy; + const amrex::ParticleReal uz_old = uz; //Useful constant - constexpr amrex::Real inv_c2 = 1._rt/(PhysConst::c*PhysConst::c); + constexpr amrex::ParticleReal inv_c2 = 1._prt/(PhysConst::c*PhysConst::c); //Call to regular Boris pusher UpdateMomentumBoris( @@ -42,44 +42,44 @@ void UpdateMomentumBorisWithRadiationReaction( q, m, dt ); //Estimation of the normalized momentum at intermediate (integer) time - const amrex::Real ux_n = (ux+ux_old)*0.5_rt; - const amrex::Real uy_n = (uy+uy_old)*0.5_rt; - const amrex::Real uz_n = (uz+uz_old)*0.5_rt; + const amrex::ParticleReal ux_n = (ux+ux_old)*0.5_prt; + const amrex::ParticleReal uy_n = (uy+uy_old)*0.5_prt; + const amrex::ParticleReal uz_n = (uz+uz_old)*0.5_prt; // Compute Lorentz factor (and inverse) at intermediate (integer) time - const amrex::Real gamma_n = std::sqrt( 1._rt + + const amrex::ParticleReal gamma_n = std::sqrt( 1._prt + (ux_n*ux_n + uy_n*uy_n + uz_n*uz_n)*inv_c2); - const amrex::Real inv_gamma_n = 1.0_rt/gamma_n; + const amrex::ParticleReal inv_gamma_n = 1.0_prt/gamma_n; //Estimation of the velocity at intermediate (integer) time - const amrex::Real vx_n = ux_n*inv_gamma_n; - const amrex::Real vy_n = uy_n*inv_gamma_n; - const amrex::Real vz_n = uz_n*inv_gamma_n; - const amrex::Real bx_n = vx_n/PhysConst::c; - const amrex::Real by_n = vy_n/PhysConst::c; - const amrex::Real bz_n = vz_n/PhysConst::c; + const amrex::ParticleReal vx_n = ux_n*inv_gamma_n; + const amrex::ParticleReal vy_n = uy_n*inv_gamma_n; + const amrex::ParticleReal vz_n = uz_n*inv_gamma_n; + const amrex::ParticleReal bx_n = vx_n/PhysConst::c; + const amrex::ParticleReal by_n = vy_n/PhysConst::c; + const amrex::ParticleReal bz_n = vz_n/PhysConst::c; //Lorentz force over charge - const amrex::Real flx_q = (Ex + vy_n*Bz - vz_n*By); - const amrex::Real fly_q = (Ey + vz_n*Bx - vx_n*Bz); - const amrex::Real flz_q = (Ez + vx_n*By - vy_n*Bx); - const amrex::Real fl_q2 = flx_q*flx_q + fly_q*fly_q + flz_q*flz_q; + const amrex::ParticleReal flx_q = (Ex + vy_n*Bz - vz_n*By); + const amrex::ParticleReal fly_q = (Ey + vz_n*Bx - vx_n*Bz); + const amrex::ParticleReal flz_q = (Ez + vx_n*By - vy_n*Bx); + const amrex::ParticleReal fl_q2 = flx_q*flx_q + fly_q*fly_q + flz_q*flz_q; //Calculation of auxiliary quantities - const amrex::Real bdotE = (bx_n*Ex + by_n*Ey + bz_n*Ez); - const amrex::Real bdotE2 = bdotE*bdotE; - const amrex::Real coeff = gamma_n*gamma_n*(fl_q2-bdotE2); + const amrex::ParticleReal bdotE = (bx_n*Ex + by_n*Ey + bz_n*Ez); + const amrex::ParticleReal bdotE2 = bdotE*bdotE; + const amrex::ParticleReal coeff = gamma_n*gamma_n*(fl_q2-bdotE2); //Radiation reaction constant - const amrex::Real q_over_mc = q/(m*PhysConst::c); - const amrex::Real RRcoeff = (2.0_rt/3.0_rt)*PhysConst::r_e*q_over_mc*q_over_mc; + const amrex::ParticleReal q_over_mc = q/(m*PhysConst::c); + const amrex::ParticleReal RRcoeff = (2.0_prt/3.0_prt)*PhysConst::r_e*q_over_mc*q_over_mc; //Compute the components of the RR force - const amrex::Real frx = + const amrex::ParticleReal frx = RRcoeff*(PhysConst::c*(fly_q*Bz - flz_q*By) + bdotE*Ex - coeff*bx_n); - const amrex::Real fry = + const amrex::ParticleReal fry = RRcoeff*(PhysConst::c*(flz_q*Bx - flx_q*Bz) + bdotE*Ey - coeff*by_n); - const amrex::Real frz = + const amrex::ParticleReal frz = RRcoeff*(PhysConst::c*(flx_q*By - fly_q*Bx) + bdotE*Ez - coeff*bz_n); //Update momentum using the RR force |