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:
cosmologyfor thermal quantities and cosmological conversions;GW_templatesfor the sound-wave and turbulence spectra;interferometryfor sensitivity curves and SNR estimates;plot_setsfor plotting utilities;hydro_bubblesandGW_modelsfor 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.