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
650 int * interval_number,
651 int * interval_number_of
666 int * interval_number_of,
667 double * interval_limit,
668 int ** interval_approx
672 struct precision * ppr,
689 struct precision * ppr,
700 struct precision * ppr,
712 void * parameters_and_workspace,
714 ErrorMsg error_message
718 struct precision * ppr,
730 struct precision * ppr,
742 double * pvecperturbations,
745 void * parameters_and_workspace,
746 ErrorMsg error_message
753 void * parameters_and_workspace,
754 ErrorMsg error_message
761 void * parameters_and_workspace,
762 ErrorMsg error_message
767 void * parameters_and_workspace,
768 ErrorMsg error_message
771 int perturb_rsa_delta_and_theta(
772 struct precision * ppr,
778 double a_prime_over_a,
783 int perturb_prepare_output_file(
struct background * pba,
short has_cdi
Definition: perturbations.h:114
int index_pt_pol3_g
Definition: perturbations.h:389
double * dy
Definition: perturbations.h:430
int index_pt_phi
Definition: perturbations.h:421
short has_nc_lens
Definition: perturbations.h:140
int index_pt_delta_ur
Definition: perturbations.h:401
enum possible_gauges gauge
Definition: perturbations.h:201
int store_perturbations
Definition: perturbations.h:162
int index_ic_niv
Definition: perturbations.h:225
double * y
Definition: perturbations.h:429
int index_pt_psi0_ncdm1
Definition: perturbations.h:415
Definition: background.h:25
int index_tp_theta_ncdm1
Definition: perturbations.h:293
short has_vectors
Definition: perturbations.h:109
short has_source_theta_ur
Definition: perturbations.h:256
short has_source_phi
Definition: perturbations.h:258
int index_tp_delta_m
Definition: perturbations.h:271
short has_source_theta_ncdm
Definition: perturbations.h:257
double vector_source_v
Definition: perturbations.h:488
double tca_shear_g
Definition: perturbations.h:490
int perturb_workspace_free(struct perturbs *ppt, int index_md, struct perturb_workspace *ppw)
Definition: perturbations.c:2001
struct perturb_vector * pv
Definition: perturbations.h:478
int index_pt_l3_g
Definition: perturbations.h:384
int index_mt_h_prime_prime
Definition: perturbations.h:458
int index_tp_theta_m
Definition: perturbations.h:284
Definition: perturbations.h:379
int perturb_tca_slip_and_shear(double *y, void *parameters_and_workspace, ErrorMsg error_message)
Definition: perturbations.c:7738
double eisw_lisw_split_z
Definition: perturbations.h:160
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:1833
double selection_max_of_tau_max
Definition: perturbations.h:337
int index_pt_gw
Definition: perturbations.h:425
int * ic_size
Definition: perturbations.h:228
int index_mt_psi
Definition: perturbations.h:455
tca_method
Definition: perturbations.h:42
int switch_pol
Definition: perturbations.h:159
Definition: perturbations.h:58
double * scalar_perturbations_data[_MAX_NUMBER_OF_K_FILES_]
Definition: perturbations.h:174
short has_cl_cmb_temperature
Definition: perturbations.h:127
int l_scalar_max
Definition: perturbations.h:143
int index_k
Definition: perturbations.h:559
int l_max_g
Definition: perturbations.h:385
double selection_delta_tau
Definition: perturbations.h:339
int * q_size_ncdm
Definition: perturbations.h:418
short has_nid
Definition: perturbations.h:115
short has_source_phi_plus_psi
Definition: perturbations.h:260
short perturbations_verbose
Definition: perturbations.h:364
short has_ad
Definition: perturbations.h:112
double * selection_tau
Definition: perturbations.h:343
int index_tp_phi_prime
Definition: perturbations.h:296
int index_pt_perturbed_recombination_delta_temp
Definition: perturbations.h:407
double three_ceff2_ur
Definition: perturbations.h:181
short has_source_delta_dcdm
Definition: perturbations.h:242
int index_ic_cdi
Definition: perturbations.h:222
short has_niv
Definition: perturbations.h:116
int index_pt_theta_g
Definition: perturbations.h:382
short has_source_delta_b
Definition: perturbations.h:240
int perturb_print_variables(double tau, double *y, double *dy, void *parameters_and_workspace, ErrorMsg error_message)
Definition: perturbations.c:6177
int index_tp_theta_dcdm
Definition: perturbations.h:288
short has_nl_corrections_based_on_delta_m
Definition: perturbations.h:136
int index_pt_phi_prime_scf
Definition: perturbations.h:400
int l_max_pol_g
Definition: perturbations.h:390
Definition: perturbations.h:95
int index_mt_phi_prime
Definition: perturbations.h:456
short evolve_tensor_ncdm
Definition: perturbations.h:125
char scalar_titles[_MAXTITLESTRINGLENGTH_]
Definition: perturbations.h:166
double gw_source
Definition: perturbations.h:486
double ** k
Definition: perturbations.h:320
short has_source_theta_cdm
Definition: perturbations.h:251
int index_pt_delta_cdm
Definition: perturbations.h:393
int index_pt_pol1_g
Definition: perturbations.h:387
short has_cl_cmb_polarization
Definition: perturbations.h:128
int last_index_back
Definition: perturbations.h:515
double * s_l
Definition: perturbations.h:539
int index_mt_alpha_prime
Definition: perturbations.h:461
int index_pt_F0_dr
Definition: perturbations.h:413
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:4004
short has_velocity_transfers
Definition: perturbations.h:134
Definition: thermodynamics.h:57
double rho_plus_p_shear
Definition: perturbations.h:484
int index_md
Definition: perturbations.h:557
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:2052
double * vector_perturbations_data[_MAX_NUMBER_OF_K_FILES_]
Definition: perturbations.h:175
int index_mt_eta_prime
Definition: perturbations.h:459
int perturb_sources(double tau, double *y, double *dy, int index_tau, void *parameters_and_workspace, ErrorMsg error_message)
Definition: perturbations.c:5728
int * tp_size
Definition: perturbations.h:300
double * tau_sampling
Definition: perturbations.h:334
short has_lss
Definition: perturbations.h:193
short has_source_t
Definition: perturbations.h:236
double * selection_tau_max
Definition: perturbations.h:342
int index_pt_shear_ur
Definition: perturbations.h:403
int mt_size
Definition: perturbations.h:465
int index_pt_theta_fld
Definition: perturbations.h:398
enum tensor_methods tensor_method
Definition: perturbations.h:122
double * delta_ncdm
Definition: perturbations.h:497
short has_cl_lensing_potential
Definition: perturbations.h:130
int switch_dop
Definition: perturbations.h:158
double rsa_delta_g
Definition: perturbations.h:492
int index_pt_hv_prime
Definition: perturbations.h:422
int * k_size_cl
Definition: perturbations.h:312
int perturb_prepare_output(struct background *pba, struct perturbs *ppt)
Definition: perturbations.c:2443
#define _MAX_NUMBER_OF_K_FILES_
Definition: perturbations.h:79
double selection_width[_SELECTION_NUM_MAX_]
Definition: perturbations.h:153
int index_tp_theta_b
Definition: perturbations.h:286
double selection_mean[_SELECTION_NUM_MAX_]
Definition: perturbations.h:152
int * used_in_sources
Definition: perturbations.h:432
short has_nc_density
Definition: perturbations.h:138
int * index_k_output_values
Definition: perturbations.h:165
short has_source_delta_scf
Definition: perturbations.h:244
int l_max_dr
Definition: perturbations.h:414
int index_pt_delta_b
Definition: perturbations.h:391
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:4667
double * pvecmetric
Definition: perturbations.h:477
int pt_size
Definition: perturbations.h:427
char tensor_titles[_MAXTITLESTRINGLENGTH_]
Definition: perturbations.h:168
int index_mt_gw_prime_prime
Definition: perturbations.h:462
int index_tp_t1
Definition: perturbations.h:268
int switch_sw
Definition: perturbations.h:155
int index_tp_phi
Definition: perturbations.h:295
int perturb_timescale(double tau, void *parameters_and_workspace, double *timescale, ErrorMsg error_message)
Definition: perturbations.c:4871
short has_source_p
Definition: perturbations.h:237
int index_tp_delta_dcdm
Definition: perturbations.h:275
Definition: perturbations.h:446
double * selection_function
Definition: perturbations.h:344
struct precision * ppr
Definition: perturbations.h:553
int k_output_values_num
Definition: perturbations.h:163
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:323
int selection_num
Definition: perturbations.h:149
int perturb_indices_of_perturbs(struct precision *ppr, struct background *pba, struct thermo *pth, struct perturbs *ppt)
Definition: perturbations.c:518
double * pvecback
Definition: perturbations.h:475
int index_ap_ncdmfa
Definition: perturbations.h:527
int index_pt_theta_b
Definition: perturbations.h:392
int index_ap_tca
Definition: perturbations.h:524
double * tensor_perturbations_data[_MAX_NUMBER_OF_K_FILES_]
Definition: perturbations.h:176
short has_source_theta_m
Definition: perturbations.h:248
int index_mt_hv_prime_prime
Definition: perturbations.h:464
double * shear_ncdm
Definition: perturbations.h:499
int perturb_get_k_list(struct precision *ppr, struct background *pba, struct thermo *pth, struct perturbs *ppt)
Definition: perturbations.c:1211
int l_tensor_max
Definition: perturbations.h:145
int index_ic_ten
Definition: perturbations.h:226
int perturb_timesampling_for_sources(struct precision *ppr, struct background *pba, struct thermo *pth, struct perturbs *ppt)
Definition: perturbations.c:835
short inter_mode
Definition: perturbations.h:513
int size_vector_perturbation_data[_MAX_NUMBER_OF_K_FILES_]
Definition: perturbations.h:178
int index_tp_delta_scf
Definition: perturbations.h:277
int index_tp_theta_scf
Definition: perturbations.h:290
short has_scalars
Definition: perturbations.h:108
short has_source_theta_fld
Definition: perturbations.h:253
int tau_size
Definition: perturbations.h:332
int index_pt_pol0_g
Definition: perturbations.h:386
short has_source_delta_ncdm
Definition: perturbations.h:247
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:463
int index_tp_psi
Definition: perturbations.h:298
int index_pt_theta_ur
Definition: perturbations.h:402
double tca_slip
Definition: perturbations.h:491
short has_cmb
Definition: perturbations.h:192
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:2656
int index_tp_delta_b
Definition: perturbations.h:273
short has_source_delta_g
Definition: perturbations.h:239
short has_nc_rsd
Definition: perturbations.h:139
ErrorMsg error_message
Definition: perturbations.h:366
int index_pt_eta
Definition: perturbations.h:420
int perturb_free(struct perturbs *ppt)
Definition: perturbations.c:444
int max_l_max
Definition: perturbations.h:538
int * approx
Definition: perturbations.h:530
short evolve_tensor_ur
Definition: perturbations.h:124
int ap_size
Definition: perturbations.h:528
int index_pt_V
Definition: perturbations.h:423
int index_tp_delta_ncdm1
Definition: perturbations.h:280
short has_tensors
Definition: perturbations.h:110
short has_cl_number_count
Definition: perturbations.h:131
double z_max_pk
Definition: perturbations.h:184
int index_pt_delta_g
Definition: perturbations.h:381
int index_md_vectors
Definition: perturbations.h:211
int index_tp_delta_dr
Definition: perturbations.h:278
double * selection_tau_min
Definition: perturbations.h:341
int index_pt_perturbed_recombination_delta_chi
Definition: perturbations.h:408
int index_pt_phi_scf
Definition: perturbations.h:399
struct background * pba
Definition: perturbations.h:554
short has_source_theta_dr
Definition: perturbations.h:255
double selection_min_of_tau_min
Definition: perturbations.h:336
int index_tp_delta_cdm
Definition: perturbations.h:274
short has_source_phi_prime
Definition: perturbations.h:259
double k_output_values[_MAX_NUMBER_OF_K_FILES_]
Definition: perturbations.h:164
short has_source_delta_fld
Definition: perturbations.h:243
int index_md_tensors
Definition: perturbations.h:210
short has_source_delta_ur
Definition: perturbations.h:246
struct perturb_workspace * ppw
Definition: perturbations.h:561
short has_perturbations
Definition: perturbations.h:104
int * k_size_cmb
Definition: perturbations.h:308
int index_pt_gwdot
Definition: perturbations.h:426
int index_pt_theta_dcdm
Definition: perturbations.h:396
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:5234
double delta_m
Definition: perturbations.h:501
short has_bi
Definition: perturbations.h:113
short has_source_theta_b
Definition: perturbations.h:250
short has_density_transfers
Definition: perturbations.h:133
double rsa_theta_g
Definition: perturbations.h:493
int index_tp_theta_cdm
Definition: perturbations.h:287
double delta_p
Definition: perturbations.h:485
double * theta_ncdm
Definition: perturbations.h:498
int index_ic_ad
Definition: perturbations.h:221
int index_ic_nid
Definition: perturbations.h:224
int last_index_thermo
Definition: perturbations.h:516
double delta_rho
Definition: perturbations.h:482
double k_max_for_pk
Definition: perturbations.h:147
int perturb_vector_free(struct perturb_vector *pv)
Definition: perturbations.c:3973
int index_mt_alpha
Definition: perturbations.h:460
double vector_source_pi
Definition: perturbations.h:487
enum selection_type selection
Definition: perturbations.h:151
int switch_lisw
Definition: perturbations.h:157
int index_pt_pol2_g
Definition: perturbations.h:388
int index_tp_phi_plus_psi
Definition: perturbations.h:297
int index_pt_l3_ur
Definition: perturbations.h:404
short has_cls
Definition: perturbations.h:106
int index_ic_bi
Definition: perturbations.h:223
int index_tp_theta_ur
Definition: perturbations.h:291
int index_tp_perturbed_recombination_delta_temp
Definition: perturbations.h:281
int index_tp_theta_dr
Definition: perturbations.h:292
short has_source_psi
Definition: perturbations.h:261
short has_nc_gr
Definition: perturbations.h:141
int index_pt_delta_fld
Definition: perturbations.h:397
short has_perturbed_recombination
Definition: perturbations.h:120
int size_tensor_perturbation_data[_MAX_NUMBER_OF_K_FILES_]
Definition: perturbations.h:179
int index_ic
Definition: perturbations.h:558
short has_cl_cmb_lensing_potential
Definition: perturbations.h:129
int number_of_vector_titles
Definition: perturbations.h:170
int index_tp_theta_g
Definition: perturbations.h:285
char vector_titles[_MAXTITLESTRINGLENGTH_]
Definition: perturbations.h:167
int N_ncdm
Definition: perturbations.h:416
int number_of_tensor_titles
Definition: perturbations.h:171
double * pvecthermo
Definition: perturbations.h:476
int switch_eisw
Definition: perturbations.h:156
double *** sources
Definition: perturbations.h:352
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:2567
int index_ap_rsa
Definition: perturbations.h:525
int index_tp_theta_fld
Definition: perturbations.h:289
int * k_size
Definition: perturbations.h:316
int l_max_ur
Definition: perturbations.h:405
short has_pk_matter
Definition: perturbations.h:132
int index_tp_delta_ur
Definition: perturbations.h:279
double three_cvis2_ur
Definition: perturbations.h:182
int index_pt_delta_dcdm
Definition: perturbations.h:395
int number_of_scalar_titles
Definition: perturbations.h:169
struct perturbs * ppt
Definition: perturbations.h:556
int index_ikout
Definition: perturbations.h:505
double theta_m
Definition: perturbations.h:502
int index_tp_delta_fld
Definition: perturbations.h:276
int index_md_scalars
Definition: perturbations.h:209
FILE * perturb_output_file
Definition: perturbations.h:504
double rsa_theta_ur
Definition: perturbations.h:495
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:5041
short has_source_theta_g
Definition: perturbations.h:249
int index_pt_shear_g
Definition: perturbations.h:383
int index_mt_h_prime
Definition: perturbations.h:457
int index_pt_theta_cdm
Definition: perturbations.h:394
int index_tp_delta_g
Definition: perturbations.h:272
int index_tp_t0
Definition: perturbations.h:267
int size_scalar_perturbation_data[_MAX_NUMBER_OF_K_FILES_]
Definition: perturbations.h:177
int index_tp_perturbed_recombination_delta_chi
Definition: perturbations.h:282
int * l_max_ncdm
Definition: perturbations.h:417
int l_vector_max
Definition: perturbations.h:144
short has_source_theta_scf
Definition: perturbations.h:254
short has_source_delta_dr
Definition: perturbations.h:245
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:483
int perturb_derivs(double tau, double *y, double *dy, void *parameters_and_workspace, ErrorMsg error_message)
Definition: perturbations.c:6698
short has_source_delta_cdm
Definition: perturbations.h:241
int index_tp_p
Definition: perturbations.h:270
short has_source_theta_dcdm
Definition: perturbations.h:252
int md_size
Definition: perturbations.h:213
short has_source_delta_m
Definition: perturbations.h:238
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:2947
int l_lss_max
Definition: perturbations.h:146
Definition: perturbations.h:57
double k
Definition: perturbations.h:560
int index_ap_ufa
Definition: perturbations.h:526
double rsa_delta_ur
Definition: perturbations.h:494
double k_min
Definition: perturbations.h:322
struct thermo * pth
Definition: perturbations.h:555
Definition: perturbations.h:551
int index_tp_t2
Definition: perturbations.h:269