FML
Public Member Functions | Data Fields
FML::COSMOLOGY::SPHERICALCOLLAPSE::SphericalCollapseModel Class Reference

The class contains all the info about the model needed to run the spherical collapse and halomodel Cosmology/gravity functions provided using lambda functions. More...

#include <SphericalCollapseModel.h>

Public Member Functions

 SphericalCollapseModel ()
 
 SphericalCollapseModel (Func1 Eofx, Func1 OmegaMofx, Func1 logEprimeofx, Func1 muofx, Func1 wofx)
 
double virial_condition (double delta, double delta_prime, double roverR, double x) const
 Virial condition. More...
 
double nonlinear_condition (double delta, double delta_prime, double roverR, double x) const
 Define the non-linear time when this quantity is zero Using delta-1 = 0. More...
 
void info () const
 Print useful info. More...
 
void set_model_lcdm ()
 Set the model to be lcdm. More...
 
int ode_system_linear_growth (double x, const double *y, double *dydx) const
 Define the linear ODE system 0 = delta_lin 1 = ddeltadloga_lin. More...
 
int ode_system_non_linear_growth (double x, const double *y, double *dydx) const
 Define the non-linear + linear ODE system for spherical collapse 0 = delta 1 = ddeltadloga 2 = delta_lin 3 = ddelta_lindloga. More...
 

Data Fields

Func1 Eofx
 
Func1 OmegaMofx
 
Func1 logEprimeofx
 
Func1 muofx
 
Func1 wofx
 
double OmegaM {0.3}
 
Func1 Eofx_lcdm
 
Func1 OmegaMofx_lcdm
 
Func1 logEprimeofx_lcdm
 
Func1 muofx_lcdm
 
Func1 wofx_lcdm
 

Detailed Description

The class contains all the info about the model needed to run the spherical collapse and halomodel Cosmology/gravity functions provided using lambda functions.

Definition at line 21 of file SphericalCollapseModel.h.

Constructor & Destructor Documentation

◆ SphericalCollapseModel() [1/2]

FML::COSMOLOGY::SPHERICALCOLLAPSE::SphericalCollapseModel::SphericalCollapseModel ( )
inline

Definition at line 39 of file SphericalCollapseModel.h.

39 {
41 }

◆ SphericalCollapseModel() [2/2]

FML::COSMOLOGY::SPHERICALCOLLAPSE::SphericalCollapseModel::SphericalCollapseModel ( Func1  Eofx,
Func1  OmegaMofx,
Func1  logEprimeofx,
Func1  muofx,
Func1  wofx 
)
inline

Member Function Documentation

◆ info()

void FML::COSMOLOGY::SPHERICALCOLLAPSE::SphericalCollapseModel::info ( ) const

Print useful info.

Definition at line 10 of file SphericalCollapseModel.cpp.

10 {
11 std::cout << "\n#=====================================================\n";
12 std::cout << "# SphericalCollapseModel model info:\n";
13 std::cout << "#=====================================================\n";
14 std::cout << "OmegaM : " << OmegaM << "\n";
15 auto z_array = FML::MATH::linspace(0.0,5.0,10);
16 for(auto z : z_array){
17 const double x = -std::log(1+z);
18 std::cout << " z: " << std::setw(10) << z;
19 std::cout << " E(z): " << std::setw(10) << Eofx(x);
20 std::cout << " mu(z): " << std::setw(10) << muofx(x);
21 std::cout << " w(z): " << std::setw(10) << wofx(x) << "\n";
22 }
23 std::cout << "#=====================================================\n";
24 }
DVector linspace(double xmin, double xmax, int num)
Python linspace. Generate a lineary spaced array.
Definition: Math.cpp:269
float z
Definition: example.py:56
x
Definition: test.py:18

◆ nonlinear_condition()

double FML::COSMOLOGY::SPHERICALCOLLAPSE::SphericalCollapseModel::nonlinear_condition ( double  delta,
double  delta_prime,
double  roverR,
double  x 
) const

Define the non-linear time when this quantity is zero Using delta-1 = 0.

Definition at line 51 of file SphericalCollapseModel.cpp.

55 {
56 return delta-1.0;
57 }

◆ ode_system_linear_growth()

int FML::COSMOLOGY::SPHERICALCOLLAPSE::SphericalCollapseModel::ode_system_linear_growth ( double  x,
const double *  y,
double *  dydx 
) const
inline

Define the linear ODE system 0 = delta_lin 1 = ddeltadloga_lin.

Definition at line 97 of file SphericalCollapseModel.h.

97 {
98 const double mu = muofx(x);
99 const double om = OmegaMofx(x);
100 const double dlogEdloga = logEprimeofx(x);
101 const double delta = y[0];
102 const double ddeltadx = y[1];
103
104 // Growth ODE
105 dydx[0] = ddeltadx;
106 dydx[1] = -(2.0+dlogEdloga)*ddeltadx + 1.5*om*mu*delta;
107 return GSL_SUCCESS;
108 }
return y
Definition: Global.h:265

◆ ode_system_non_linear_growth()

int FML::COSMOLOGY::SPHERICALCOLLAPSE::SphericalCollapseModel::ode_system_non_linear_growth ( double  x,
const double *  y,
double *  dydx 
) const
inline

Define the non-linear + linear ODE system for spherical collapse 0 = delta 1 = ddeltadloga 2 = delta_lin 3 = ddelta_lindloga.

