Skip to content

maxwell_boltzmann

Module for classes and utilities for the Maxwell-Boltzmann distribution and the velocity (G) integrals

MBDistribution(grid, omega, m_chi, v_e)

Class for truncated Maxwell-Boltzmann distribution

Source code in darkmagic/maxwell_boltzmann.py
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def __init__(self, grid, omega, m_chi, v_e) -> None:
    self.grid = grid
    self.omega = omega
    self.m_chi = m_chi
    self.v_e = np.array(v_e)

    # Internal variables
    self._v_minus = None
    self._G0 = None
    self._G1 = None
    self._G2 = None
    self._F = None
    self._X = None
    self._eye_minus_qhat_qhat = None

v_minus property

Computes v_minus = min(|v_star|, Vesc) for each (q, omega) pair q: numpy array of shape (n_q, 3), momentum transfer omega: 2D numpy array of shape (n_q, n_modes), eigenmodes m_chi: float, DM mass v_e: vector, lab frame velocity of earth

G0 property

Computes the G0 integral for each (q, omega) pair See Eq. C9 in EFT paper (2009.13534)

G1 property

Computes the g1 integral for each (q, omega) pair. See Eq. C11 in EFT paper (2009.13534). Note that my definition here is slightly different from that equation. See formalism notes.

TODO: update this docstring with all the equations.

The result is a 3D array of shape (n_q, n_modes, 3) (i.e., for each q-point and mode, we get a 3-vector)

This integral is equivalent to

\[ g1 = (v_star \hat{q} - v_e - \vec{q}/2/m_chi) * g0 \]
this is defined slightly differently in the original

PhonoDark. Specifically,

\[ g1 = (v_star R[:,2] - v_e) * g0 \]

where R is a matrix that rotates \hat{q} to lie along the z-axis

G2 property

Computes the g2 integral for each (q, omega) pair. See Eq. C14 in EFT paper (2009.13534). Note that my definition here is slightly different, see the formalism notes.

TODO: update this with all the equations

The result is a 4D array of shape (n_q, n_modes, 3, 3) (i.e., for each q-point and mode, we get a 3x3 matrix)

This suffers from a similar problem to g1, the definition in PhonoDark is quite different from the paper (including the definition of what I call F below) and I don't know how to reconcile them. It also invovles a rotation, like in g1.

F property

Computes the very last term of Eq. (C14) in the EFT paper (2009.13534) This is the term that multiplies (1 - qhat \otimes qhat) in the g2 integral

X property

Computes the X vector for each (q, omega) pair

\[ X = (\omega / |q|) \hat{q} - (\mathbb{1} - \hat{q} \otimes \hat{q}) v_e \]

The result is a 3D array of shape (n_q, n_modes, 3)

eye_minus_qhat_qhat property

Computes the (3x3) matrix (1 - qhat \otimes qhat) for each q-point The result is a 3D array of shape (n_q, 3, 3)