WallGoCollision documentation

WallGoCollision is a scientific library for computing Boltzmann collision integrals for use with the Python package WallGo. The library is written in C++17 and can be compiled as a Python module for seamless interoperation with WallGo. Collision integrations are typically by far the most computationally intensive part of the WallGo wall velocity pipeline. WallGoCollision performs these integrations using native C++, allowing for performance optimizations that would not be possible in a pure Python package.

What it does

The purpose of WallGoCollision is to compute integrals of the form

\[ \mathcal{C}_a[\delta f] \propto \sum_{bcd} \int \frac{d^3\mathbf{p}_2 d^3\mathbf{p}_3 d^3\mathbf{p}_4}{E_2 E_3 E_4} \delta^4(p_1 + p_2 - p_3 - p_4) |M_{ab \rightarrow cd}(p_1, p_2; p_3, p_4)|^2 \mathcal{P}_{ab \rightarrow cd}[\delta f], \]

appearing in the collision operator of the relativistic Boltzmann equation for particle species \(a\). WallGo, and WallGoCollision by extension, uses the spectral approach of Cline & Laurent [1] to Boltzmann integration, meaning the integrals must be evaluated on a 4D grid of momenta and suitable basis polynomials. The integrations are performed using importance-sampled Monte Carlo. Integrals on different grid points are independent and trivially computable in parallel. We support OpenMP for parallel evaluation. Currently WallGoCollision is restricted to the linearized version of collision integrals. See the physics page or the WallGo article [2] for more details on the physics.

The user must provide relevant particle content for their model, matrix elements \(M_{ab \rightarrow cd}\) of their choice in a symbolic form, and numerical values for model parameters appearing in the matrix elements. These can be computed automatically using the WallGoMatrix package. To get started, see the quickstart page, code examples in C++ or code examples using the Python interface on WallGo repo.

Current limitations

  • Only 2-to-2 collision processes are supported.

  • All momentum dependence in the matrix elements must be expressed in terms of the Mandelstam variables \(s,t\) and \(u\).

  • All physics parameters that appear in the matrix elements must be constant, floating point valued numbers. Dimensionful parameters must be given in units of the temperature (ie. WallGoCollision works in units of \(T=1\)). The limitation here is that parameters that vary along the momentum/position grid are not supported.