Definition at line 118 of file SphericalCollapseModel.h.

118 {
119 const double mu = muofx(x);
120 const double om = OmegaMofx(x);
121 const double dlogEdloga = logEprimeofx(x);
122 const double delta = y[0];
123 const double ddeltadx = y[1];
124 const double delta_lin = y[2];
125 const double ddeltadx_lin = y[3];
126
127 // Spherical collapse
128 dydx[0] = ddeltadx;
129 dydx[1] = -(2.0+dlogEdloga)*ddeltadx + 1.5*om*mu*delta*(1+delta) + 4.0/3.0*ddeltadx*ddeltadx/(1.0+delta);
130
131 // Linear evolution
132 dydx[2] = ddeltadx_lin;
133 dydx[3] = -(2.0+dlogEdloga)*ddeltadx_lin + 1.5*om*mu*delta_lin;
134 return GSL_SUCCESS;
135 }

◆ set_model_lcdm()

void FML::COSMOLOGY::SPHERICALCOLLAPSE::SphericalCollapseModel::set_model_lcdm ( )
inline

◆ virial_condition()

double FML::COSMOLOGY::SPHERICALCOLLAPSE::SphericalCollapseModel::virial_condition ( double  delta,
double  delta_prime,
double  roverR,
double  x 
) const

Virial condition.

Virialization when this quantity is zero Standard condition 2*Ek+Ep = 0 where Ek is kinetic and Ep is potential energy Ep/M of a spherical tophat overdensity

Definition at line 29 of file SphericalCollapseModel.cpp.

33 {
34 const double E = Eofx(x);
35 const double mu = muofx(x);
36 const double OmegaMofx = OmegaM * std::exp(-3.0*x) / (E*E);
37 const double OmegaLambdaofx = 1.0 - OmegaMofx;
38 const double w = wofx(x);
39 const double drdx_over_r = 1.0 - delta_prime / 3.0 / (1.0+delta);
40 double EpoverM = -3.0/10.0 * std::pow(E * roverR, 2) * (
41 OmegaLambdaofx * (1.0 + 3.0*w) +
42 OmegaMofx * (1.0 + (mu - 1.0) * delta / (1.0+delta)) * (1.0+delta)
43 );
44 double EkoverM = 3.0/10.0 * std::pow(E * roverR, 2) * std::pow(drdx_over_r,2);
45 return 2.0*EkoverM + EpoverM;
46 }
const double exp
Definition: Global.h:259

Field Documentation

◆ Eofx

Func1 FML::COSMOLOGY::SPHERICALCOLLAPSE::SphericalCollapseModel::Eofx

Definition at line 28 of file SphericalCollapseModel.h.

◆ Eofx_lcdm

Func1 FML::COSMOLOGY::SPHERICALCOLLAPSE::SphericalCollapseModel::Eofx_lcdm
Initial value:
=
[&](double x){ return std::sqrt(OmegaM*std::exp(-3*x) + 1.0 - OmegaM); }

Definition at line 140 of file SphericalCollapseModel.h.

◆ logEprimeofx

Func1 FML::COSMOLOGY::SPHERICALCOLLAPSE::SphericalCollapseModel::logEprimeofx

Definition at line 30 of file SphericalCollapseModel.h.

◆ logEprimeofx_lcdm

Func1 FML::COSMOLOGY::SPHERICALCOLLAPSE::SphericalCollapseModel::logEprimeofx_lcdm
Initial value:
=
[&](double x){ return -1.5*OmegaMofx(x); }

Definition at line 144 of file SphericalCollapseModel.h.

◆ muofx

Func1 FML::COSMOLOGY::SPHERICALCOLLAPSE::SphericalCollapseModel::muofx

Definition at line 31 of file SphericalCollapseModel.h.

◆ muofx_lcdm

Func1 FML::COSMOLOGY::SPHERICALCOLLAPSE::SphericalCollapseModel::muofx_lcdm
Initial value:
=
[&]([[maybe_unused]]double x){ return 1.0; }

Definition at line 146 of file SphericalCollapseModel.h.

◆ OmegaM

double FML::COSMOLOGY::SPHERICALCOLLAPSE::SphericalCollapseModel::OmegaM {0.3}

Definition at line 37 of file SphericalCollapseModel.h.

◆ OmegaMofx

Func1 FML::COSMOLOGY::SPHERICALCOLLAPSE::SphericalCollapseModel::OmegaMofx

Definition at line 29 of file SphericalCollapseModel.h.

◆ OmegaMofx_lcdm

Func1 FML::COSMOLOGY::SPHERICALCOLLAPSE::SphericalCollapseModel::OmegaMofx_lcdm
Initial value:
=
[&](double x){ return OmegaM*std::exp(-3*x)/(OmegaM*std::exp(-3*x) + 1.0 - OmegaM); }

Definition at line 142 of file SphericalCollapseModel.h.

◆ wofx

Func1 FML::COSMOLOGY::SPHERICALCOLLAPSE::SphericalCollapseModel::wofx

Definition at line 32 of file SphericalCollapseModel.h.

◆ wofx_lcdm

Func1 FML::COSMOLOGY::SPHERICALCOLLAPSE::SphericalCollapseModel::wofx_lcdm
Initial value:
=
[&]([[maybe_unused]]double x){ return -1.0; }

Definition at line 148 of file SphericalCollapseModel.h.


The documentation for this class was generated from the following files: