1#ifndef SPECTRA_MODULE_H
2#define SPECTRA_MODULE_H
8#include "base_module.h"
11class SpectraModule :
public BaseModule {
13 SpectraModule(InputModulePtr input_module,
14 PerturbationsModulePtr perturbations_module,
15 PrimordialModulePtr primordial_module_,
16 NonlinearModulePtr nonlinear_module,
17 TransferModulePtr transfer_module);
19 void spectra_cl_at_l(
double l,
double* cl,
double** cl_md,
double** cl_md_ic)
const;
20 std::map<std::string, int> cl_output_index_map()
const;
21 std::map<std::string, std::vector<double>> cl_output(
int lmax)
const;
22 void cl_output_no_copy(
int lmax, std::vector<double*>& output_pointers)
const;
32 std::vector<std::vector<short>>
73 std::vector<double> l_;
74 std::vector<std::vector<int>> l_max_ct_;
79 std::vector<int> l_max_;
92 void spectra_indices();
94 void spectra_compute_cl(
int index_md,
98 int cl_integrand_num_columns,
100 double* primordial_pk_cached,
101 double* transfer_ic1,
102 double* transfer_ic2);
103 int spectra_k_and_tau();
109 double* output_cb_tot,
110 double* output_cb_ic);
111 void spectra_pk_at_k_and_z(
112 double k,
double z,
double* pk,
double* pk_ic,
double* pk_cb,
double* pk_cb_ic);
116 double* output_cb_tot);
117 void spectra_pk_nl_at_k_and_z(
double k,
double z,
double* pk_tot,
double* pk_cb_tot);
118 void spectra_fast_pk_at_kvec_and_zvec(
double* kvec,
123 double* pk_cb_tot_out,
125 void spectra_sigma(
double R,
double z,
double* sigma);
126 void spectra_sigma_cb(
double R,
double z,
double* sigma_cb);
128 void spectra_tk_at_z(
double z,
double*
output);
129 void spectra_tk_at_k_and_z(
double k,
double z,
double*
output);
131 PerturbationsModulePtr perturbations_module_;
132 PrimordialModulePtr primordial_module_;
133 NonlinearModulePtr nonlinear_module_;
134 TransferModulePtr transfer_module_;
136 int index_md_scalars_;
145 std::vector<std::vector<double>>
147 std::vector<std::vector<double>>
Definition nonlinear.h:49
linear_or_logarithmic
Definition primordial.h:23