Implemented Grids, Particles and Binary Interactions

Grids

Three types of grids for momentum space and angular space have been implemented

Grid SpacingAbr. StringNotes
Uniform"u"Uniform grid spacing between the upper and lower bounds
Log10"l"Exponentially increasing grid spacing, uniform in Log10 space from upper to lower bounds (bounds should be given as Log10(bound value))
Binary"b"Fractionally decreasing grid spacing for angular grids. Bin widths half as they move away from u=0 in both directions to u=+-1.

Particles

Below is a table of the currently implemented particles (i.e. their particle properties are defined within the code)

ParticleAbr. StringNotes
Sphere"Sph"Mass taken to be the mass of the Proton
Electron"Ele"
Positron"Pos"
Proton"Pro"

Implemented Interactions

These binary interactions have currently been implemented:

Adding User Defined Interactions

Users may add their own binary interaction cross sections to the /src/commom/DifferentialCrossSectionFunctions.jl file. Functions should be named in the following format: "sigma_name1name2name3name4" and "dsigmadt_name1name2name3name4" where the names are three letter abbreviations of the particles involved (see Particles for examples). The named pairs name1name2 and name3name4 should be in alphabetical order. Both the total cross section and differential cross sections must be provided for a single interaction.

All cross sections are to be defined in terms of the Mandelstram variables $s=(p_1^\mu+p_2^\mu)^2$, $t=(p_1^\mu-p_3^\mu)^2$ and $u=(p_2^\mu-p_3^\mu)^2$. To maintain accuracy of cross sections and avoid DivZero issues when momenta is small compared to the mass of the particles (at Float64 precision), each Mandelstram variable in the cross sections should be split into two components:

  • s=sSmol+sBig where $sBig = (m_1+m_2)^2$
  • t=tSmol+tBig where $tBig = (m_1-m_3)^2$
  • u=uSmol+uBig where $uBig = (m_2-m_3)^2$

The "Big" part typically cancels with terms in the cross sections, leading to better accuracy. Therefore the function should defined as follows:

function sigma_name1name2name3name4(sSmol::Float64,sBig::Float64,tSmol::Float64,tBig::Float64,uSmol::Float64,uBig::Float64)
    ... 
end

function dsigmadt_name1name2name3name4(sSmol::Float64,sBig::Float64,tSmol::Float64,tBig::Float64,uSmol::Float64,uBig::Float64)
    ... 
end

where all of sSmol, sBig, tSmol, tBig, uSmol, and uBig must be included in the function definition irrespective of if they actually appear in the cross section. It is also important to define a normalisation for the cross sections to avoid emission and absorption terms becoming small compared to the Float64 minimum.

Warning

Total cross sections may typically be defined/derived in textbooks and other sources to include division by $1/2$ if output states are identical. This factor should NOT be included here as this factor is included separably in the code.

Differential and Total Cross Section Functions

Warning

To ensure greater computational accuracy and prevent underflow of $Float64$ precision values, all cross sections have a normalisation defined in the function documentation.

BoltzmannCollisionIntegral.sigma_SphSphSphSphFunction
sigma_SphSphSphSph(sSmol,sBig)

returns the total cross section for the binary interaction of hard spheres with normalised masses (wrt electron mass) $m_1,m_2,m_3,m_4=m_\text{Sph}$. Normalised by $πR_{Sph}^2$.

\[σ = \frac{1}{2}\]

Arguments

  • sSmol::Float64 : s - sBig
  • sBig::Float64 : (m1+m2)^2
source
BoltzmannCollisionIntegral.dsigmadt_SphSphSphSphFunction
dsigmadt_SphSphSphSph(sSmol,sBig,tSmol,tBig,uSmol,uBig)

returns the differential cross section for the binary interaction of hard spheres with normalised masses $m_1,m_2,m_3,m_4=m_{\text{Sph}}$. Normalised by $πR_{Sph}^2$.

\[\frac{dσ}{dt} = \frac{1}{s-4m_{\text{Sph}}^2}\]

Arguments

  • sSmol::Float64 : $s - sBig$
  • sBig::Float64 : $(m_1+m_2)^2=4m_{\text{Sph}}^2$
  • tSmol::Float64 : $t - tBig$
  • tBig::Float64 : $(m_3-m_1)^2=0$
  • uSmol::Float64 : $u - uBig$
  • uBig::Float64 : $(m_2-m_3)^2=0$
source
BoltzmannCollisionIntegral.sigma_ElePosPhoPhoFunction
sigma_ElePosPhoPho(sSmol,sBig)

returns the total cross section for electron positron annihilation to two photons. Berestetskii 1982 (88.6). Masses and momenta are normalised by the rest mass of the electron $m_{\text{Ele}}$ and the cross section is normalised by $σ_T$.

\[σ_{e^+e^-\rightarrow\gamma\gamma} = \frac{3}{4s^2(s-4)}\left((s^2+4s-8)\log\left(\frac{\sqrt{s}+\sqrt{s-4}}{\sqrt{s}-\sqrt{s-4}}\right)-(s+4)\sqrt{s(s-4)}\right)\]

Arguments

  • sSmol::Float64 : $s - sBig$
  • sBig::Float64 : $(m_1+m_2)^2 = 4 ∴ s = sSmol + 4$
source
BoltzmannCollisionIntegral.dsigmadt_ElePosPhoPhoFunction
dsigmadt_ElePosPhoPho(sSmol,sBig,tSmol,tBig,uSmol,uBig)

