CLASS MANUAL
transfer.h File Reference
#include "fourier.h"
#include "hyperspherical.h"
#include <sys/shm.h>
#include <sys/stat.h>
#include "errno.h"
+ Include dependency graph for transfer.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  transfer
 
struct  transfer_workspace
 

Enumerations

enum  radial_function_type
 

Detailed Description

Documented includes for transfer module.


Data Structure Documentation

◆ transfer

struct transfer

Structure containing everything about transfer functions in harmonic space $ \Delta_l^{X} (q) $ that other modules need to know.

Once initialized by transfer_init(), contains all tables of transfer functions used for interpolation in other modules, for all requested modes (scalar/vector/tensor), initial conditions, types (temperature, polarization, etc), multipoles l, and wavenumbers q.

Wavenumbers are called q in this module and k in the perturbation module. In flat universes k=q. In non-flat universes q and k differ through q2 = k2 + K(1+m), where m=0,1,2 for scalar, vector, tensor. q should be used throughout the transfer module, except when interpolating or manipulating the source functions S(k,tau) calculated in the perturbation module: for a given value of q, this should be done at the corresponding k(q).

The content of this structure is entirely computed in this module, given the content of the 'precision', 'bessels', 'background', 'thermodynamics' and 'perturbation' structures.

Data Fields
double lcmb_rescale

normally set to one, can be used exceptionally to rescale by hand the CMB lensing potential

double lcmb_tilt

normally set to zero, can be used exceptionally to tilt by hand the CMB lensing potential

double lcmb_pivot

if lcmb_tilt non-zero, corresponding pivot scale

double selection_bias[_SELECTION_NUM_MAX_]

light-to-mass bias in the transfer function of density number count

double selection_magnification_bias[_SELECTION_NUM_MAX_]

magnification bias in the transfer function of density number count

short has_nz_file

Has dN/dz (selection function) input file?

short has_nz_analytic

Use analytic form for dN/dz (selection function) distribution?

FileName nz_file_name

dN/dz (selection function) input file name

int nz_size

number of redshift values in input tabulated selection function

double * nz_z

redshift values in input tabulated selection function

double * nz_nz

input tabulated values of selection function

double * nz_ddnz

second derivatives in splined selection function

short has_nz_evo_file

Has dN/dz (evolution function) input file?

short has_nz_evo_analytic

Use analytic form for dN/dz (evolution function) distribution?

FileName nz_evo_file_name

dN/dz (evolution function) input file name

int nz_evo_size

number of redshift values in input tabulated evolution function

double * nz_evo_z

redshift values in input tabulated evolution function

double * nz_evo_nz

input tabulated values of evolution function

double * nz_evo_dlog_nz

log of tabulated values of evolution function

double * nz_evo_dd_dlog_nz

second derivatives in splined log of evolution function

short has_cls

copy of same flag in perturbation structure

int md_size

number of modes included in computation

int index_tt_t0

index for transfer type = temperature (j=0 term)

int index_tt_t1

index for transfer type = temperature (j=1 term)

int index_tt_t2

index for transfer type = temperature (j=2 term)

int index_tt_e

index for transfer type = E-polarization

int index_tt_b

index for transfer type = B-polarization

int index_tt_lcmb

index for transfer type = CMB lensing

int index_tt_density

index for first bin of transfer type = matter density

int index_tt_lensing

index for first bin of transfer type = galaxy lensing

int index_tt_rsd

index for first bin of transfer type = redshift space distortion of number count

int index_tt_d0

index for first bin of transfer type = doppler effect for of number count (j=0 term)

int index_tt_d1

index for first bin of transfer type = doppler effect for of number count (j=1 term)

int index_tt_nc_lens

index for first bin of transfer type = lensing for of number count

int index_tt_nc_g1

index for first bin of transfer type = gravity term G1 for of number count

int index_tt_nc_g2

index for first bin of transfer type = gravity term G2 for of number count

