3 #ifndef __PERTURBATIONS__ 4 #define __PERTURBATIONS__ 7 #include "evolver_ndf15.h" 8 #include "evolver_rkck.h" 10 #define _scalars_ ((ppt->has_scalars == _TRUE_) && (index_md == ppt->index_md_scalars)) 11 #define _vectors_ ((ppt->has_vectors == _TRUE_) && (index_md == ppt->index_md_vectors)) 12 #define _tensors_ ((ppt->has_tensors == _TRUE_) && (index_md == ppt->index_md_tensors)) 14 #define _set_source_(index) ppt->sources[index_md][index_ic * ppt->tp_size[index_md] + index][index_tau * ppt->k_size[index_md] + index_k] 30 enum rsa_flags {rsa_off, rsa_on};
31 enum ufa_flags {ufa_off, ufa_on};
32 enum ncdmfa_flags {ncdmfa_off, ncdmfa_on};
42 enum tca_method {first_order_MB,first_order_CAMB,first_order_CLASS,second_order_CRS,second_order_CLASS,compromise_CLASS};
43 enum rsa_method {rsa_null,rsa_MD,rsa_MD_with_reio,rsa_none};
44 enum ufa_method {ufa_mb,ufa_hu,ufa_CLASS,ufa_none};
45 enum ncdmfa_method {ncdmfa_mb,ncdmfa_hu,ncdmfa_CLASS,ncdmfa_none};
46 enum tensor_methods {tm_photons_only,tm_massless_approximation,tm_exact};
68 #define _SELECTION_NUM_MAX_ 100 69 enum selection_type {gaussian,tophat,dirac};
79 #define _MAX_NUMBER_OF_K_FILES_ 30 665 int * interval_number,
666 int * interval_number_of
681 int * interval_number_of,
682 double * interval_limit,
683 int ** interval_approx
687 struct precision * ppr,
704 struct precision * ppr,
715 struct precision * ppr,
727 void * parameters_and_workspace,
733 struct precision * ppr,
745 struct precision * ppr,
757 double * pvecperturbations,
760 void * parameters_and_workspace,
761 ErrorMsg error_message
768 void * parameters_and_workspace,
769 ErrorMsg error_message
776 void * parameters_and_workspace,
777 ErrorMsg error_message
782 void * parameters_and_workspace,
783 ErrorMsg error_message
786 int perturb_rsa_delta_and_theta(
787 struct precision * ppr,
793 double a_prime_over_a,
798 int perturb_prepare_output_file(
struct background * pba,
short has_cdi
Definition: perturbations.h:114
int index_pt_pol3_g
Definition: perturbations.h:398
double * dy
Definition: perturbations.h:440
int index_pt_phi
Definition: perturbations.h:431
short has_nc_lens
Definition: perturbations.h:141
int index_pt_delta_ur
Definition: perturbations.h:411
enum possible_gauges gauge
Definition: perturbations.h:202
int store_perturbations
Definition: perturbations.h:163
int index_ic_niv
Definition: perturbations.h:226
double * y
Definition: perturbations.h:439
int index_pt_psi0_ncdm1
Definition: perturbations.h:425
Definition: background.h:25
int index_tp_theta_ncdm1
Definition: perturbations.h:298
short has_vectors
Definition: perturbations.h:109
double S_fld
Definition: perturbations.h:516
short has_source_theta_ur
Definition: perturbations.h:257
short has_source_phi
Definition: perturbations.h:259
int index_tp_delta_m
Definition: perturbations.h:276
short has_source_theta_ncdm
Definition: perturbations.h:258
double vector_source_v
Definition: perturbations.h:498
double tca_shear_g
Definition: perturbations.h:500
int perturb_workspace_free(struct perturbs *ppt, int index_md, struct perturb_workspace *ppw)
Definition: perturbations.c:2033
struct perturb_vector * pv
Definition: perturbations.h:488
int index_pt_l3_g
Definition: perturbations.h:393
int index_mt_h_prime_prime
Definition: perturbations.h:468
int index_tp_theta_m
Definition: perturbations.h:289
Definition: perturbations.h:388
int perturb_tca_slip_and_shear(double *y, void *parameters_and_workspace, ErrorMsg error_message)
Definition: perturbations.c:7860
double eisw_lisw_split_z
Definition: perturbations.h:161
int perturb_workspace_init(struct precision *ppr, struct background *pba, struct thermo *pth, struct perturbs *ppt, int index_md, struct perturb_workspace *ppw)
Definition: perturbations.c:1865
double selection_max_of_tau_max
Definition: perturbations.h:346
int index_pt_gw
Definition: perturbations.h:435
int * ic_size
Definition: perturbations.h:229
int index_mt_psi
Definition: perturbations.h:465
tca_method
Definition: perturbations.h:42
int switch_pol
Definition: perturbations.h:160
Definition: perturbations.h:58
double * scalar_perturbations_data[_MAX_NUMBER_OF_K_FILES_]
Definition: perturbations.h:175
short has_cl_cmb_temperature
Definition: perturbations.h:127
int l_scalar_max
Definition: perturbations.h:144
int index_k
Definition: perturbations.h:574
int l_max_g
Definition: perturbations.h:394
double selection_delta_tau
Definition: perturbations.h:348
int * q_size_ncdm
Definition: perturbations.h:428
short has_nid
Definition: perturbations.h:115
short has_source_phi_plus_psi
Definition: perturbations.h:261
short perturbations_verbose
Definition: perturbations.h:373
short has_ad
Definition: perturbations.h:112
double * selection_tau
Definition: perturbations.h:352
int index_tp_phi_prime
Definition: perturbations.h:301
int index_pt_perturbed_recombination_delta_temp
Definition: perturbations.h:417
double three_ceff2_ur
Definition: perturbations.h:182
short has_source_delta_dcdm
Definition: perturbations.h:243
int index_ic_cdi
Definition: perturbations.h:223
short has_niv
Definition: perturbations.h:116
int index_pt_theta_g
Definition: perturbations.h:391
short has_source_delta_b
Definition: perturbations.h:241
int perturb_print_variables(double tau, double *y, double *dy, void *parameters_and_workspace, ErrorMsg error_message)
Definition: perturbations.c:6292
int index_tp_theta_dcdm
Definition: perturbations.h:293
short has_nl_corrections_based_on_delta_m
Definition: perturbations.h:137
int index_pt_phi_prime_scf
Definition: perturbations.h:410
int l_max_pol_g
Definition: perturbations.h:399
Definition: perturbations.h:95
int index_mt_phi_prime
Definition: perturbations.h:466
short evolve_tensor_ncdm
Definition: perturbations.h:125
char scalar_titles[_MAXTITLESTRINGLENGTH_]
Definition: perturbations.h:167
double gw_source
Definition: perturbations.h:496
double ** k
Definition: perturbations.h:329
short has_source_theta_cdm
Definition: perturbations.h:252
int index_pt_delta_cdm
Definition: perturbations.h:402
int index_pt_pol1_g
Definition: perturbations.h:396
short has_cl_cmb_polarization
Definition: perturbations.h:128
int last_index_back
Definition: perturbations.h:530
double * s_l
Definition: perturbations.h:554
int index_mt_alpha_prime
Definition: perturbations.h:471
int index_pt_F0_dr
Definition: perturbations.h:423
int perturb_initial_conditions(struct precision *ppr, struct background *pba, struct perturbs *ppt, int index_md, int index_ic, double k, double tau, struct perturb_workspace *ppw)
Definition: perturbations.c:4047
short has_velocity_transfers
Definition: perturbations.h:134
Definition: thermodynamics.h:58
double rho_plus_p_shear
Definition: perturbations.h:494
int index_md
Definition: perturbations.h:572
int perturb_solve(struct precision *ppr, struct background *pba, struct thermo *pth, struct perturbs *ppt, int index_md, int index_ic, int index_k, struct perturb_workspace *ppw)
Definition: perturbations.c:2084
double * vector_perturbations_data[_MAX_NUMBER_OF_K_FILES_]
Definition: perturbations.h:176
int index_mt_eta_prime
Definition: perturbations.h:469
int perturb_sources(double tau, double *y, double *dy, int index_tau, void *parameters_and_workspace, ErrorMsg error_message)
Definition: perturbations.c:5821
int * tp_size
Definition: perturbations.h:309
double * tau_sampling
Definition: perturbations.h:343
double delta_rho_fld
Definition: perturbations.h:514
short has_lss
Definition: perturbations.h:194
short has_source_t
Definition: perturbations.h:237
double * selection_tau_max
Definition: perturbations.h:351
int index_pt_shear_ur
Definition: perturbations.h:413
int mt_size
Definition: perturbations.h:475
int index_pt_theta_fld
Definition: perturbations.h:407
enum tensor_methods tensor_method
Definition: perturbations.h:122
double * delta_ncdm
Definition: perturbations.h:507
short has_cl_lensing_potential
Definition: perturbations.h:130
int switch_dop
Definition: perturbations.h:159
double rsa_delta_g
Definition: perturbations.h:502
int index_pt_hv_prime
Definition: perturbations.h:432
int * k_size_cl
Definition: perturbations.h:321
int perturb_prepare_output(struct background *pba, struct perturbs *ppt)
Definition: perturbations.c:2475
#define _MAX_NUMBER_OF_K_FILES_
Definition: perturbations.h:79
double selection_width[_SELECTION_NUM_MAX_]
Definition: perturbations.h:154
int index_tp_theta_b
Definition: perturbations.h:291
double selection_mean[_SELECTION_NUM_MAX_]
Definition: perturbations.h:153
int * used_in_sources
Definition: perturbations.h:442
short has_nc_density
Definition: perturbations.h:139
int * index_k_output_values
Definition: perturbations.h:166
short has_source_delta_scf
Definition: perturbations.h:245
int l_max_dr
Definition: perturbations.h:424
int index_pt_delta_b
Definition: perturbations.h:400
short has_metricpotential_transfers
Definition: perturbations.h:135
int perturb_approximations(struct precision *ppr, struct background *pba, struct thermo *pth, struct perturbs *ppt, int index_md, double k, double tau, struct perturb_workspace *ppw)
Definition: perturbations.c:4718
double * pvecmetric
Definition: perturbations.h:487
int pt_size
Definition: perturbations.h:437
char tensor_titles[_MAXTITLESTRINGLENGTH_]
Definition: perturbations.h:169
int index_mt_gw_prime_prime
Definition: perturbations.h:472
int index_tp_t1
Definition: perturbations.h:273
int switch_sw
Definition: perturbations.h:156
int index_tp_phi
Definition: perturbations.h:300
int perturb_timescale(double tau, void *parameters_and_workspace, double *timescale, ErrorMsg error_message)
Definition: perturbations.c:4922
short has_source_p
Definition: perturbations.h:238
int index_tp_h
Definition: perturbations.h:304
int index_tp_delta_dcdm
Definition: perturbations.h:280
Definition: perturbations.h:456
short has_source_h_prime
Definition: perturbations.h:264
double * selection_function
Definition: perturbations.h:353
struct precision * ppr
Definition: perturbations.h:568
int index_tp_eta_prime
Definition: perturbations.h:307
int k_output_values_num
Definition: perturbations.h:164
possible_gauges
Definition: perturbations.h:56
tca_flags
Definition: perturbations.h:29
#define _SELECTION_NUM_MAX_
Definition: perturbations.h:68
double k_max
Definition: perturbations.h:332
int selection_num
Definition: perturbations.h:150
int perturb_indices_of_perturbs(struct precision *ppr, struct background *pba, struct thermo *pth, struct perturbs *ppt)
Definition: perturbations.c:528
double * pvecback
Definition: perturbations.h:485
int index_ap_ncdmfa
Definition: perturbations.h:542
int index_pt_theta_b
Definition: perturbations.h:401
int index_ap_tca
Definition: perturbations.h:539
double * tensor_perturbations_data[_MAX_NUMBER_OF_K_FILES_]
Definition: perturbations.h:177
short has_source_theta_m
Definition: perturbations.h:249
int index_mt_hv_prime_prime
Definition: perturbations.h:474
double * shear_ncdm
Definition: perturbations.h:509
int perturb_get_k_list(struct precision *ppr, struct background *pba, struct thermo *pth, struct perturbs *ppt)
Definition: perturbations.c:1243
int l_tensor_max
Definition: perturbations.h:146
int index_ic_ten
Definition: perturbations.h:227
int perturb_timesampling_for_sources(struct precision *ppr, struct background *pba, struct thermo *pth, struct perturbs *ppt)
Definition: perturbations.c:867
short inter_mode
Definition: perturbations.h:528
int size_vector_perturbation_data[_MAX_NUMBER_OF_K_FILES_]
Definition: perturbations.h:179
int index_tp_delta_scf
Definition: perturbations.h:282
int index_tp_theta_scf
Definition: perturbations.h:295
short has_scalars
Definition: perturbations.h:108
short has_source_theta_fld
Definition: perturbations.h:254
int tau_size
Definition: perturbations.h:341
int index_pt_pol0_g
Definition: perturbations.h:395
int index_pt_Gamma_fld
Definition: perturbations.h:408
short has_source_delta_ncdm
Definition: perturbations.h:248
int perturb_init(struct precision *ppr, struct background *pba, struct thermo *pth, struct perturbs *ppt)
Definition: perturbations.c:98
int index_mt_V_prime
Definition: perturbations.h:473
int index_tp_psi
Definition: perturbations.h:303
int index_pt_theta_ur
Definition: perturbations.h:412
double tca_slip
Definition: perturbations.h:501
short has_cmb
Definition: perturbations.h:193
int perturb_find_approximation_switches(struct precision *ppr, struct background *pba, struct thermo *pth, struct perturbs *ppt, int index_md, double k, struct perturb_workspace *ppw, double tau_ini, double tau_end, double precision, int interval_number, int *interval_number_of, double *interval_limit, int **interval_approx)
Definition: perturbations.c:2688
int index_tp_delta_b
Definition: perturbations.h:278
short has_source_delta_g
Definition: perturbations.h:240
short has_nc_rsd
Definition: perturbations.h:140
double Gamma_prime_fld
Definition: perturbations.h:517
ErrorMsg error_message
Definition: perturbations.h:375
int index_pt_eta
Definition: perturbations.h:430
int perturb_free(struct perturbs *ppt)
Definition: perturbations.c:454
short has_source_h
Definition: perturbations.h:263
double rho_plus_p_theta_fld
Definition: perturbations.h:515
int max_l_max
Definition: perturbations.h:553
int * approx
Definition: perturbations.h:545
short evolve_tensor_ur
Definition: perturbations.h:124
int ap_size
Definition: perturbations.h:543
int index_pt_V
Definition: perturbations.h:433
int index_tp_delta_ncdm1
Definition: perturbations.h:285
short has_tensors
Definition: perturbations.h:110
short has_cl_number_count
Definition: perturbations.h:131
double z_max_pk
Definition: perturbations.h:185
int index_pt_delta_g
Definition: perturbations.h:390
int index_md_vectors
Definition: perturbations.h:212
int index_tp_delta_dr
Definition: perturbations.h:283
double * selection_tau_min
Definition: perturbations.h:350
int index_pt_perturbed_recombination_delta_chi
Definition: perturbations.h:418
int index_pt_phi_scf
Definition: perturbations.h:409
struct background * pba
Definition: perturbations.h:569
short has_source_theta_dr
Definition: perturbations.h:256
double selection_min_of_tau_min
Definition: perturbations.h:345
int index_tp_delta_cdm
Definition: perturbations.h:279
short has_source_eta
Definition: perturbations.h:265
short has_source_phi_prime
Definition: perturbations.h:260
double k_output_values[_MAX_NUMBER_OF_K_FILES_]
Definition: perturbations.h:165
short has_source_delta_fld
Definition: perturbations.h:244
int index_md_tensors
Definition: perturbations.h:211
short has_source_delta_ur
Definition: perturbations.h:247
struct perturb_workspace * ppw
Definition: perturbations.h:576
short has_perturbations
Definition: perturbations.h:104
int * k_size_cmb
Definition: perturbations.h:317
int index_pt_gwdot
Definition: perturbations.h:436
int index_pt_theta_dcdm
Definition: perturbations.h:405
int perturb_total_stress_energy(struct precision *ppr, struct background *pba, struct thermo *pth, struct perturbs *ppt, int index_md, double k, double *y, struct perturb_workspace *ppw)
Definition: perturbations.c:5285
double delta_m
Definition: perturbations.h:511
short has_bi
Definition: perturbations.h:113
short has_source_theta_b
Definition: perturbations.h:251
short has_density_transfers
Definition: perturbations.h:133
double rsa_theta_g
Definition: perturbations.h:503
int index_tp_theta_cdm
Definition: perturbations.h:292
double delta_p
Definition: perturbations.h:495
double * theta_ncdm
Definition: perturbations.h:508
int index_ic_ad
Definition: perturbations.h:222
int index_ic_nid
Definition: perturbations.h:225
int last_index_thermo
Definition: perturbations.h:531
double delta_rho
Definition: perturbations.h:492
double k_max_for_pk
Definition: perturbations.h:148
int perturb_vector_free(struct perturb_vector *pv)
Definition: perturbations.c:4016
int index_mt_alpha
Definition: perturbations.h:470
double vector_source_pi
Definition: perturbations.h:497
enum selection_type selection
Definition: perturbations.h:152
short has_source_eta_prime
Definition: perturbations.h:266
int switch_lisw
Definition: perturbations.h:158
int index_pt_pol2_g
Definition: perturbations.h:397
int index_tp_phi_plus_psi
Definition: perturbations.h:302
int index_pt_l3_ur
Definition: perturbations.h:414
short has_cls
Definition: perturbations.h:106
int index_ic_bi
Definition: perturbations.h:224
int index_tp_theta_ur
Definition: perturbations.h:296
int index_tp_perturbed_recombination_delta_temp
Definition: perturbations.h:286
int index_tp_theta_dr
Definition: perturbations.h:297
short has_source_psi
Definition: perturbations.h:262
short has_nc_gr
Definition: perturbations.h:142
int index_pt_delta_fld
Definition: perturbations.h:406
short has_perturbed_recombination
Definition: perturbations.h:120
int size_tensor_perturbation_data[_MAX_NUMBER_OF_K_FILES_]
Definition: perturbations.h:180
int index_ic
Definition: perturbations.h:573
short has_cl_cmb_lensing_potential
Definition: perturbations.h:129
int number_of_vector_titles
Definition: perturbations.h:171
int index_tp_eta
Definition: perturbations.h:306
int index_tp_theta_g
Definition: perturbations.h:290
char vector_titles[_MAXTITLESTRINGLENGTH_]
Definition: perturbations.h:168
int N_ncdm
Definition: perturbations.h:426
int number_of_tensor_titles
Definition: perturbations.h:172
double * pvecthermo
Definition: perturbations.h:486
int switch_eisw
Definition: perturbations.h:157
double *** sources
Definition: perturbations.h:361
int perturb_find_approximation_number(struct precision *ppr, struct background *pba, struct thermo *pth, struct perturbs *ppt, int index_md, double k, struct perturb_workspace *ppw, double tau_ini, double tau_end, int *interval_number, int *interval_number_of)
Definition: perturbations.c:2599
int index_ap_rsa
Definition: perturbations.h:540
int index_tp_theta_fld
Definition: perturbations.h:294
int * k_size
Definition: perturbations.h:325
int l_max_ur
Definition: perturbations.h:415
short has_pk_matter
Definition: perturbations.h:132
int index_tp_delta_ur
Definition: perturbations.h:284
double three_cvis2_ur
Definition: perturbations.h:183
int index_pt_delta_dcdm
Definition: perturbations.h:404
int number_of_scalar_titles
Definition: perturbations.h:170
struct perturbs * ppt
Definition: perturbations.h:571
int index_ikout
Definition: perturbations.h:520
double theta_m
Definition: perturbations.h:512
int index_tp_delta_fld
Definition: perturbations.h:281
int index_md_scalars
Definition: perturbations.h:210
FILE * perturb_output_file
Definition: perturbations.h:519
double rsa_theta_ur
Definition: perturbations.h:505
int perturb_einstein(struct precision *ppr, struct background *pba, struct thermo *pth, struct perturbs *ppt, int index_md, double k, double tau, double *y, struct perturb_workspace *ppw)
Definition: perturbations.c:5092
short has_source_theta_g
Definition: perturbations.h:250
int index_pt_shear_g
Definition: perturbations.h:392
int index_mt_h_prime
Definition: perturbations.h:467
int index_pt_theta_cdm
Definition: perturbations.h:403
int index_tp_delta_g
Definition: perturbations.h:277
int index_tp_t0
Definition: perturbations.h:272
int size_scalar_perturbation_data[_MAX_NUMBER_OF_K_FILES_]
Definition: perturbations.h:178
int index_tp_perturbed_recombination_delta_chi
Definition: perturbations.h:287
int * l_max_ncdm
Definition: perturbations.h:427
int l_vector_max
Definition: perturbations.h:145
short has_source_theta_scf
Definition: perturbations.h:255
int index_tp_h_prime
Definition: perturbations.h:305
short has_source_delta_dr
Definition: perturbations.h:246
int perturb_sources_at_tau(struct perturbs *ppt, int index_md, int index_ic, int index_type, double tau, double *psource)
Definition: perturbations.c:45
double rho_plus_p_theta
Definition: perturbations.h:493
int perturb_derivs(double tau, double *y, double *dy, void *parameters_and_workspace, ErrorMsg error_message)
Definition: perturbations.c:6813
short has_source_delta_cdm
Definition: perturbations.h:242
int index_tp_p
Definition: perturbations.h:275
short has_source_theta_dcdm
Definition: perturbations.h:253
int md_size
Definition: perturbations.h:214
short has_source_delta_m
Definition: perturbations.h:239
int perturb_vector_init(struct precision *ppr, struct background *pba, struct thermo *pth, struct perturbs *ppt, int index_md, int index_ic, double k, double tau, struct perturb_workspace *ppw, int *pa_old)
Definition: perturbations.c:2979
int l_lss_max
Definition: perturbations.h:147
Definition: perturbations.h:57
double k
Definition: perturbations.h:575
int index_ap_ufa
Definition: perturbations.h:541
double rsa_delta_ur
Definition: perturbations.h:504
double k_min
Definition: perturbations.h:331
struct thermo * pth
Definition: perturbations.h:570
Definition: perturbations.h:566
int index_tp_t2
Definition: perturbations.h:274