Tutorial: LISA and gamma-ray telescopes as multi-messenger probes of a first-order cosmological phase transition

This page documents the workflow shown in the tutorial notebook tutorials/GWs_MF_from_FOPT.ipynb.

The example demonstrates how to use CosmoGW to compute the gravitational-wave background from sound waves and turbulence in a first-order phase transition and compare it with observational sensitivities.

Overview

The tutorial illustrates:

  • how to define a first-order phase-transition scenario with parameters such as $\alpha$, $\beta/H_\ast$, $v_w$, and $T_\ast$;

  • how to compute the GW spectra from sound waves and turbulence with CosmoGW;

  • how to compare the resulting spectra with LISA sensitivity curves and PTA constraints;

  • how to generate representative plots for the resulting signal.

Key ingredients

The example uses the following CosmoGW components:

  • cosmology for thermal quantities and cosmological conversions;

  • GW_templates for the sound-wave and turbulence spectra;

  • interferometry for sensitivity curves and SNR estimates;

  • plot_sets for plotting utilities;

  • hydro_bubbles and GW_models for related phase-transition quantities.

Minimal example

The core workflow is the following:

from cosmoGW import cosmology, GW_templates, plot_sets, interferometry, hydro_bubbles, GW_back, analysis, GW_models
import numpy as np
import astropy.units as u

alpha = 2
beta = 5
vw = 0.999999999
eps_turb = 1
T = 100 * u.MeV

# relativistic and adiabatic degrees of freedom
g = cosmology.thermal_g(T=T, s=0, file=True)
gS = cosmology.thermal_g(T=T, s=1, file=True)

# frequency range, normalized by mean bubble separation
s = np.logspace(-3, 4, 1000)

# spectrum from sound waves
freqs_sw_HL, OmGW_sw_HL = GW_templates.OmGW_spec_sw(
    s,
    alpha,
    beta,
    vws=vw,
    expansion=True,
    Nsh=1.,
    model_efficiency='fixed_value',
    model_K0='Espinosa',
    model_decay='sound_waves',
    model_shape='sw_HL',
    redshift=True,
    gstar=g,
    gS=gS,
    T=T,
)

# spectrum from turbulence
freqs_turb, OmGW_turb = GW_templates.OmGW_spec_turb_alphabeta(
    s,
    alpha,
    beta,
    vws=vw,
    eps_turb=eps_turb,
    redshift=True,
    gstar=g,
    gS=gS,
    T=T,
)

# LISA sensitivity curve
f_LISA, OmLISA, LISA_OmPLS = interferometry.read_sens(SNR=10, T=4)

Notes

  • This tutorial is intended as a high-level example rather than a fully reproducible documentation build from the notebook.

  • If you want the page to be more detailed, you can later expand it with:

    • a short explanation of each parameter,

    • a figure generated from the example,

    • a link back to the notebook source.