returns the differential cross section for electron positron annihilation to two photons. Berestetskii 1982 (88.4). Masses and momenta are normalised by the rest mass of the electron $m_{\text{Ele}}$ and the cross section is normalised by $σ_T$.

\[\frac{dσ_{e^+e^-\rightarrow\gamma\gamma}}{dt} = -\frac{3}{s(s-4)}\left(\left(\frac{1}{t-1}+\frac{1}{u-1}\right)^2+\left(\frac{1}{t-1}+\frac{1}{u-1}\right)-\frac{1}{4}\left(\frac{t-1}{u-1}+\frac{u-1}{t-1}\right)\right)\]

Arguments

  • sSmol::Float64 : $s - sBig$
  • sBig::Float64 : $(m_1+m_2)^2 = 4 ∴ s = sSmol + 4$
  • tSmol::Float64 : $t - tBig$
  • tBig::Float64 : $(m_3-m_1)^2 = 1 ∴ t = tSmol + 1$
  • uSmol::Float64 : $u - uBig$
  • uBig::Float64 : $(m2-m3)^2 = 1 ∴ u = uSmol + 1$
source
BoltzmannCollisionIntegral.sigma_PhoPhoElePosFunction
sigma_PhoPhoElePos(sSmol,sBig)

returns the total cross section for photon-photon annihilation to electron-positron pair. Masses and momenta are normalised by the rest mass of the electron $m_{\text{Ele}}$ and the cross section is normalised by $σ_T$.

\[σ_{\gamma\gamma\rightarrow e^+e^-} = \frac{3}{2s^3}\left((s^2+4s-8)\log\left(\frac{\sqrt(s)+\sqrt(s-4)}{\sqrt(s)-\sqrt(s-4)}\right)-(s+4)\sqrt{s(s-4)}\right)\]

Arguments

  • sSmol::Float64 : $s - sBig$
  • sBig::Float64 : $(m_1+m_2)^2 = 0 ∴ s = sSmol$
source
BoltzmannCollisionIntegral.dsigmadt_PhoPhoElePosFunction
dsigmadt_PhoPhoElePos(sSmol,sBig,tSmol,tBig,uSmol,uBig)

returns the differential cross section for photon-photon annihilation to electron-positron pair. (Inverse proceess of electron positron annihilation to two photons). Masses and momenta are normalised by the rest mass of the electron $m_{\text{Ele}}$ and the cross section is normalised by $σ_T$.

\[\frac{dσ_{\gamma\gamma\rightarrow e^+e^-}}{dt} = -\frac{3}{s^2}\left(\left(\frac{1}{t-1}+\frac{1}{u-1}\right)^2+\left(\frac{1}{t-1}+\frac{1}{u-1}\right)-\frac{1}{4}\left(\frac{t-1}{u-1}+\frac{u-1}{t-1}\right)\right)\]

Arguments

  • sSmol::Float64 : $s - sBig$
  • sBig::Float64 : $(m_1+m_2)^2 = 0 ∴ s = sSmol$
  • tSmol::Float64 : $t - tBig$
  • tBig::Float64 : $(m_3-m_1)^2 = 1 ∴ t = tSmol + 1$
  • uSmol::Float64 : $u - uBig$
  • uBig::Float64 : $(m_2-m_3)^2 = 1 ∴ u = uSmol + 1$
source
BoltzmannCollisionIntegral.sigma_ElePhoElePhoFunction
sigma_ElePhoElePho(sSmol,sBig)

returns the total cross section for electron-photon (Compton) scattering. Berestetskii 1982 (86.16). Masses and momenta are normalised by the rest mass of the electron $m_{\text{Ele}}$ and the cross section is normalised by $σ_T$.

\[\sigma_{e\gamma\rightarrow e\gamma}(s)=\frac{3}{4(s-1)}\left[(1-\frac{4}{\left(s-1\right)}-\frac{8m_e^4}{\left(s-1\right)^2})\log\left(s\right)+\frac{1}{2}+\frac{8}{s-1}-\frac{1}{2s^2}\right]\]

Arguments

  • sSmol::Float64 : $s - sBig$
  • sBig::Float64 : $(m_1+m_2)^2 = 1 ∴ s = sSmol + 1$
source
BoltzmannCollisionIntegral.dsigmadt_ElePhoElePhoFunction
dsigmadt_ElePhoElePho(sSmol,sBig,tSmol,tBig,uSmol,uBig)

returns the differential cross section for electron-photon scattering (Compton) scattering. Berestetskii 1982 (86.6). Masses and momenta are normalised by the rest mass of the electron $m_{\text{Ele}}$ and the cross section is normalised by $σ_T$.

\[\frac{d\sigma_{e\gamma\rightarrow e\gamma}}{dt}(s,t)=\frac{3}{(s-1)^2}\left[\left(\frac{1}{s-1}+\frac{1}{u-1}\right)^2+\left(\frac{1}{s-1}+\frac{1}{u-1}\right)-\frac{1}{4}\left(\frac{s-1}{u-1}+\frac{u-1}{s-1}\right)\right]\]

Arguments

  • sSmol::Float64 : $s - sBig$
  • sBig::Float64 : $(m_1+m_2)^2 = 1 ∴ s = sSmol + 1$
  • tSmol::Float64 : $t - tBig$
  • tBig::Float64 : $(m_3-m_1)^2 = 0 ∴ t = tSmol$
  • uSmol::Float64 : $u - uBig$
  • uBig::Float64 : $(m_2-m_3)^2 = 1 ∴ u = uSmol + 1$
source