45 double cbl::cosmology::Cosmology::square_bulk_flow (
const double rr,
const double k_int_min,
const string method_Pk,
const double redshift,
const bool store_output,
const string output_root,
const double k_min,
const double k_max,
const double prec,
const string file_par)
48 Pk_0(method_Pk, redshift, store_output, output_root, k_min, k_max, prec, file_par);
50 function<double(
double)> ff;
52 if (method_Pk==
"EisensteinHu") {
53 if (m_sigma8<0)
ErrorCBL(
"sigma8 must be >0 using EisensteinHu!",
"square_bulk_flow",
"Velocities.cpp");
54 cbl::classfunc::func_V2 func (m_Omega_matter, m_Omega_baryon, m_Omega_neutrinos, m_massless_neutrinos, m_massive_neutrinos, m_Omega_DE, m_Omega_radiation, m_hh, m_scalar_amp, m_scalar_pivot, m_n_spec, m_w0, m_wa, m_fNL, m_type_NG, m_tau, m_model, m_unit, method_Pk, rr, redshift, store_output);
56 ff = bind(&cbl::classfunc::func_V2::operator(), func, std::placeholders::_1);
59 if (method_Pk==
"CAMB" || method_Pk==
"CLASS") {
60 vector<double> lgkk, lgPk;
61 bool do_nonlinear = 0;
63 Table_PkCodes(method_Pk, do_nonlinear, lgkk, lgPk, redshift, store_output, output_root, k_max, file_par);
65 cbl::classfunc::func_V2_Table func (m_Omega_matter, m_Omega_baryon, m_Omega_neutrinos, m_massless_neutrinos, m_massive_neutrinos, m_Omega_DE, m_Omega_radiation, m_hh, m_scalar_amp, m_scalar_pivot, m_n_spec, m_w0, m_wa, m_fNL, m_type_NG, m_tau, m_model, m_unit, lgkk, lgPk, rr, redshift);
67 ff = bind(&cbl::classfunc::func_V2_Table::operator(), func, std::placeholders::_1);
74 bulk = m_Pk0_EH*(Int1+Int2);
75 return pow(HH(redshift)/(1.+redshift),2)/(2.*
par::pi*
par::pi)*bulk;
84 cbl::classfunc::func_V2_Table func (m_Omega_matter, m_Omega_baryon, m_Omega_neutrinos, m_massless_neutrinos, m_massive_neutrinos, m_Omega_DE, m_Omega_radiation, m_hh, m_scalar_amp, m_scalar_pivot, m_n_spec, m_w0, m_wa, m_fNL, m_type_NG, m_tau, m_model, m_unit, lgkk, lgPk, rr, redshift);
86 function<double(
double)> ff = bind(&cbl::classfunc::func_V2_Table::operator(), func, std::placeholders::_1);
91 return pow(HH(redshift)/(1.+redshift),2)/(2.*
par::pi*
par::pi)*(Int1+Int2);
98 double cbl::cosmology::Cosmology::square_velocity_dispersion (
const double rr,
const double k_int_min,
const string method_Pk,
const double redshift,
const bool store_output,
const string output_root,
const double k_min,
const double k_max,
const double prec,
const string file_par)
103 Pk_0(method_Pk, redshift, store_output, output_root, k_min, k_max, prec, file_par);
104 function<double(
double)> ff;
106 if (method_Pk==
"EisensteinHu") {
107 if (m_sigma8<0)
ErrorCBL(
"sigma8 must be >0 using EisensteinHu!",
"square_velocity_dispersion",
"Velocities.cpp");
108 cbl::classfunc::func_sigma2 func (m_Omega_matter, m_Omega_baryon, m_Omega_neutrinos, m_massless_neutrinos, m_massive_neutrinos, m_Omega_DE, m_Omega_radiation, m_hh, m_scalar_amp, m_scalar_pivot, m_n_spec, m_w0, m_wa, m_fNL, m_type_NG, m_tau, m_model, m_unit, method_Pk, rr, redshift, store_output);
110 ff = bind(&cbl::classfunc::func_sigma2::operator(), func, std::placeholders::_1);
114 if (method_Pk==
"CAMB" || method_Pk==
"CLASS") {
115 vector<double> lgkk, lgPk;
116 bool do_nonlinear = 0;
118 Table_PkCodes(method_Pk, do_nonlinear, lgkk, lgPk, redshift, store_output, output_root, k_max, file_par);
120 cbl::classfunc::func_sigma2_Table func (m_Omega_matter, m_Omega_baryon, m_Omega_neutrinos, m_massless_neutrinos, m_massive_neutrinos, m_Omega_DE, m_Omega_radiation, m_hh, m_scalar_amp, m_scalar_pivot, m_n_spec, m_w0, m_wa, m_fNL, m_type_NG, m_tau, m_model, m_unit, lgkk, lgPk, rr, redshift);
122 ff = bind(&cbl::classfunc::func_sigma2_Table::operator(), func, std::placeholders::_1);
125 return pow(HH(redshift)/(1.+redshift),2)/(2.*
par::pi*
par::pi)*sigma2;
132 double cbl::cosmology::Cosmology::CMN (
const double rr,
const double k_int_min,
const string method_Pk,
const double redshift,
const bool store_output,
const string output_root,
const double k_max,
const string file_par)
const
136 function<double(
double)> ff1;
137 function<double(
double)> ff2;
139 if (method_Pk==
"EisensteinHu") {
141 cbl::classfunc::func_V2 func1 (m_Omega_matter, m_Omega_baryon, m_Omega_neutrinos, m_massless_neutrinos, m_massive_neutrinos, m_Omega_DE, m_Omega_radiation, m_hh, m_scalar_amp, m_scalar_pivot, m_n_spec, m_w0, m_wa, m_fNL, m_type_NG, m_tau, m_model, m_unit, method_Pk, rr, redshift, store_output);
142 cbl::classfunc::func_sigma2 func2 (m_Omega_matter, m_Omega_baryon, m_Omega_neutrinos, m_massless_neutrinos, m_massive_neutrinos, m_Omega_DE, m_Omega_radiation, m_hh, m_scalar_amp, m_scalar_pivot, m_n_spec, m_w0, m_wa, m_fNL, m_type_NG, m_tau, m_model, m_unit, method_Pk, rr, redshift, store_output);
144 ff1 = bind(&cbl::classfunc::func_V2::operator(), func1, std::placeholders::_1);
145 ff2 = bind(&cbl::classfunc::func_sigma2::operator(), func2, std::placeholders::_1);
148 if (method_Pk==
"CAMB" || method_Pk==
"CLASS") {
150 vector<double> lgkk, lgPk;
151 bool do_nonlinear = 0;
153 Table_PkCodes(method_Pk, do_nonlinear, lgkk, lgPk, redshift, store_output, output_root, k_max, file_par);
155 cbl::classfunc::func_V2_Table func1 (m_Omega_matter, m_Omega_baryon, m_Omega_neutrinos, m_massless_neutrinos, m_massive_neutrinos, m_Omega_DE, m_Omega_radiation, m_hh, m_scalar_amp, m_scalar_pivot, m_n_spec, m_w0, m_wa, m_fNL, m_type_NG, m_tau, m_model, m_unit, lgkk, lgPk, rr, redshift);
156 cbl::classfunc::func_sigma2_Table func2 (m_Omega_matter, m_Omega_baryon, m_Omega_neutrinos, m_massless_neutrinos, m_massive_neutrinos, m_Omega_DE, m_Omega_radiation, m_hh, m_scalar_amp, m_scalar_pivot, m_n_spec, m_w0, m_wa, m_fNL, m_type_NG, m_tau, m_model, m_unit, lgkk, lgPk, rr, redshift);
158 ff1 = bind(&cbl::classfunc::func_V2_Table::operator(), func1, std::placeholders::_1);
159 ff2 = bind(&cbl::classfunc::func_sigma2_Table::operator(), func2, std::placeholders::_1);
double square_velocity_dispersion(const double rr, const double k_int_min, const std::string method_Pk, const double redshift, const bool store_output=true, const std::string output_root="test", const double k_min=0.001, const double k_max=100., const double prec=1.e-2, const std::string file_par=par::defaultString)
the mean square velocity dispersion
double square_bulk_flow_Table(const double rr, const double k_int_min, const std::vector< double > lgkk, const std::vector< double > lgPk, const double redshift) const
the mean square bulk flow
double square_bulk_flow(const double rr, const double k_int_min, const std::string method_Pk, const double redshift, const bool store_output=true, const std::string output_root="test", const double k_min=0.001, const double k_max=100., const double prec=1.e-2, const std::string file_par=par::defaultString)
the mean square bulk flow
double CMN(const double rr, const double k_int_min, const std::string method_Pk, const double redshift, const bool store_output=true, const std::string output_root="test", const double k_max=100., const std::string file_par=par::defaultString) const
the Cosmic Mach Number
static const double pi
: the ratio of a circle's circumference to its diameter
double GSL_integrate_qag(gsl_function Func, const double a, const double b, const double rel_err=1.e-3, const double abs_err=0, const int limit_size=1000, const int rule=6)
integral, computed using the GSL qag method
The global namespace of the CosmoBolognaLib
int ErrorCBL(const std::string msg, const std::string functionCBL, const std::string fileCBL, const cbl::glob::ExitCode exitCode=cbl::glob::ExitCode::_error_)
throw an exception: it is used for handling exceptions inside the CosmoBolognaLib