1#ifndef TRANSFER_MODULE_H
2#define TRANSFER_MODULE_H
6#include "base_module.h"
9class TransferModule :
public BaseModule {
11 TransferModule(InputModulePtr input_module,
12 BackgroundModulePtr background_module,
13 ThermodynamicsModulePtr thermodynamics_module,
14 PerturbationsModulePtr perturbations_module,
15 NonlinearModulePtr nonlinear_module);
27 int index_tt_density_;
28 int index_tt_lensing_;
33 int index_tt_nc_lens_;
47 std::vector<std::vector<int>>
57 std::vector<double> q_;
58 std::vector<std::vector<double>>
60 int index_q_flat_approximation_;
65 bool do_lcmb_full_limber_ =
false;
66 int q_size_limber_ = 0;
67 std::vector<double> q_limber_;
68 std::vector<std::vector<double>> k_limber_;
69 std::vector<std::vector<double>> transfer_limber_;
74 std::vector<std::vector<double>>
79 void transfer_functions_at_q(
80 int index_md,
int index_ic,
int index_type,
int index_l,
double q,
double* ptransfer_local);
82 void transfer_indices_of_transfers(
double q_period,
double K,
int sgnK);
83 void transfer_perturbation_copy_sources_and_nl_corrections(
84 std::vector<std::vector<double*>>& sources,
85 std::vector<std::vector<std::vector<double>>>& owned_sources);
86 void transfer_perturbation_source_spline(
87 const std::vector<std::vector<double*>>& sources,
88 std::vector<std::vector<double*>>& sources_spline_ptrs,
89 std::vector<std::vector<std::vector<double>>>& sources_spline_storage);
90 void transfer_get_l_list();
91 void transfer_get_q_list(
double q_period,
double K,
int sgnK);
92 int transfer_get_q_list_v1(
double q_period,
double K,
int sgnK);
93 void transfer_get_q_limber_list(
double K,
int sgnK);
94 void transfer_get_k_list(
double K);
95 void transfer_get_source_correspondence(std::vector<std::vector<int>>& tp_of_tt);
96 void transfer_source_tau_size_max(
double tau_rec,
double tau0,
int* tau_size_max);
97 void transfer_source_tau_size(
98 double tau_rec,
double tau0,
int index_md,
int index_tt,
int* tau_size);
99 void transfer_compute_for_each_q(
int*
const* tp_of_tt,
103 double**
const* sources,
104 double**
const* sources_spline,
107 bool use_full_limber);
108 void transfer_radial_coordinates(
struct transfer_workspace* ptw,
int index_md,
int index_q);
109 void transfer_interpolate_sources(
double k,
114 double* source_spline,
115 double* interpolated_sources);
116 void transfer_sources(
double* interpolated_sources,
124 double* tau0_minus_tau,
127 void transfer_selection_function(
int bin,
double z,
double* selection);
128 void transfer_dNdz_analytic(
double z,
double* dNdz,
double* dln_dNdz_dz);
129 void transfer_selection_sampling(
int bin,
double* tau0_minus_tau,
int tau_size);
130 void transfer_lensing_sampling(
int bin,
double tau0,
double* tau0_minus_tau,
int tau_size);
131 void transfer_source_resample(
int bin,
132 double* tau0_minus_tau,
136 double* interpolated_sources,
138 void transfer_selection_times(
int bin,
double* tau_min,
double* tau_mean,
double* tau_max);
139 void transfer_selection_compute(
double* selection,
140 double* tau0_minus_tau,
155 bool use_full_limber);
156 void transfer_use_limber(
157 double q_max_bessel,
int index_md,
int index_tt,
double q,
double l,
short* use_limber);
174 void transfer_limber_interpolate(
double* tau0_minus_tau,
177 double tau0_minus_tau_limber,
179 void transfer_limber2(
int tau_size,
184 double* tau0_minus_tau,
188 void transfer_can_be_neglected(
189 int index_md,
int index_ic,
int index_tt,
double ra_rec,
double q,
double l,
short* neglect);
190 void transfer_late_source_can_be_neglected(
int index_md,
int index_tt,
double l,
short* neglect);
191 void transfer_select_radial_function(
int index_md,
199 double* radial_function,
201 int transfer_init_HIS_from_bessel(HyperInterpStruct* pHIS);
202 void transfer_global_selection_read();
204 int perturb_tau_size,
208 double tau0_minus_tau_cut,
209 HyperInterpStruct* pBIS);
211 void transfer_get_lmax(
void (*get_xmin_generic)(
int sgnK,
227 void transfer_precompute_selection(
double tau_rec,
int tau_size_max, std::vector<double>& window);
228 void transfer_f_evo(
double* pvecback,
int last_index,
double cotKgen,
double* f_evo);
230 BackgroundModulePtr background_module_;
231 ThermodynamicsModulePtr thermodynamics_module_;
232 PerturbationsModulePtr perturbations_module_;
233 NonlinearModulePtr nonlinear_module_;
239 std::vector<double> nz_z_;
240 std::vector<double> nz_nz_;
241 std::vector<double> nz_ddnz_;
244 std::vector<double> nz_evo_z_;
245 std::vector<double> nz_evo_nz_;
246 std::vector<double> nz_evo_dlog_nz_;
radial_function_type
Definition transfer.h:191
Definition transfer.h:116