This repository is the companion code to the papers Primordial Stochastic Gravitational Wave Backgrounds from a Sharp Feature in Three-field Inflation (I and II), by Vikas Aragam, Sonia Paban, and Robert Rosati.
First clone the repo.
Example usage and plots reproducing many of the figures of our work are available in bog_plotting_clean.nb
, just clone the repo and get started.
The Bogoliubov coefficients for two and three fields are stored in the *.wl
files. The files with *Small*
in the name correspond to the branch of solutions with
-
regIIIcoeffsSimp
: these are the Bogoliubov coefficients of the sharp feature's excited state -
αsols
: the WKB exponents during the feature are$\pm \sqrt{\alpha_i}$ .
Not discussed in the papers but also included here are the two-field Bogoliubov coefficients including a constant contribution to the entropic mass. These should match the
First install Julia, then clone this repo. Open a terminal in the cloned repo's folder.
As a small aside, the Julia workflow is a little different than python -- because Julia uses just-in-time compilation, you'll avoid excessive recompilation if you leave a julia REPL running between editing and rerunning code.
Next we'll want to activate the environment in this folder
julia> import Pkg; Pkg.activate(".")
(as a shortcut, you can also press the ]
key and type activate .
).
The first time you run this, you'll also need install the dependencies and precompile them (you only have to do this once):
julia> Pkg.instantiate()
This will take a little while.
Then you'll be able to run the codes here.
Each time you re-open Julia, you'll need to reactivate the environment in this folder before running any of the codes. Then you can load the codes with
julia> include("bog_plotting_minimal.jl")
to generate a few plots interactively.
The code is organized around handling the description of the synthetic background in a SyntheticModelspec
, defined as
@with_kw struct SyntheticModelspec
d::Int = 3
feature_at::Float64 =23.0 # e-folds before the end of inflation
feature_fwhm::Float64=0.25
efolds::Float64 = 80.0
ϵ::Float64=0.01
Mss_ratio::Float64 =-3.0 # Mss/(Ω^2+τ^2)
Mss_const::Float64= 0.0 # H^2
Ω::Float64=1.0
τ::Float64=1.0
Msb_ratio::Float64= 0.0 # Msb/τ
Msb_const::Float64= 0.0 # H^2
Mbb_ratio::Float64= 1.0 # Mbb/τ^2
Mbb_const::Float64= 0.0 # H^2
Hinit::Float64 = 1e-4
end
The functions get_all_bogoliubov_mass(κ,sms::SyntheticModelspec)
, analyticPz(κ,sms::SyntheticModelspec)
, etc, all take a SyntheticModelspec
and return the quantities of interest. Please see the examples in bog_plotting_minimal.jl
. For now, all of the Bogoliubov coefficients in Julia are the branch that allows for
Alternatively, you can start a notebook-style interface with
julia> import Pluto; Pluto.run()
and selecting bog_plotting_pluto.jl
in your browser.
Pluto is a little different than Jupyter notebooks or Mathematica in that it is stateless, so changing a variable in one part of the notebook changes it in all parts of the notebook, and the order of the cells doesn't matter.
See https://github.com/fonsp/Pluto.jl/wiki/%F0%9F%94%8E-Basic-Commands-in-Pluto for some basic how-to's with Pluto notebooks.
If these results are useful to you, please cite the corresponding papers :)
@article{Aragam:2023adu,
author = "Aragam, Vikas and Paban, Sonia and Rosati, Robert",
title = "{Primordial stochastic gravitational wave backgrounds from a sharp feature in three-field inflation. Part~I. The radiation era}",
eprint = "2304.00065",
archivePrefix = "arXiv",
primaryClass = "astro-ph.CO",
reportNumber = "UTWI-9-2023",
doi = "10.1088/1475-7516/2023/11/014",
journal = "JCAP",
volume = "11",
pages = "014",
year = "2023"
}
@article{Aragam:2024nej,
author = "Aragam, Vikas and Paban, Sonia and Rosati, Robert",
title = "{Primordial Stochastic Gravitational Wave Backgrounds from a Sharp Feature in Three-field Inflation II: The Inflationary Era}",
eprint = "2409.09023",
archivePrefix = "arXiv",
primaryClass = "astro-ph.CO",
month = "9",
year = "2024"
}