1#ifndef NONLINEAR_MODULE_H
2#define NONLINEAR_MODULE_H
6#include "base_module.h"
9class NonlinearModule :
public BaseModule {
11 NonlinearModule(InputModulePtr input_module,
12 BackgroundModulePtr background_module,
13 PerturbationsModulePtr perturbations_module,
14 PrimordialModulePtr primordial_module);
19 enum pk_outputs pk_output,
23 double* out_pk_ic)
const;
25 enum pk_outputs pk_output,
30 double* out_pk_cb_ic)
const;
31 void nonlinear_pk_at_k_and_z(
enum pk_outputs pk_output,
36 double* out_pk_ic)
const;
37 void nonlinear_pks_at_k_and_z(
enum pk_outputs pk_output,
43 double* out_pk_cb_ic)
const;
44 void nonlinear_pks_at_kvec_and_zvec(
enum pk_outputs pk_output,
50 double* out_pk_cb)
const;
51 void nonlinear_sigmas_at_z(
52 double R,
double z,
int index_pk,
enum out_sigmas sigma_output,
double* result)
const;
53 void nonlinear_pk_tilt_at_k_and_z(
54 enum pk_outputs pk_output,
double k,
double z,
int index_pk,
double* pk_tilt)
const;
55 void nonlinear_k_nl_at_z(
double z,
double* k_nl,
double* k_nl_cb)
const;
58 void nonlinear_sigma_at_z(
59 double R,
double z,
int index_pk,
double k_per_decade,
double* result)
const;
62 std::vector<double> ln_k_;
64 std::vector<std::vector<double>>
77 std::vector<double> sigma8_;
81 void nonlinear_init();
82 void nonlinear_indices();
83 void nonlinear_get_k_list();
84 void nonlinear_get_tau_list();
85 void nonlinear_get_source(
int index_k,
89 const std::vector<std::vector<double>>& sources,
91 void nonlinear_pk_linear(
int index_pk,
int index_tau,
int k_size,
double* lnpk,
double* lnpk_ic);
92 void nonlinear_sigmas(
double R,
97 enum out_sigmas sigma_output,
98 double* result)
const;
99 void nonlinear_halofit(
int index_pk,
105 short* halofit_found_k_max);
106 void nonlinear_halofit_integrate(
double* integrand_array,
114 enum halofit_integral_type type,
116 void nonlinear_hmcode(
int index_pk,
120 std::vector<std::vector<double>>& lnpk_l,
121 std::vector<std::vector<double>>& ddlnpk_l,
123 short* halofit_found_k_max,
127 void nonlinear_hmcode_baryonic_feedback();
128 void nonlinear_hmcode_fill_sigtab(
int index_tau,
133 void nonlinear_hmcode_growint(
double a,
double w,
double wa,
double* growth);
134 void nonlinear_hmcode_window_nfw(
double k,
double rv,
double c,
double* window_nfw);
135 void nonlinear_hmcode_halomassfunction(
double nu,
double* hmf);
136 void nonlinear_hmcode_sigma8_at_z(
double z,
140 void nonlinear_hmcode_sigmadisp_at_z(
double z,
142 double* sigma_disp_cb,
144 void nonlinear_hmcode_sigmadisp100_at_z(
double z,
145 double* sigma_disp_100,
146 double* sigma_disp_100_cb,
148 void nonlinear_hmcode_sigmaprime_at_z(
double z,
150 double* sigma_prime_cb,
152 void prepare_pk_eq();
154 BackgroundModulePtr background_module_;
155 PerturbationsModulePtr perturbations_module_;
156 PrimordialModulePtr primordial_module_;
164 std::vector<double> k_;
166 std::vector<double> ln_tau_;
174 std::vector<std::vector<double>> ln_pk_ic_l_;
190 std::vector<std::vector<double>>
201 std::vector<std::vector<double>>
207 std::vector<std::vector<double>>
210 std::vector<std::vector<double>>
216 std::vector<std::vector<double>>
228 std::vector<double> tau_;
231 std::vector<std::vector<double>>
234 int index_tau_min_nl_;
243 int index_md_scalars_;
257 int index_pk_cluster_;
271 int index_pk_eq_Omega_m_;
274 std::vector<double> pk_eq_tau_;
275 std::vector<double> pk_eq_w_and_Omega_;
276 std::vector<double> pk_eq_ddw_and_ddOmega_;
Definition nonlinear.h:89
linear_or_logarithmic
Definition primordial.h:23