diff --git a/Source/Particles/ParticleCreation/AddParticles.cpp b/Source/Particles/ParticleCreation/AddParticles.cpp index 73a4b327d1c..a161e425810 100644 --- a/Source/Particles/ParticleCreation/AddParticles.cpp +++ b/Source/Particles/ParticleCreation/AddParticles.cpp @@ -382,6 +382,7 @@ PhysicalParticleContainer::AddGaussianBeam (PlasmaInjector const& plasma_injecto const amrex::Real focal_distance = plasma_injector.focal_distance; const amrex::Real rotation_angle = plasma_injector.rotation_angle; const amrex::Vector rotation_axis = plasma_injector.rotation_axis; + const amrex::Real crabwaist_strength = plasma_injector.crabwaist_strength; // Declare temporary vectors on the CPU amrex::Gpu::HostVector particle_x; @@ -464,6 +465,14 @@ PhysicalParticleContainer::AddGaussianBeam (PlasmaInjector const& plasma_injecto x = x - (v_x - v_dot_n*n_x) * t; #endif } + + // crabwaist + if (plasma_injector.do_crabwaist){ + const Real acw = -crabwaist_strength/std::tan(2*rotation_angle); + u.x += 0.5 * acw * u.y*u.y; + y -= acw * x*u.y; + } + #if defined(WARPX_DIM_3D) || defined(WARPX_DIM_XZ) if (plasma_injector.do_rotation){