7 #include <gsl/gsl_integration.h>
9 #include "../omega_nu_single.h"
10 #include "../physconst.h"
22 assert_true(rho_nu_tab.
mnu == mnu);
23 assert_true(rho_nu_tab.
acc);
24 assert_true(rho_nu_tab.
interp);
25 assert_true(rho_nu_tab.
loga);
26 assert_true(rho_nu_tab.
rhonu);
30 assert_true(rho_nu_tab.
loga[i] > rho_nu_tab.
loga[i-1]);
34 #define STEFAN_BOLTZMANN 5.670373e-5
35 #define OMEGAR (4*STEFAN_BOLTZMANN*8*M_PI*GRAVITY/(3*LIGHTCGS*LIGHTCGS*LIGHTCGS*HUBBLE*HUBBLE*HubbleParam*HubbleParam)*pow(T_CMB0,4))
43 double HubbleParam = 0.7;
46 double MNu[3] = {mnu, mnu, 0};
51 assert_true(fabs(omnu.
rhocrit - 1.8784e-29*HubbleParam*HubbleParam) < 5e-3*omnu.
rhocrit);
55 assert_true(fabs(omnuz0/pow(0.5,3) -
omega_nu_single(&omnu, 0.5, 0)) < 5e-3*omnuz0);
59 assert_true(fabs(omnuz0 - mnu/93.14/HubbleParam/HubbleParam) < 1e-3*omnuz0);
64 assert_true(omnunomassz0 -
OMEGAR*7./8.*pow(pow(4/11.,1/3.)*1.00381,4)< 1e-5*omnunomassz0);
80 gsl_integration_workspace * w = gsl_integration_workspace_alloc (
GSL_VAL);
84 double param[2] = {mnu * a, kTnu};
87 gsl_integration_qag (&F, 0, 500*kTnu,0 , 1e-9,
GSL_VAL,6,w,&result, &abserr);
89 gsl_integration_workspace_free (w);
101 double MNu[3] = {mnu, mnu, mnu};
106 for(i=1; i< 123; i++) {
107 double a = 0.01 + i/123.;
110 if(fabs(omnuz0 - omexact) > 1e-6 * omnuz0)
111 printf(
"a=%g %g %g %g\n",a, omnuz0, omexact, omnuz0/omexact-1);
112 assert_true(fabs(1 - omexact/omnuz0) < 1e-6);
120 double MNu[3] = {0.2,0.2,0.2};
133 double MNu[3] = {0.2,0.1,0.3};
147 double MNu[3] = {0.2,0.1,0.3};
154 assert_true(fabs(
get_omega_nu(&omnu, 0.5) - total) < 1e-6*total);
161 double MNu[3] = {0.2,0.1,0.3};
162 const double HubbleParam = 0.7;
164 const double omegag =
OMEGAR/pow(0.5,4);
165 assert_true(fabs(
get_omegag(&omnu, 0.5)/omegag -1)< 1e-6);
173 assert_true(fabs(
nufrac_low(1)/0.0595634-1)< 1e-5);
174 assert_true(fabs(
nufrac_low(0.5)/0.00941738-1)< 1e-5);
182 double MNu[3] = {0.2,0.2,0.2};
183 const double HubbleParam = 0.7;
197 const struct CMUnitTest tests[] = {
208 return cmocka_run_group_tests_mpi(tests, NULL, NULL);
void init_hybrid_nu(_hybrid_nu *const hybnu, const double mnu[], const double vcrit, const double light, const double nu_crit_time, const double kBtnu)
void init_omega_nu(_omega_nu *omnu, const double MNu[], const double a0, const double HubbleParam, const double tcmb0)
void rho_nu_init(_rho_nu_single *const rho_nu_tab, double a0, const double mnu, const double kBtnu)
double omega_nu_single(const _omega_nu *const omnu, const double a, int i)
double get_omegag(const _omega_nu *const omnu, const double a)
double particle_nu_fraction(const _hybrid_nu *const hybnu, const double a, const int i)
double nufrac_low(const double qc)
double get_omega_nu(const _omega_nu *const omnu, const double a)
double get_omega_nu_nopart(const _omega_nu *const omnu, const double a)
int nu_degeneracies[NUSPECIES]
_rho_nu_single RhoNuTab[NUSPECIES]
static void test_omega_nu_single_exact(void **state)
static void test_omega_nu_init_nondeg(void **state)
static void test_omega_nu_single(void **state)
static void test_rho_nu_init(void **state)
static void test_get_omega_nu(void **state)
double do_exact_rho_nu_integration(double a, double mnu, double rhocrit)
static void test_nufrac_low(void **state)
static void test_omega_nu_init_degenerate(void **state)
double get_rho_nu_conversion()
static void test_get_omegag(void **state)
static void test_hybrid_neutrinos(void **state)
double rho_nu_int(double q, void *params)