ImpactX
Public Member Functions | Private Attributes | List of all members
impactx::distribution::Triangle Struct Reference

#include <Triangle.H>

Public Member Functions

 Triangle (amrex::ParticleReal const lambdax, amrex::ParticleReal const lambday, amrex::ParticleReal const lambdat, amrex::ParticleReal const lambdapx, amrex::ParticleReal const lambdapy, amrex::ParticleReal const lambdapt, amrex::ParticleReal const muxpx=0.0, amrex::ParticleReal const muypy=0.0, amrex::ParticleReal const mutpt=0.0)
 
void initialize ([[maybe_unused]] amrex::ParticleReal bunch_charge, [[maybe_unused]] RefPart const &ref)
 
void finalize ()
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void operator() (amrex::ParticleReal &x, amrex::ParticleReal &y, amrex::ParticleReal &t, amrex::ParticleReal &px, amrex::ParticleReal &py, amrex::ParticleReal &pt, amrex::RandomEngine const &engine) const
 

Private Attributes

amrex::ParticleReal m_lambdaX
 
amrex::ParticleReal m_lambdaY
 
amrex::ParticleReal m_lambdaT
 
amrex::ParticleReal m_lambdaPx
 related position axis intercepts (length) of the phase space ellipse More...
 
amrex::ParticleReal m_lambdaPy
 
amrex::ParticleReal m_lambdaPt
 
amrex::ParticleReal m_muxpx
 related momentum axis intercepts of the phase space ellipse More...
 
amrex::ParticleReal m_muypy
 
amrex::ParticleReal m_mutpt
 

Constructor & Destructor Documentation

◆ Triangle()

impactx::distribution::Triangle::Triangle ( amrex::ParticleReal const  lambdax,
amrex::ParticleReal const  lambday,
amrex::ParticleReal const  lambdat,
amrex::ParticleReal const  lambdapx,
amrex::ParticleReal const  lambdapy,
amrex::ParticleReal const  lambdapt,
amrex::ParticleReal const  muxpx = 0.0,
amrex::ParticleReal const  muypy = 0.0,
amrex::ParticleReal const  mutpt = 0.0 
)
inline

A Triangle distribution for LPA applications.

Return sampling from a ramped, triangular current profile with a Gaussian energy spread (possibly correlated). The transverse distribution is a 4D waterbag.

Parameters
lambdax,lambday,lambdatfor zero correlation, these are the related RMS sizes (in meters)
lambdapx,lambdapy,lambdaptRMS momentum
muxpx,muypy,mutptcorrelation length-momentum

Member Function Documentation

◆ finalize()

void impactx::distribution::Triangle::finalize ( )
inline

Close and deallocate all data and handles.

Nothing to do here.

◆ initialize()

void impactx::distribution::Triangle::initialize ( [[maybe_unused] ] amrex::ParticleReal  bunch_charge,
[[maybe_unused] ] RefPart const &  ref 
)
inline

Initialize the distribution.

Nothing to do here.

Parameters
bunch_chargecharge of the beam in C
refthe reference particle

◆ operator()()

AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void impactx::distribution::Triangle::operator() ( amrex::ParticleReal &  x,
amrex::ParticleReal &  y,
amrex::ParticleReal &  t,
amrex::ParticleReal &  px,
amrex::ParticleReal &  py,
amrex::ParticleReal &  pt,
amrex::RandomEngine const &  engine 
) const
inline

Return 1 6D particle coordinate

Parameters
xparticle position in x
yparticle position in y
tparticle position in t
pxparticle momentum in x
pyparticle momentum in y
ptparticle momentum in t
enginea random number engine (with associated state)

Member Data Documentation

◆ m_lambdaPt

amrex::ParticleReal impactx::distribution::Triangle::m_lambdaPt
private

◆ m_lambdaPx

amrex::ParticleReal impactx::distribution::Triangle::m_lambdaPx
private

related position axis intercepts (length) of the phase space ellipse

◆ m_lambdaPy

amrex::ParticleReal impactx::distribution::Triangle::m_lambdaPy
private

◆ m_lambdaT

amrex::ParticleReal impactx::distribution::Triangle::m_lambdaT
private

◆ m_lambdaX

amrex::ParticleReal impactx::distribution::Triangle::m_lambdaX
private

◆ m_lambdaY

amrex::ParticleReal impactx::distribution::Triangle::m_lambdaY
private

◆ m_mutpt

amrex::ParticleReal impactx::distribution::Triangle::m_mutpt
private

◆ m_muxpx

amrex::ParticleReal impactx::distribution::Triangle::m_muxpx
private

related momentum axis intercepts of the phase space ellipse

◆ m_muypy

amrex::ParticleReal impactx::distribution::Triangle::m_muypy
private

The documentation for this struct was generated from the following file: