WallGo.PotentialTools.integrals

One-loop thermal integrals used to compute the effective potential.

For 1-loop thermal potential WITHOUT high-T approximations, need to calculate

\[ \begin{align}\begin{aligned}J_b(x) = \int_0^\infty dy y^2 \ln( 1 - \exp(-\sqrt(y^2 + x) )) \text{ (bosonic),}\\J_f(x) = -\int_0^\infty dy y^2 \ln( 1 + \exp(-\sqrt(y^2 + x) )) \text{ (fermionic)}.\end{aligned}\end{align} \]

The thermal 1-loop correction from one particle species with N degrees of freedom is then

\[V_1(T) = T^4/(2\pi^2) N J(m^2 / T^2).\]

See e.g. CosmoTransitions (arXiv:1109.4189, eq. (12)).

Particularly for scalars the \(m^2\) can be negative so we allow \(x < 0\), but we calculate the real parts of integrals only. NB: for large negative \(x\) the integrals are slow to compute and good convergence is not guaranteed by the quad integrator used here.

Note also that the while the analytical continuation to \(x < 0\) makes sense mathematically, it is physically less clear whether this is the right thing to use. Here we just provide implementations of \(J_b(x)\) and \(J_f(x)\); it is up to the user to decide how to deal with negative input.

Usage: We define JbIntegral and JbIntegral are defined as InterpolatableFunction to allow optimized evaluation. The individual integrals are then collected in the Integrals class below. WallGo provides a default Integrals object defined in WallGo’s __init__.py, accessible as WallGo.defaultIntegrals. Once WallGo.initialize() is called, we optimize Jb and Jf in WallGo.defaultIntegrals by loading their interpolation tables.

Classes

Integrals()

Class Integrals -- Just collects common integrals in one place.

JbIntegral([bUseAdaptiveInterpolation, ...])

Bosonic \(J_b(x)\), in practice use with \(x = m^2 / T^2\).

JfIntegral([bUseAdaptiveInterpolation, ...])

Fermionic \(J_f(x)\), in practice use with \(x = m^2 / T^2\).

class Integrals[source]

Class Integrals – Just collects common integrals in one place. This is better than using global objects since in some cases we prefer their interpolated versions.

Jb: JbIntegral

Thermal 1-loop integral (bosonic): \(J_b(x) = \int_0^\infty dy y^2 \ln( 1 - \exp(-\sqrt(y^2 + x) ))\)

Jf: JfIntegral

Thermal 1-loop integral (fermionic): \(J_f(x) = -\int_0^\infty dy y^2 \ln( 1 + \exp(-\sqrt(y^2 + x) ))\)

class JbIntegral(bUseAdaptiveInterpolation=True, initialInterpolationPointCount=1000, returnValueCount=2)[source]

Bosonic \(J_b(x)\), in practice use with \(x = m^2 / T^2\).

Optional argument returnValueCount should be set by the user if using list-valued functions.

Parameters:
  • bUseAdaptiveInterpolation (bool, optional) – Whether or not to use adaptive interpolation. The default is True.

  • initialInterpolationPointCount (int, optional) – Initial number of points for the interpolation. The default is 1000.

  • returnValueCount (int, optional) – Number of outputs returned by the function. The default is 1.

class JfIntegral(bUseAdaptiveInterpolation=True, initialInterpolationPointCount=1000, returnValueCount=2)[source]

Fermionic \(J_f(x)\), in practice use with \(x = m^2 / T^2\). This is very similar to the bosonic counterpart \(J_b\).

Optional argument returnValueCount should be set by the user if using list-valued functions.

Parameters:
  • bUseAdaptiveInterpolation (bool, optional) – Whether or not to use adaptive interpolation. The default is True.

  • initialInterpolationPointCount (int, optional) – Initial number of points for the interpolation. The default is 1000.

  • returnValueCount (int, optional) – Number of outputs returned by the function. The default is 1.