int index_tt_nc_g3

index for first bin of transfer type = gravity term G3 for of number count

int index_tt_nc_g4

index for first bin of transfer type = gravity term G3 for of number count

int index_tt_nc_g5

index for first bin of transfer type = gravity term G3 for of number count

int * tt_size

number of requested transfer types tt_size[index_md] for each mode

int ** l_size_tt

number of multipole values for which we effectively compute the transfer function,l_size_tt[index_md][index_tt]

int * l_size

number of multipole values for each requested mode, l_size[index_md]

int l_size_max

greatest of all l_size[index_md]

int * l

list of multipole values l[index_l]

double angular_rescaling

correction between l and k space due to curvature (= comoving angular diameter distance to recombination / comoving radius to recombination)

size_t q_size

number of wavenumber values

double * q

list of wavenumber values, q[index_q]

double ** k

list of wavenumber values for each requested mode, k[index_md][index_q]. In flat universes k=q. In non-flat universes q and k differ through q2 = k2 + K(1+m), where m=0,1,2 for scalar, vector, tensor. q should be used throughout the transfer module, excepted when interpolating or manipulating the source functions S(k,tau): for a given value of q this should be done in k(q).

int index_q_flat_approximation

index of the first q value using the flat rescaling approximation

double ** transfer

table of transfer functions for each mode, initial condition, type, multipole and wavenumber, with argument transfer[index_md][((index_ic * ptr->tt_size[index_md] + index_tt) * ptr->l_size[index_md] + index_l) * ptr->q_size + index_q]

short transfer_verbose

flag regulating the amount of information sent to standard output (none if set to zero)

ErrorMsg error_message

zone for writing error messages

◆ transfer_workspace

struct transfer_workspace

Structure containing all the quantities that each thread needs to know for computing transfer functions (but that can be forgotten once the transfer functions are known, otherwise they would be stored in the transfer module)

Data Fields
HyperInterpStruct HIS

structure containing all hyperspherical bessel functions (flat case) or all hyperspherical bessel functions for a given value of beta=q/sqrt(|K|) (non-flat case). HIS = Hyperspherical Interpolation Structure.

int HIS_allocated

flag specifying whether the previous structure has been allocated

HyperInterpStruct * pBIS

pointer to structure containing all the spherical bessel functions of the flat case (used even in the non-flat case, for approximation schemes). pBIS = pointer to Bessel Interpolation Structure.

int l_size

number of l values

int tau_size

number of discrete time values for a given type

int tau_size_max

maximum number of discrete time values for all types

double * interpolated_sources

interpolated_sources[index_tau]: sources interpolated from the perturbation module at the right value of k

double * sources

sources[index_tau]: sources used in transfer module, possibly differing from those in the perturbation module by some resampling or rescaling

double * tau0_minus_tau

tau0_minus_tau[index_tau]: values of (tau0 - tau)

double * w_trapz

w_trapz[index_tau]: values of weights in trapezoidal integration (related to time steps)

double * chi

chi[index_tau]: value of argument of bessel function: k(tau0-tau) (flat case) or sqrt(|K|)(tau0-tau) (non-flat case)

double * cscKgen

cscKgen[index_tau]: useful trigonometric function

double * cotKgen

cotKgen[index_tau]: useful trigonometric function

double K

curvature parameter (see background module for details)

int sgnK

0 (flat), 1 (positive curvature, spherical, closed), -1 (negative curvature, hyperbolic, open)

double tau0_minus_tau_cut

critical value of (tau0-tau) in time cut approximation for the wavenumber at hand

short neglect_late_source

flag stating whether we use the time cut approximation for the wavenumber at hand

Enumeration Type Documentation

◆ radial_function_type

enumeration of possible source types. This looks redundant with respect to the definition of indices index_tt_... This definition is however convenient and time-saving: it allows to use a "case" statement in transfer_radial_function()