From 0a5ceac5d3655cf03f9f53ed7717f9233ddd97e9 Mon Sep 17 00:00:00 2001 From: RevathiJambunathan Date: Thu, 21 Dec 2023 11:23:06 -0800 Subject: [PATCH] add rmax for RR scaled --- Source/Particles/PhysicalParticleContainer.cpp | 16 ++++++++++++---- Source/Particles/PulsarParameters.H | 1 + Source/Particles/PulsarParameters.cpp | 2 ++ Source/Particles/Pusher/PushSelector.H | 7 +++++-- .../UpdateMomentumBorisWithRadiationReaction.H | 9 ++++++--- .../Particles/RigidInjectedParticleContainer.cpp | 3 ++- 6 files changed, 28 insertions(+), 10 deletions(-) diff --git a/Source/Particles/PhysicalParticleContainer.cpp b/Source/Particles/PhysicalParticleContainer.cpp index eb2ea61c012..522c8884f6f 100644 --- a/Source/Particles/PhysicalParticleContainer.cpp +++ b/Source/Particles/PhysicalParticleContainer.cpp @@ -2855,7 +2855,10 @@ PhysicalParticleContainer::PushP (int lev, Real dt, amrex::Real gather_buffer_boxmin = Pulsar::m_gatherbuffer_min; amrex::Real gather_buffer_boxmax = Pulsar::m_gatherbuffer_max; amrex::Real re_scaledratio = 1.; - if (cur_time > Pulsar::m_RR_start_time) { re_scaledratio = Pulsar::m_re_scaledratio;} + amrex::Real scaledRR_rmax = Pulsar::m_scaledRR_rmax; + if (cur_time > Pulsar::m_RR_start_time) { + re_scaledratio = Pulsar::m_re_scaledratio; + } int do_zero_uperpB_driftframe = 0; amrex::Real rmax_zero_uperp_driftframe = 0.; if (cur_time > Pulsar::m_zerouperp_start_time) { @@ -3026,7 +3029,9 @@ PhysicalParticleContainer::PushP (int lev, Real dt, Exp, Eyp, Ezp, Bxp, Byp, Bzp, qp, m, #ifdef PULSAR - re_scaledratio, do_zero_uperpB_driftframe, r_p, rmax_zero_uperp_driftframe, + re_scaledratio, scaledRR_rmax, + do_zero_uperpB_driftframe, r_p, + rmax_zero_uperp_driftframe, #endif dt); } else if (pusher_algo == ParticlePusherAlgo::Boris) { @@ -3175,6 +3180,7 @@ PhysicalParticleContainer::PushPX (WarpXParIter& pti, amrex::Real gather_buffer_boxmin = Pulsar::m_gatherbuffer_min; amrex::Real gather_buffer_boxmax = Pulsar::m_gatherbuffer_max; amrex::Real re_scaledratio = 1.; + amrex::Real scaledRR_rmax = Pulsar::m_scaledRR_rmax; if (cur_time > Pulsar::m_RR_start_time) { re_scaledratio = Pulsar::m_re_scaledratio;} int do_zero_uperpB_driftframe = 0; amrex::Real rmax_zero_uperp_driftframe = 0.; @@ -3433,7 +3439,8 @@ PhysicalParticleContainer::PushPX (WarpXParIter& pti, t_chi_max, #endif #ifdef PULSAR - re_scaledratio, do_zero_uperpB_driftframe, r_p, rmax_zero_uperp_driftframe, + re_scaledratio, scaledRR_rmax, + do_zero_uperpB_driftframe, r_p, rmax_zero_uperp_driftframe, #endif dt); // PulsarPartDiagData); @@ -3473,7 +3480,8 @@ PhysicalParticleContainer::PushPX (WarpXParIter& pti, m, q, pusher_algo, do_crr, do_copy, t_chi_max, #ifdef PULSAR - re_scaledratio, do_zero_uperpB_driftframe, r_p, rmax_zero_uperp_driftframe, + re_scaledratio, scaledRR_rmax, + do_zero_uperpB_driftframe, r_p, rmax_zero_uperp_driftframe, #endif dt); } diff --git a/Source/Particles/PulsarParameters.H b/Source/Particles/PulsarParameters.H index 5822339f06b..1d07d28eb39 100644 --- a/Source/Particles/PulsarParameters.H +++ b/Source/Particles/PulsarParameters.H @@ -713,6 +713,7 @@ public: static amrex::Real m_BLC; static amrex::Real m_beta_rec_RR; static amrex::Real m_re_scaledratio; + static amrex::Real m_scaledRR_rmax; static int m_do_zero_uperpB_driftframe; static amrex::Real m_rmax_zero_uperpB_driftframe; static amrex::Real m_RR_start_time; diff --git a/Source/Particles/PulsarParameters.cpp b/Source/Particles/PulsarParameters.cpp index e0880fd31f9..e7b556bb5f2 100644 --- a/Source/Particles/PulsarParameters.cpp +++ b/Source/Particles/PulsarParameters.cpp @@ -157,6 +157,7 @@ int Pulsar::m_do_zero_uperpB_driftframe = 0; amrex::Real Pulsar::m_rmax_zero_uperpB_driftframe; amrex::Real Pulsar::m_RR_start_time; amrex::Real Pulsar::m_zerouperp_start_time; +amrex::Real Pulsar::m_scaledRR_rmax; Pulsar::Pulsar () { @@ -412,6 +413,7 @@ Pulsar::ReadParameters () { pp.get("rmax_zero_uperpB_driftframe",m_rmax_zero_uperpB_driftframe); pp.get("RR_start_time",m_RR_start_time); pp.get("zerouperp_start_time",m_zerouperp_start_time); + pp.get("scaledRR_rmax",m_scaledRR_rmax); } diff --git a/Source/Particles/Pusher/PushSelector.H b/Source/Particles/Pusher/PushSelector.H index 0d24a6dde37..96aeaa9b893 100644 --- a/Source/Particles/Pusher/PushSelector.H +++ b/Source/Particles/Pusher/PushSelector.H @@ -67,6 +67,7 @@ void doParticlePush(const GetParticlePosition& GetPosition, #endif #ifdef PULSAR const amrex::Real re_scaledratio, + const amrex::Real scaledRR_rmax, const int do_zero_uperpB_driftframe, const amrex::ParticleReal r_p, const amrex::Real rmax_zero_uperp_driftframe, @@ -94,7 +95,8 @@ void doParticlePush(const GetParticlePosition& GetPosition, Ex, Ey, Ez, Bx, By, Bz, qp, m, #ifdef PULSAR - re_scaledratio, do_zero_uperpB_driftframe, r_p, + re_scaledratio, scaledRR_rmax, + do_zero_uperpB_driftframe, r_p, rmax_zero_uperp_driftframe, #endif dt); @@ -126,7 +128,8 @@ void doParticlePush(const GetParticlePosition& GetPosition, Ex, Ey, Ez, Bx, By, Bz, qp, m, #ifdef PULSAR - re_scaledratio, do_zero_uperpB_driftframe, r_p, + re_scaledratio, scaledRR_rmax, + do_zero_uperpB_driftframe, r_p, rmax_zero_uperp_driftframe, #endif dt); diff --git a/Source/Particles/Pusher/UpdateMomentumBorisWithRadiationReaction.H b/Source/Particles/Pusher/UpdateMomentumBorisWithRadiationReaction.H index f3bdad04a15..ae3a135af29 100644 --- a/Source/Particles/Pusher/UpdateMomentumBorisWithRadiationReaction.H +++ b/Source/Particles/Pusher/UpdateMomentumBorisWithRadiationReaction.H @@ -28,6 +28,7 @@ void UpdateMomentumBorisWithRadiationReaction( const amrex::ParticleReal q, const amrex::ParticleReal m, #ifdef PULSAR const amrex::Real re_scaledratio, + const amrex::Real scaledRR_rmax, const int do_zero_uperpB_driftframe, const amrex::ParticleReal r_p, const amrex::Real rmax_zero_uperpB_driftframe, @@ -108,9 +109,11 @@ void UpdateMomentumBorisWithRadiationReaction( RRcoeff*(PhysConst::c*(flx_q*By - fly_q*Bx) + bdotE*Ez - coeff*bz_n); //Update momentum using the RR force - ux += frx*dt; - uy += fry*dt; - uz += frz*dt; + if (r_p < scaledRR_rmax) { + ux += frx*dt; + uy += fry*dt; + uz += frz*dt; + } } #endif // WARPX_PARTICLES_PUSHER_UPDATEMOMENTUM_BORIS_WITHRR_H_ diff --git a/Source/Particles/RigidInjectedParticleContainer.cpp b/Source/Particles/RigidInjectedParticleContainer.cpp index 4b898a2b902..34d2a6c013f 100644 --- a/Source/Particles/RigidInjectedParticleContainer.cpp +++ b/Source/Particles/RigidInjectedParticleContainer.cpp @@ -410,6 +410,7 @@ RigidInjectedParticleContainer::PushP (int lev, Real dt, #ifdef PULSAR amrex::Real re_scaledratio = Pulsar::m_re_scaledratio; + amrex::Real scaledRR_rmax = Pulsar::m_scaledRR_rmax; int do_zero_uperpB_driftframe = Pulsar::m_do_zero_uperpB_driftframe; amrex::Real rmax_zero_uperp_driftframe = Pulsar::m_rmax_zero_uperpB_driftframe; #endif @@ -445,7 +446,7 @@ RigidInjectedParticleContainer::PushP (int lev, Real dt, Exp, Eyp, Ezp, Bxp, Byp, Bzp, qp, m, #ifdef PULSAR - re_scaledratio, + re_scaledratio, scaledRR_rmax, do_zero_uperpB_driftframe, r_p, rmax_zero_uperp_driftframe, #endif