BSMPT 3.1.3
BSMPT - Beyond the Standard Model Phase Transitions : A C++ package for the computation of the EWPT in BSM models
Loading...
Searching...
No Matches
gw.h
1// Copyright (C) 2024 Lisa Biermann, Margarete Mühlleitner, Rui Santos, João
2// Viana
3//
4// SPDX-FileCopyrightText: 2024 Lisa Biermann, Margarete Mühlleitner, Rui
5// Santos, João Viana
6//
7// SPDX-License-Identifier: GPL-3.0-or-later
8
9#pragma once
10
15#include <BSMPT/bounce_solution/bounce_solution.h> // BounceSolution
18#include <algorithm>
19#include <cmath>
20#include <functional>
21#include <gsl/gsl_errno.h>
22#include <gsl/gsl_integration.h>
23#include <gsl/gsl_math.h>
24#include <gsl/gsl_odeiv2.h>
25#include <iostream>
26#include <numeric>
27#include <vector>
28namespace BSMPT
29{
30
32{
33 std::optional<double> Omega_b;
34 std::optional<double> f_b;
35 std::optional<double> n1;
36 std::optional<double> n2;
37 std::optional<double> a1;
38
39 inline bool IsDefined() const
40 {
41 return Omega_b.has_value() && f_b.has_value() && n1.has_value() &&
42 n2.has_value() && a1.has_value();
43 }
44};
45
47{
48 std::optional<double> Omega_2;
49 std::optional<double> f_1;
50 std::optional<double> f_2;
51 std::optional<double> n1;
52 std::optional<double> n2;
53 std::optional<double> n3;
54 std::optional<double> a1;
55 std::optional<double> a2;
56
57 inline bool IsDefined() const
58 {
59 return Omega_2.has_value() && f_1.has_value() && f_2.has_value() &&
60 n1.has_value() && n2.has_value() && n3.has_value() &&
61 a1.has_value() && a2.has_value();
62 }
63};
64
69{
70 bool swON = true; // enable sound wave contribution by default
71 bool turbON = true; // enable turbulence contribution by default
72 bool collisionON = true; // enable collision contribution by default
73 double transitionTemp = false; // transition temperature
74 double reheatingTemp = false; // reheating temperature
75 double PTStrength = false; // strength of EW phase transition
76 double betaH = false; // inverse time scale beta/H
77 double vw = false; // bubble wall velocity
78 double vCJ = false; // Chapman-Jouguet velocity
79 double XiShock = false; // Shock speed
80 double Csound_false = false; // speed sound false vacuum
81 double Csound_true = false; // speed sound true vacuum
82 double kappa_col = false; // efficiency factor for collision
83 double kappa_sw = false; // efficiency factor for sw
84 double K_sw = false; // kinetic energy fraction for sound waves
85 double HR = false; // time scale x max. velocity for sound waves
86 int pnlo_scaling = false; // pressure scaling at NLO, 1 -> N processes
87 double Epsilon_Turb = false; // fraction of overall kinetic energy in bulk
88 // motion that is converted to MHD
89 double gstar = false; // number of eff. d.o.f.
90 double FGW0 = false; // Redshift factor for the fractional energy density
91 double Hstar0 =
92 false; // Reduced Hubble rate at transition temperature redshift today
93
94 BPLParameters CollisionParameter;
95 DBPLParameters SoundWaveParameter;
96 DBPLParameters TurbulanceParameter;
97
98 StatusGW status = StatusGW::NotSet; // gw calculation status
99};
100
102{
103private:
104public:
107 const TransitionTemperature &which_transition_temp =
108 TransitionTemperature::Percolation);
110
117 double CalcEpsTurb(double epsturb_in);
118
122 const double AbsErr = 0;
123
127 const double RelErr = 1e-6;
128
133 double h = 0.674;
134
138 void CalcPeakCollision();
139
146 double CalculateXiShell();
147
152 void CalcPeakSoundWave();
153
157 void CalcPeakTurbulence();
158
169 double BPL(const double &f, const BPLParameters &par) const;
170
180 double DBPL(const double &f, const DBPLParameters &par) const;
181
187 double CalcGWAmplitude(double f);
188
196 double GetSNR(const double fmin, const double fmax, const double T = 3);
197
201 friend double snr_integrand(double freq, void *params);
202};
203
210double SIfunc(const double f);
211
218double Rfunc(const double f);
219
226double powspec_density(const double f);
227
234double h2OmSens(const double f);
235
241struct resultErrorPair
242Nintegrate_SNR(GravitationalWave &obj, const double fmin, const double fmax);
243
251double GetK_sw(const double &alpha, const double &kappa_sw);
252
259double GetHstar0(const double &temp, const double &gstar);
260
267double GetKtilde(const double &alpha);
268
276double GetHtauSH(const double HR, const double K_sw);
277
285double GetHtauSW(const double HR, const double K_sw);
286
295double GetYpsilon(const double HR, const double K_sw);
296
297namespace kappa
298{
299// Compute kappa_sw https://arxiv.org/abs/2010.09744
300
305enum class ExpansionMode
306{
307 Deflagration,
308 Hybrid,
309 Detonation
310};
311
319double mu(double a, double b);
328double getwow(double a, double b);
329void custom_error_handler(const char *reason,
330 const char *file,
331 int line,
332 int gsl_errno);
341std::pair<double, ExpansionMode> getvm(double al, double vw, double cs2b);
352int dfdv(double v, const double y[], double dydv[], void *params);
361std::vector<std::vector<double>> solve_ode(double vw, double v0, double cs2);
362double integrate(const std::vector<double> &y, const std::vector<double> &x);
377std::pair<double, double>
378getKandWow(double vw,
379 double v0,
380 double cs2,
381 std::vector<std::vector<double>> &vprofile);
392double alN(double al, double wow, double cs2b, double cs2s);
405double kappaNuMuModel(double cs2b,
406 double cs2s,
407 double al,
408 double vw,
409 std::vector<std::vector<double>> &vprofile);
421double kappaNuMuModel(double cs2b, double cs2s, double al, double vw);
422
435double Getkappa_col(const double &Tstar,
436 const int &pnlo_scaling,
437 const double &HR,
438 BounceSolution &BACalc);
439} // namespace kappa
440} // namespace BSMPT
BounceSolution class that handles the calculation of the bounce solution as well as the calculation o...
Definition bounce_solution.h:41
Definition gw.h:102
void CalcPeakCollision()
Calculate peak amplitude and frequency for GW signal from collision.
Definition gw.cpp:113
double CalculateXiShell()
Calcualte the fluid shell thickness .
Definition gw.cpp:140
double h
reduced Hubble constant
Definition gw.h:133
const double RelErr
RelErr relative error for numerical integration.
Definition gw.h:127
const double AbsErr
AbsErr absolute error for numerical integration.
Definition gw.h:122
double CalcEpsTurb(double epsturb_in)
CalcEpsTurb calculate epsilon for turbulence contribution.
Definition gw.cpp:101
double GetSNR(const double fmin, const double fmax, const double T=3)
GetSNR.
Definition gw.cpp:267
double CalcGWAmplitude(double f)
Amplitude of GW signal as a function of.
Definition gw.cpp:245
void CalcPeakSoundWave()
Calculate peak amplitude and frequency for GW signal from sound waves.
Definition gw.cpp:156
double DBPL(const double &f, const DBPLParameters &par) const
Double broken power law spectrum .
Definition gw.cpp:225
double BPL(const double &f, const BPLParameters &par) const
Broken power law spectrum .
Definition gw.cpp:213
void CalcPeakTurbulence()
Calculate peak amplitude and frequency for GW signal from turbulence.
Definition gw.cpp:187
friend double snr_integrand(double freq, void *params)
snr_integrand friend to define inner integrand of SNR integral
Definition gw.cpp:301
This classes calculates the Bounce action of the potential with a set temperature.
Definition CalculateEtaInterface.h:24
double SIfunc(const double f)
SIfunc.
Definition gw.cpp:275
double powspec_density(const double f)
powspec_density
Definition gw.cpp:287
double GetK_sw(const double &alpha, const double &kappa_sw)
Get the kinetic energy fraction .
Definition gw.cpp:338
double h2OmSens(const double f)
return the value of LISA mission nominal sensitivity
Definition gw.cpp:294
struct resultErrorPair Nintegrate_SNR(GravitationalWave &obj, const double fmin, const double fmax)
Nintegrate_SNR Numerical integration of SNR integral.
Definition gw.cpp:310
StatusGW
Possible results for the GW and bounce_sol class.
Definition minimum_tracer.h:172
TransitionTemperature
Possible transitions temperatures.
Definition minimum_tracer.h:191
double GetHstar0(const double &temp, const double &gstar)
Calculate the Hubble rate at transition time refshifted to today.
Definition gw.cpp:343
double GetYpsilon(const double HR, const double K_sw)
Calculate from https://arxiv.org/abs/1903.09642.
Definition gw.cpp:96
double Rfunc(const double f)
Rfunc.
Definition gw.cpp:281
double GetHtauSW(const double HR, const double K_sw)
Calculate .
Definition gw.cpp:91
double GetHtauSH(const double HR, const double K_sw)
Calculate .
Definition gw.cpp:86
double GetKtilde(const double &alpha)
Get .
Definition gw.cpp:348
Definition gw.h:32
Definition gw.h:47
struct to store all calculated GW data
Definition gw.h:69
Definition bounce_solution.h:31