CLASSpp Manual
Cosmology reference and developer manual
Loading...
Searching...
No Matches
precision.h
Go to the documentation of this file.
1
2#ifndef CLASS_PRECISION_H
3#define CLASS_PRECISION_H
4
5#include <float.h> // DBL_EPSILON
6#include <string>
7
8#include "constants.h" // physics constants used in precision defaults
9#include "errors.h" // status codes
10
11class FileContent; // forward decl for precision::parse
12
18enum class evolver_type {
19 rk, /* Runge-Kutta integrator */
20 ndf15, /* stiff integrator */
21 rkdp45 /* Dormand-Prince 4(5) explicit adaptive integrator */
22};
23
40enum class file_format { class_format, camb_format };
41
44enum class tca_method {
45 first_order_MB,
46 first_order_CAMB,
47 first_order_CLASS,
48 second_order_CRS,
49 second_order_CLASS,
50 compromise_CLASS
51};
52enum class rsa_method { rsa_null, rsa_MD, rsa_MD_with_reio, rsa_none };
53enum class rsa_idr_method { rsa_idr_none, rsa_idr_MD };
54enum class ufa_method { ufa_mb, ufa_hu, ufa_CLASS, ufa_none };
55enum class ncdmfa_method { ncdmfa_mb, ncdmfa_hu, ncdmfa_CLASS, ncdmfa_none };
56
63struct precision {
64 std::string class_dir;
65
66 /*
67 * Background Quantities
68 * */
69
94 double tol_initial_Omega_r = 1.e-4;
100 double tol_M_ncdm = 1.e-7;
106 double tol_ncdm_synchronous = 3.4e-3;
113 double tol_ncdm_newtonian = 9.05e-5;
118 double tol_ncdm_bg = 1.e-5;
123 double tol_ncdm_initial_w = 1.e-3;
127 double tol_tau_eq = 1.e-6;
132 /*
133 * Currently unused parameter.
134 */
135 //class_precision_parameter(safe_phi_scf,double,0.0)
140 std::string sBBN_file = "/bbn/sBBN_2017.dat";
141
142 /*
143 * Thermodynamical quantities
144 * */
145
149 double recfast_z_initial = 1.0e4;
153 int recfast_Nz0 = 20000;
174 int thermo_Nz1_idm_dr = 10000;
175 int thermo_Nz2_idm_dr = 100;
181 double tol_thermo_integration = 1.0e-7;
182 /*
183 * Recfast 1.4 switch parameters
184 */
186 6;
188 0.86;
190 /*
191 * Recfast 1.5 parameters
192 */
194 1;
196 1.14;
198 -0.015;
199 double recfast_AGauss1 = -0.14;
201 0.079;
202 double recfast_zGauss1 = 7.28;
203 double recfast_zGauss2 = 6.73;
204 double recfast_wGauss1 = 0.18;
205 double recfast_wGauss2 = 0.33;
207 double recfast_z_He_1 = 8000.0;
209 50.0;
210 double recfast_z_He_2 = 5000.0;
212 100.0;
213 double recfast_z_He_3 = 3500.0;
215 50.0;
217 0.995;
219 0.05;
221 0.995;
223 0.995;
225 0.05;
228 1.0e-3;
231 double reionization_sampling = 5.0e-2;
233 1.0e-4;
235 8.0;
238 50;
241 "/hyrec/Alpha_inf.dat";
242 std::string hyrec_R_inf_file =
243 "/hyrec/R_inf.dat";
245 "/hyrec/two_photon_tables.dat";
247 double k_min_tau0 =
248 0.1;
251 1.8;
252 double k_step_sub =
253 0.05;
255 0.002;
257 0.2;
259 0.1;
262 10.0;
265 1.0;
268 70.0;
271 3.0;
273 double k_bao_width =
274 4.0;
277 0.0015;
280 0.07;
291
299
301 0.008;
303 int tight_coupling_approximation = static_cast<int>(
304 tca_method::compromise_CLASS);
307 0.01;
309 0.015;
312 100000;
314 12;
316 10;
318 17;
320 17;
322 17;
324 17;
326 17;
328 5;
330 5;
332 double curvature_ini = 1.0;
333 double entropy_ini = 1.0;
334 double gw_ini = 1.0;
340
350
355 double tol_perturb_integration = 1.0e-5;
356
364
370 double tol_tau_approx = 1.0e-10;
371
375 int radiation_streaming_approximation = static_cast<int>(rsa_method::rsa_MD_with_reio);
376
384
392
393 int idr_streaming_approximation = static_cast<int>(
394 rsa_idr_method::rsa_idr_none);
396 50.0;
398 10.0;
400 int ur_fluid_approximation = static_cast<int>(
401 ufa_method::ufa_CLASS);
408
409 int ncdm_fluid_approximation = static_cast<int>(
410 ncdmfa_method::ncdmfa_CLASS);
417
423
427 evolver_type evolver = evolver_type::ndf15;
428
429 /*
430 * Primordial parameters
431 * */
432
434 10.0;
437 100.0;
439 1.0 /
440 50.0;
442 10000;
444 0.01;
446 0.005;
448 1.0e-3;
450 0.001;
452 0.1;
454 10;
456 1.0e-3;
458 0.9;
460 1.0e-10;
462 10.0;
464 0.1;
467 2.0;
469 /*
470 * Transfer function parameters
471 * */
472
474 40;
476 double l_logstep =
477 1.12;
479 double hyper_x_min =
480 1.0e-5;
482 8.0;
484 7.0;
486 3.0;
488 1000.0;
490 1.0e-10;
491 double hyper_x_tol = 1.0e-4;
493 4000.0;
495 double q_linstep = 0.45;
500 double q_logstep_spline = 170.0;
505 double q_logstep_open = 6.0;
512 double q_logstep_trapzd = 20.0;
523 double q_numstep_transition = 250.0;
529 1.025;
531 0.001;
534 0.15;
536 0.04;
538 0.15;
540 0.11;
542 1.0;
544 1.0;
546 1.0;
548 1.0;
550 0.2;
552 0.25;
554 0.1;
557 400.0;
560 10.;
561 // For density Cl, we recommend not to use the Limber approximation
562 // at all, and hence to put here a very large number (e.g. 10000); but
563 // if you have wide and smooth selection functions you may wish to
564 // use it; then 100 might be OK
566 100.0;
567 // For terms integrated along the line-of-sight involving spherical
568 // Bessel functions (but not their derivatives), Limber
569 // approximation works well. High precision can be reached with 2000
570 // only. But if you have wide and smooth selection functions you may
571 // reduce to e.g. 30.
573 30.0;
576 5.0;
578 50.0;
580 20.0;
582 20.0;
584 0.1;
586 /*
587 * Nonlinear module precision parameters
588 * */
589
591 80.;
593 double nonlinear_min_k_max = 5.0;
606 1.0e-4;
608 double halofit_min_k_max = 5.0;
610 double halofit_k_per_decade = 80.0;
623 double halofit_tol_sigma = 1.0e-6;
628 double pk_eq_z_max = 5.0;
629 double pk_eq_tol = 1.0e-7;
633 double hmcode_max_k_extra = 1.e6;
637 double hmcode_min_k_max = 5.;
639 double hmcode_tol_sigma = 1.e-6;
648 double rmin_for_sigtab = 1.e-5;
649 double rmax_for_sigtab = 1.e3;
650 double ainit_for_growtab = 1.e-3;
651 double amax_for_growtab = 1.;
652
658 double mmin_for_p1h_integral = 1.e3;
659 double mmax_for_p1h_integral = 1.e18;
660
661 /*
662 * Lensing precision parameters
663 * */
664
666 0;
668 70;
669 int delta_l_max = 500;
671 DBL_EPSILON;
676 DBL_EPSILON;
678
682 void ResolveDataPaths();
683
685 void parse(const FileContent& fc);
686};
687
688#endif // CLASS_PRECISION_H
Definition parser.h:21
tca_method
Definition precision.h:44
evolver_type
Definition precision.h:18
pk_def
Definition precision.h:30
@ delta_bc_squared
@ delta_tot_squared
@ delta_tot_from_poisson_squared
@ delta_m_squared
file_format
Definition precision.h:40
Definition precision.h:63
double transfer_neglect_late_source
Definition precision.h:556
double gw_ini
Definition precision.h:334
int thermo_rate_smoothing_radius
Definition precision.h:237
double k_step_sub
Definition precision.h:252
double recfast_delta_z_He_2
Definition precision.h:211
double recfast_x_H0_trigger_delta
Definition precision.h:224
double transfer_neglect_delta_k_S_e
Definition precision.h:539
double pk_eq_z_max
Definition precision.h:628
double selection_tophat_edge
Definition precision.h:583
double l_switch_limber
Definition precision.h:559
double hyper_sampling_curved_high_nu
Definition precision.h:485
double tol_thermo_integration
Definition precision.h:181
double recfast_x_He0_trigger
Definition precision.h:216
double primordial_inflation_attractor_precision_pivot
Definition precision.h:449
double q_logstep_spline
Definition precision.h:500
double transfer_neglect_delta_k_S_t1
Definition precision.h:535
double hyper_sampling_curved_low_nu
Definition precision.h:483
double tol_ncdm_bg
Definition precision.h:118
int recfast_Nz0
Definition precision.h:153
double halofit_tol_sigma
Definition precision.h:623
double neglect_CMB_sources_below_visibility
Definition precision.h:422
double transfer_neglect_delta_k_V_e
Definition precision.h:545
double recfast_x_H0_trigger
Definition precision.h:220
double idr_streaming_trigger_tau_c_over_tau
Definition precision.h:397
double hyper_flat_approximation_nu
Definition precision.h:492
double primordial_inflation_ratio_min
Definition precision.h:436
double selection_sampling
Definition precision.h:577
double reionization_sampling
Definition precision.h:231
double hyper_sampling_flat
Definition precision.h:481
double recfast_delta_z_He_3
Definition precision.h:214
void parse(const FileContent &fc)
Definition input_module.cpp:2456
double hmcode_max_k_extra
Definition precision.h:633
double reionization_optical_depth_tol
Definition precision.h:232
double tol_tau_approx
Definition precision.h:370
double tol_initial_Omega_r
Definition precision.h:94
double primordial_inflation_pt_stepsize
Definition precision.h:443
double primordial_inflation_small_epsilon
Definition precision.h:463
double primordial_inflation_small_epsilon_tol
Definition precision.h:465
int primordial_inflation_attractor_maxit
Definition precision.h:453
double tol_ncdm_newtonian
Definition precision.h:113
double k_per_decade_for_pk
Definition precision.h:261
double curvature_ini
Definition precision.h:332
double tol_background_integration
Definition precision.h:87
double perturb_sampling_stepsize
Definition precision.h:344
int recfast_Hswitch
Definition precision.h:193
double recfast_AGauss2
Definition precision.h:200
int recfast_Heswitch
Definition precision.h:185
double perturbations_sampling_boost_above_age_fraction
Definition precision.h:349
double k_bao_width
Definition precision.h:273
double hyper_phi_min_abs
Definition precision.h:489
double k_bao_center
Definition precision.h:270
double q_logstep_trapzd
Definition precision.h:512
int l_max_dr
Definition precision.h:317
std::string hyrec_Alpha_inf_file
Definition precision.h:240
std::string hyrec_two_photon_tables_file
Definition precision.h:244
double ncdm_fluid_trigger_tau_over_tau_k
Definition precision.h:416
double reionization_z_start_max
Definition precision.h:230
double c_gamma_k_H_square_max
Definition precision.h:363
int l_max_ncdm
Definition precision.h:325
int l_max_ur
Definition precision.h:321
double perturb_integration_stepsize
Definition precision.h:339
double start_small_k_at_tau_c_over_tau_h
Definition precision.h:276
double recfast_wGauss2
Definition precision.h:205
double selection_cut_at_sigma
Definition precision.h:575
double idm_dr_tight_coupling_trigger_tau_c_over_tau_h
Definition precision.h:308
double recfast_AGauss1
Definition precision.h:199
double k_step_transition
Definition precision.h:256
int l_max_pol_g
Definition precision.h:315
double q_linstep
Definition precision.h:495
int l_linstep
Definition precision.h:473
double primordial_inflation_extra_efolds
Definition precision.h:466
double q_numstep_transition
Definition precision.h:523
double halofit_min_k_max
Definition precision.h:608
int accurate_lensing
Definition precision.h:665
double primordial_inflation_bg_stepsize
Definition precision.h:445
double idr_streaming_trigger_tau_over_tau_k
Definition precision.h:395
double recfast_wGauss1
Definition precision.h:204
int ncdm_fluid_approximation
Definition precision.h:409
double recfast_fudge_He
Definition precision.h:187
double smallest_allowed_variation
Definition precision.h:675
double entropy_ini
Definition precision.h:333
double k_step_super
Definition precision.h:254
double recfast_delta_z_He_1
Definition precision.h:208
double radiation_streaming_trigger_tau_over_tau_k
Definition precision.h:383
int l_max_dr_col
Definition precision.h:319
double transfer_neglect_delta_k_S_t0
Definition precision.h:533
double tol_gauss_legendre
Definition precision.h:670
double reionization_start_factor
Definition precision.h:234
double hmcode_tol_sigma
Definition precision.h:639
double recfast_zGauss1
Definition precision.h:202
double l_switch_limber_for_nc_los_over_z
Definition precision.h:572
double tol_tau_eq
Definition precision.h:127
double transfer_neglect_delta_k_S_t2
Definition precision.h:537
double recfast_z_He_1
Definition precision.h:207
int tight_coupling_approximation
Definition precision.h:303
std::string sBBN_file
Definition precision.h:140
double transfer_neglect_delta_k_T_t2
Definition precision.h:549
double halofit_k_per_decade
Definition precision.h:610
double radiation_streaming_trigger_tau_c_over_tau
Definition precision.h:391
int radiation_streaming_approximation
Definition precision.h:375
double thermo_z_initial_idm_dr
Definition precision.h:173
double transfer_neglect_delta_k_T_e
Definition precision.h:551
double tol_M_ncdm
Definition precision.h:100
double recfast_zGauss2
Definition precision.h:203
int delta_l_max
Definition precision.h:669
double primordial_inflation_tol_integration
Definition precision.h:447
std::string hyrec_R_inf_file
Definition precision.h:242
double k_max_limber_over_l_max_scalars
Definition precision.h:530
int l_max_g_ten
Definition precision.h:327
double k_max_tau0_over_l_max
Definition precision.h:250
double tight_coupling_trigger_tau_c_over_tau_k
Definition precision.h:298
int ur_fluid_approximation
Definition precision.h:400
double recfast_x_H0_trigger2
Definition precision.h:222
int nsteps_for_p1h_integral
Definition precision.h:657
double transfer_neglect_delta_k_V_b
Definition precision.h:547
double halofit_sigma_precision
Definition precision.h:615
double l_logstep
Definition precision.h:476
double tight_coupling_trigger_tau_c_over_tau_h
Definition precision.h:290
double idm_drmd_tight_coupling_trigger_G_over_aH
Definition precision.h:311
double k_per_decade_for_bao
Definition precision.h:267
double a_ini_over_a_today_default
Definition precision.h:74
int l_max_pol_g_ten
Definition precision.h:329
double sigma_k_per_decade
Definition precision.h:590
void ResolveDataPaths()
Definition input_module.cpp:2448
int l_max_g
Definition precision.h:313
double recfast_z_He_3
Definition precision.h:213
double start_sources_at_tau_c_over_tau_h
Definition precision.h:300
double recfast_delta_fudge_H
Definition precision.h:197
int idr_streaming_approximation
Definition precision.h:393
double recfast_fudge_H
Definition precision.h:195
double nonlinear_min_k_max
Definition precision.h:593
double back_integration_stepsize
Definition precision.h:79
double primordial_inflation_attractor_precision_initial
Definition precision.h:451
double tol_ncdm_synchronous
Definition precision.h:106
double primordial_inflation_end_logstep
Definition precision.h:461
double recfast_H_frac
Definition precision.h:227
double recfast_z_He_2
Definition precision.h:210
int num_mu_minus_lmax
Definition precision.h:667
double k_step_super_reduction
Definition precision.h:258
double halofit_min_k_nonlinear
Definition precision.h:605
double l_switch_limber_for_nc_local_over_z
Definition precision.h:565
double Omega0_cdm_min_synchronous
Definition precision.h:131
double idmdr_boost_k_per_decade_for_pk
Definition precision.h:264
double primordial_inflation_aH_ini_target
Definition precision.h:457
double tol_ncdm_initial_w
Definition precision.h:123
double recfast_z_initial
Definition precision.h:149
double hyper_nu_sampling_step
Definition precision.h:487
double selection_sampling_bessel_los
Definition precision.h:581
double start_large_k_at_tau_h_over_tau_k
Definition precision.h:279
double hyper_x_tol
Definition precision.h:491
evolver_type evolver
Definition precision.h:427
double tol_perturb_integration
Definition precision.h:355
int n_hmcode_tables
Definition precision.h:647
double k_min_tau0
Definition precision.h:247
double q_logstep_limber
Definition precision.h:528
double hmcode_min_k_max
Definition precision.h:637
double q_logstep_open
Definition precision.h:505
double primordial_inflation_tol_curvature
Definition precision.h:455
double recfast_x_He0_trigger_delta
Definition precision.h:218
double primordial_inflation_end_dphi
Definition precision.h:459
int primordial_inflation_phi_ini_maxit
Definition precision.h:441
double transfer_neglect_delta_k_T_b
Definition precision.h:553
int l_max_idr
Definition precision.h:323
double ur_fluid_trigger_tau_over_tau_k
Definition precision.h:407
double transfer_neglect_delta_k_V_t2
Definition precision.h:543
double idm_dr_tight_coupling_trigger_tau_c_over_tau_k
Definition precision.h:306
double primordial_inflation_ratio_max
Definition precision.h:438
double pk_eq_tol
Definition precision.h:629
double k_per_decade_primordial
Definition precision.h:433
double transfer_neglect_delta_k_V_t1
Definition precision.h:541
double selection_sampling_bessel
Definition precision.h:579
double hyper_x_min
Definition precision.h:479