linear theory: solving the boltzmann...
Post on 23-Jan-2021
7 Views
Preview:
TRANSCRIPT
Linear Theory: Solving the Boltzmann Equations
Jascha Schewtschenko
Institute of Cosmology and Gravitation, University of Portsmouth
July 27, 2019
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 1 / 35
Outline
1 Introduction
2 ApproximationsUltrarel.Fluid Approximation (UFA)Fluid approximationTight Coupling Approximation (TCA)Tight Coupling Approximation (TCA)Radiation Streaming Approximation (RSA)
3 Implementation - CLASSStructure of CLASSPython WrapperModifying CLASS
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 2 / 35
History
overview of all the equations you may want to solve (for LCDM)
great starting point to implement any Boltzmann solver
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 3 / 35
History
overview of all the equations you may want to solve (for LCDM)
great starting point to implement any Boltzmann solver
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 3 / 35
History
overview of all the equations you may want to solve (for LCDM)
great starting point to implement any Boltzmann solver
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 3 / 35
History (cont.)(Popular) Public Einstein-Boltzmann solver covering all basic cosmology(abandoned or active development)
COSMICS (1995; Bertschinger) written in Fortran55; Synchronous gauge;Peeblesrecombination; Integration of Boltzmann eq. forphotons/neutrinos up to 2500
CMBFAST (1996; Seljak & Zaldarriaga) Add a few functions to COSMICS forcomputing the source functions and convolve them with Besselfunctions; New code much faster
RECFAST (1999; Seager et al.) module/patch for CMBFAST; improvedrecombination, open/closed, lensing; more complicated code
CAMB (1999; Lewis et al.) Based on CMBFAST, but cut in pieces andreorganised differently in Fortran90 . Improved expressions forsources, initial conditions, lensing, etc.; highly optimised for speed;newest versions with Python interface
CMBEASY (2003; Doran et al.) Based on CMBFAST, reorganised in C++
CLASS (2011; Lesgourgues et al.) written in C; Alternative to CAMB;Highly improved user-friedliness (“easy-to-use”), flexibility(“easy-to-modify”)(, speed)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 4 / 35
History (cont.)(Popular) Public Einstein-Boltzmann solver covering all basic cosmology(abandoned or active development)
COSMICS (1995; Bertschinger) written in Fortran55; Synchronous gauge;Peeblesrecombination; Integration of Boltzmann eq. forphotons/neutrinos up to 2500
CMBFAST (1996; Seljak & Zaldarriaga) Add a few functions to COSMICS forcomputing the source functions and convolve them with Besselfunctions; New code much faster
RECFAST (1999; Seager et al.) module/patch for CMBFAST; improvedrecombination, open/closed, lensing; more complicated code
CAMB (1999; Lewis et al.) Based on CMBFAST, but cut in pieces andreorganised differently in Fortran90 . Improved expressions forsources, initial conditions, lensing, etc.; highly optimised for speed;newest versions with Python interface
CMBEASY (2003; Doran et al.) Based on CMBFAST, reorganised in C++
CLASS (2011; Lesgourgues et al.) written in C; Alternative to CAMB;Highly improved user-friedliness (“easy-to-use”), flexibility(“easy-to-modify”)(, speed)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 4 / 35
History (cont.)(Popular) Public Einstein-Boltzmann solver covering all basic cosmology(abandoned or active development)
COSMICS (1995; Bertschinger) written in Fortran55; Synchronous gauge;Peeblesrecombination; Integration of Boltzmann eq. forphotons/neutrinos up to 2500
CMBFAST (1996; Seljak & Zaldarriaga) Add a few functions to COSMICS forcomputing the source functions and convolve them with Besselfunctions; New code much faster
RECFAST (1999; Seager et al.) module/patch for CMBFAST; improvedrecombination, open/closed, lensing; more complicated code
CAMB (1999; Lewis et al.) Based on CMBFAST, but cut in pieces andreorganised differently in Fortran90 . Improved expressions forsources, initial conditions, lensing, etc.; highly optimised for speed;newest versions with Python interface
CMBEASY (2003; Doran et al.) Based on CMBFAST, reorganised in C++
CLASS (2011; Lesgourgues et al.) written in C; Alternative to CAMB;Highly improved user-friedliness (“easy-to-use”), flexibility(“easy-to-modify”)(, speed)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 4 / 35
History (cont.)(Popular) Public Einstein-Boltzmann solver covering all basic cosmology(abandoned or active development)
COSMICS (1995; Bertschinger) written in Fortran55; Synchronous gauge;Peeblesrecombination; Integration of Boltzmann eq. forphotons/neutrinos up to 2500
CMBFAST (1996; Seljak & Zaldarriaga) Add a few functions to COSMICS forcomputing the source functions and convolve them with Besselfunctions; New code much faster
RECFAST (1999; Seager et al.) module/patch for CMBFAST; improvedrecombination, open/closed, lensing; more complicated code
CAMB (1999; Lewis et al.) Based on CMBFAST, but cut in pieces andreorganised differently in Fortran90 . Improved expressions forsources, initial conditions, lensing, etc.; highly optimised for speed;newest versions with Python interface
CMBEASY (2003; Doran et al.) Based on CMBFAST, reorganised in C++
CLASS (2011; Lesgourgues et al.) written in C; Alternative to CAMB;Highly improved user-friedliness (“easy-to-use”), flexibility(“easy-to-modify”)(, speed)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 4 / 35
History (cont.)(Popular) Public Einstein-Boltzmann solver covering all basic cosmology(abandoned or active development)
COSMICS (1995; Bertschinger) written in Fortran55; Synchronous gauge;Peeblesrecombination; Integration of Boltzmann eq. forphotons/neutrinos up to 2500
CMBFAST (1996; Seljak & Zaldarriaga) Add a few functions to COSMICS forcomputing the source functions and convolve them with Besselfunctions; New code much faster
RECFAST (1999; Seager et al.) module/patch for CMBFAST; improvedrecombination, open/closed, lensing; more complicated code
CAMB (1999; Lewis et al.) Based on CMBFAST, but cut in pieces andreorganised differently in Fortran90 . Improved expressions forsources, initial conditions, lensing, etc.; highly optimised for speed;newest versions with Python interface
CMBEASY (2003; Doran et al.) Based on CMBFAST, reorganised in C++
CLASS (2011; Lesgourgues et al.) written in C; Alternative to CAMB;Highly improved user-friedliness (“easy-to-use”), flexibility(“easy-to-modify”)(, speed)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 4 / 35
History (cont.)(Popular) Public Einstein-Boltzmann solver covering all basic cosmology(abandoned or active development)
COSMICS (1995; Bertschinger) written in Fortran55; Synchronous gauge;Peeblesrecombination; Integration of Boltzmann eq. forphotons/neutrinos up to 2500
CMBFAST (1996; Seljak & Zaldarriaga) Add a few functions to COSMICS forcomputing the source functions and convolve them with Besselfunctions; New code much faster
RECFAST (1999; Seager et al.) module/patch for CMBFAST; improvedrecombination, open/closed, lensing; more complicated code
CAMB (1999; Lewis et al.) Based on CMBFAST, but cut in pieces andreorganised differently in Fortran90 . Improved expressions forsources, initial conditions, lensing, etc.; highly optimised for speed;newest versions with Python interface
CMBEASY (2003; Doran et al.) Based on CMBFAST, reorganised in C++
CLASS (2011; Lesgourgues et al.) written in C; Alternative to CAMB;Highly improved user-friedliness (“easy-to-use”), flexibility(“easy-to-modify”)(, speed)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 4 / 35
History (cont.)(Popular) Public Einstein-Boltzmann solver covering all basic cosmology(abandoned or active development)
COSMICS (1995; Bertschinger) written in Fortran55; Synchronous gauge;Peeblesrecombination; Integration of Boltzmann eq. forphotons/neutrinos up to 2500
CMBFAST (1996; Seljak & Zaldarriaga) Add a few functions to COSMICS forcomputing the source functions and convolve them with Besselfunctions; New code much faster
RECFAST (1999; Seager et al.) module/patch for CMBFAST; improvedrecombination, open/closed, lensing; more complicated code
CAMB (1999; Lewis et al.) Based on CMBFAST, but cut in pieces andreorganised differently in Fortran90 . Improved expressions forsources, initial conditions, lensing, etc.; highly optimised for speed;newest versions with Python interface
CMBEASY (2003; Doran et al.) Based on CMBFAST, reorganised in C++
CLASS (2011; Lesgourgues et al.) written in C; Alternative to CAMB;Highly improved user-friedliness (“easy-to-use”), flexibility(“easy-to-modify”)(, speed)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 4 / 35
General numerical techniques
If using a C(omputer)A(lgebra)S(ystem) like Mathematica, you mayable to solve certain systems of differentational equations or integralsanalytically.
Provides the most accurate solutions, but rarely possible.
Instead numerical techniques have to be used solve such equation.Understanding your problem and the best approach is important as itmay strongly affect the precision and speed of your calculations.
Talking about them all in detail, would exceed the scope of thislecture. For a great overview, see the “Numerical Recipes” bookseries (http://numerical.recipes/)
We will instead introduce certain important concepts where needed
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 5 / 35
General numerical techniques
If using a C(omputer)A(lgebra)S(ystem) like Mathematica, you mayable to solve certain systems of differentational equations or integralsanalytically.
Provides the most accurate solutions, but rarely possible.
Instead numerical techniques have to be used solve such equation.Understanding your problem and the best approach is important as itmay strongly affect the precision and speed of your calculations.
Talking about them all in detail, would exceed the scope of thislecture. For a great overview, see the “Numerical Recipes” bookseries (http://numerical.recipes/)
We will instead introduce certain important concepts where needed
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 5 / 35
General numerical techniques
If using a C(omputer)A(lgebra)S(ystem) like Mathematica, you mayable to solve certain systems of differentational equations or integralsanalytically.
Provides the most accurate solutions, but rarely possible.
Instead numerical techniques have to be used solve such equation.Understanding your problem and the best approach is important as itmay strongly affect the precision and speed of your calculations.
Talking about them all in detail, would exceed the scope of thislecture. For a great overview, see the “Numerical Recipes” bookseries (http://numerical.recipes/)
We will instead introduce certain important concepts where needed
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 5 / 35
General numerical techniques
If using a C(omputer)A(lgebra)S(ystem) like Mathematica, you mayable to solve certain systems of differentational equations or integralsanalytically.
Provides the most accurate solutions, but rarely possible.
Instead numerical techniques have to be used solve such equation.Understanding your problem and the best approach is important as itmay strongly affect the precision and speed of your calculations.
Talking about them all in detail, would exceed the scope of thislecture. For a great overview, see the “Numerical Recipes” bookseries (http://numerical.recipes/)
We will instead introduce certain important concepts where needed
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 5 / 35
General numerical techniques
If using a C(omputer)A(lgebra)S(ystem) like Mathematica, you mayable to solve certain systems of differentational equations or integralsanalytically.
Provides the most accurate solutions, but rarely possible.
Instead numerical techniques have to be used solve such equation.Understanding your problem and the best approach is important as itmay strongly affect the precision and speed of your calculations.
Talking about them all in detail, would exceed the scope of thislecture. For a great overview, see the “Numerical Recipes” bookseries (http://numerical.recipes/)
We will instead introduce certain important concepts where needed
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 5 / 35
Solving Linearized Boltzmann equations
In this lecture, we will limit the discussion on how to solve theBoltzmann equations to linear order
A basic Boltzmann solver is not complicated, just a bit complex(implementing naively the equations found in Ma&Bertschinger tolinear order)
Boltzmann codes have improved considerably in terms of precisionand speed with respect to the pioneering COSMICS code
Several sophisticated optimisation methods and approximationschemes have been introduced in each new code
Improving the speed while keeping the precision sufficiently high isessential. MCMC runs invoke the Boltzmann solver for each of the104 − 105 steps
In the following, we will introduce a few of the importantapproximation you may encounter in modern codes like CAMB orCLASS (see e.g. Blas et al.,2011)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 6 / 35
Solving Linearized Boltzmann equations
In this lecture, we will limit the discussion on how to solve theBoltzmann equations to linear order
A basic Boltzmann solver is not complicated, just a bit complex(implementing naively the equations found in Ma&Bertschinger tolinear order)
Boltzmann codes have improved considerably in terms of precisionand speed with respect to the pioneering COSMICS code
Several sophisticated optimisation methods and approximationschemes have been introduced in each new code
Improving the speed while keeping the precision sufficiently high isessential. MCMC runs invoke the Boltzmann solver for each of the104 − 105 steps
In the following, we will introduce a few of the importantapproximation you may encounter in modern codes like CAMB orCLASS (see e.g. Blas et al.,2011)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 6 / 35
Solving Linearized Boltzmann equations
In this lecture, we will limit the discussion on how to solve theBoltzmann equations to linear order
A basic Boltzmann solver is not complicated, just a bit complex(implementing naively the equations found in Ma&Bertschinger tolinear order)
Boltzmann codes have improved considerably in terms of precisionand speed with respect to the pioneering COSMICS code
Several sophisticated optimisation methods and approximationschemes have been introduced in each new code
Improving the speed while keeping the precision sufficiently high isessential. MCMC runs invoke the Boltzmann solver for each of the104 − 105 steps
In the following, we will introduce a few of the importantapproximation you may encounter in modern codes like CAMB orCLASS (see e.g. Blas et al.,2011)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 6 / 35
Solving Linearized Boltzmann equations
In this lecture, we will limit the discussion on how to solve theBoltzmann equations to linear order
A basic Boltzmann solver is not complicated, just a bit complex(implementing naively the equations found in Ma&Bertschinger tolinear order)
Boltzmann codes have improved considerably in terms of precisionand speed with respect to the pioneering COSMICS code
Several sophisticated optimisation methods and approximationschemes have been introduced in each new code
Improving the speed while keeping the precision sufficiently high isessential. MCMC runs invoke the Boltzmann solver for each of the104 − 105 steps
In the following, we will introduce a few of the importantapproximation you may encounter in modern codes like CAMB orCLASS (see e.g. Blas et al.,2011)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 6 / 35
Solving Linearized Boltzmann equations
In this lecture, we will limit the discussion on how to solve theBoltzmann equations to linear order
A basic Boltzmann solver is not complicated, just a bit complex(implementing naively the equations found in Ma&Bertschinger tolinear order)
Boltzmann codes have improved considerably in terms of precisionand speed with respect to the pioneering COSMICS code
Several sophisticated optimisation methods and approximationschemes have been introduced in each new code
Improving the speed while keeping the precision sufficiently high isessential. MCMC runs invoke the Boltzmann solver for each of the104 − 105 steps
In the following, we will introduce a few of the importantapproximation you may encounter in modern codes like CAMB orCLASS (see e.g. Blas et al.,2011)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 6 / 35
Solving Linearized Boltzmann equations
In this lecture, we will limit the discussion on how to solve theBoltzmann equations to linear order
A basic Boltzmann solver is not complicated, just a bit complex(implementing naively the equations found in Ma&Bertschinger tolinear order)
Boltzmann codes have improved considerably in terms of precisionand speed with respect to the pioneering COSMICS code
Several sophisticated optimisation methods and approximationschemes have been introduced in each new code
Improving the speed while keeping the precision sufficiently high isessential. MCMC runs invoke the Boltzmann solver for each of the104 − 105 steps
In the following, we will introduce a few of the importantapproximation you may encounter in modern codes like CAMB orCLASS (see e.g. Blas et al.,2011)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 6 / 35
Massless neutrinos - Ultrarel. Fluid Approximation (UFA)
all ultrarelativistic relics (e.g. massless neutrinos) can be treated as asingle species assuming they are fully decoupled
obtain Boltzmann hierarchy for such free-streaming relics
Ma & Bertschinger proposed truncation of hierarchy for l ≥ lmax, butto avoid any un-physical side-effect due to thus approximation l hasto be at least around 30.
UFA proposes to apply a flexible lmax with two regimes depending onwavelengths: super-Hubble & sub-Hubble
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 7 / 35
Massless neutrinos - Ultrarel. Fluid Approximation (UFA)
all ultrarelativistic relics (e.g. massless neutrinos) can be treated as asingle species assuming they are fully decoupled
obtain Boltzmann hierarchy for such free-streaming relics
Ma & Bertschinger proposed truncation of hierarchy for l ≥ lmax, butto avoid any un-physical side-effect due to thus approximation l hasto be at least around 30.
UFA proposes to apply a flexible lmax with two regimes depending onwavelengths: super-Hubble & sub-Hubble
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 7 / 35
Massless neutrinos - Ultrarel. Fluid Approximation (UFA)
all ultrarelativistic relics (e.g. massless neutrinos) can be treated as asingle species assuming they are fully decoupled
obtain Boltzmann hierarchy for such free-streaming relics
Ma & Bertschinger proposed truncation of hierarchy for l ≥ lmax, butto avoid any un-physical side-effect due to thus approximation l hasto be at least around 30.
UFA proposes to apply a flexible lmax with two regimes depending onwavelengths: super-Hubble & sub-Hubble
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 7 / 35
Massless neutrinos - Ultrarel. Fluid Approximation (UFA)
all ultrarelativistic relics (e.g. massless neutrinos) can be treated as asingle species assuming they are fully decoupled
obtain Boltzmann hierarchy for such free-streaming relics
Ma & Bertschinger proposed truncation of hierarchy for l ≥ lmax, butto avoid any un-physical side-effect due to thus approximation l hasto be at least around 30.
UFA proposes to apply a flexible lmax with two regimes depending onwavelengths: super-Hubble & sub-Hubble
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 7 / 35
Massless neutrinos - Ultrarel. Fluid Approximation (UFA)(cont.)
for super-Hubble (kτ < (kτ)UFA), set lmax ∼ (kτ)UFA
for sub-Hubble, δ,Θ, σ ((non-perfect) fluid) are followed, butmultipoles for l > 2 are suppressed and can be dropped using
σ′ur = −3
τσur +
2
3Θur +
1
3h′
is more accurate and runs about 10% faster than fixed truncation
could be used until present time, but later, a more aggressiveapproximation may be applied (→ RSA)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 8 / 35
Massless neutrinos - Ultrarel. Fluid Approximation (UFA)(cont.)
for super-Hubble (kτ < (kτ)UFA), set lmax ∼ (kτ)UFA
for sub-Hubble, δ,Θ, σ ((non-perfect) fluid) are followed, butmultipoles for l > 2 are suppressed and can be dropped using
σ′ur = −3
τσur +
2
3Θur +
1
3h′
is more accurate and runs about 10% faster than fixed truncation
could be used until present time, but later, a more aggressiveapproximation may be applied (→ RSA)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 8 / 35
Massless neutrinos - Ultrarel. Fluid Approximation (UFA)(cont.)
for super-Hubble (kτ < (kτ)UFA), set lmax ∼ (kτ)UFA
for sub-Hubble, δ,Θ, σ ((non-perfect) fluid) are followed, butmultipoles for l > 2 are suppressed and can be dropped using
σ′ur = −3
τσur +
2
3Θur +
1
3h′
is more accurate and runs about 10% faster than fixed truncation
could be used until present time, but later, a more aggressiveapproximation may be applied (→ RSA)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 8 / 35
Massless neutrinos - Ultrarel. Fluid Approximation (UFA)(cont.)
for super-Hubble (kτ < (kτ)UFA), set lmax ∼ (kτ)UFA
for sub-Hubble, δ,Θ, σ ((non-perfect) fluid) are followed, butmultipoles for l > 2 are suppressed and can be dropped using
σ′ur = −3
τσur +
2
3Θur +
1
3h′
is more accurate and runs about 10% faster than fixed truncation
could be used until present time, but later, a more aggressiveapproximation may be applied (→ RSA)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 8 / 35
Non-Cold DM relics - Fluid approximation
Apply UFA for relativistic regime, while in the non-relativistic limit allmultipoles with l > 1 decay (pressure-less fluid)
Evolution of δ and p is given by
For the shear
with cg and cvis = 3wc2g being the adiabatic and viscosity sound
speed resp.
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 9 / 35
Non-Cold DM relics - Fluid approximation
Apply UFA for relativistic regime, while in the non-relativistic limit allmultipoles with l > 1 decay (pressure-less fluid)
Evolution of δ and p is given by
For the shear
with cg and cvis = 3wc2g being the adiabatic and viscosity sound
speed resp.
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 9 / 35
Non-Cold DM relics - Fluid approximation
Apply UFA for relativistic regime, while in the non-relativistic limit allmultipoles with l > 1 decay (pressure-less fluid)
Evolution of δ and p is given by
For the shear
with cg and cvis = 3wc2g being the adiabatic and viscosity sound
speed resp.
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 9 / 35
Baryons/Photons - Tight Coupling Approximation (TCA)
For baryons, we get the Boltzmann eq.
with R =4ργ3ρb
and H = a′
a
for photons, the hierarchy reads
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 10 / 35
Baryons/Photons - Tight Coupling Approximation (TCA)
For baryons, we get the Boltzmann eq.
with R =4ργ3ρb
and H = a′
a
for photons, the hierarchy reads
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 10 / 35
Baryons/Photons - Tight Coupling Approximation (TCA)(cont.)
For the TCA, it is now possible to find a solution for the evolution ofthe baryon slip Θ′γb and photon shear σγ in terms of δγ/b,Θγ/b thatholds for any order of τc . This approximation has been alreadydiscussed in the Theoretical Cosmology lectures, so we won’t do ithere. Additionally, you may find a detailed description e.g. in [Blas2011].
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 11 / 35
Photons/rel.relics - Radiation Streaming Approximation(RSA)
After decoupling from baryons, photons free-stream like neutrinos andother relativistic relics
could use UFA, but in matter- and DE-dominated era (Ωr 1) wecan go further as they all simply behave like test particles in externalgrav. field → feedback/coupling minimal, but still exist (Einstein eq.,temp./pol. source function, reionisation)
hence, truncation with lmax possible, but reflected power still maypropagate into final results
instead we use an analytic approximation (→ RSA) to calculate thedensity, velocity and shear.
avoids unphysical truncation errors and increase speed
we need sufficient precision at early times where radiation alreadysub-dominant, but not insignificant, but far less at late times. Alsohigher precision allows us to switch earlier to RSA
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 12 / 35
Photons/rel.relics - Radiation Streaming Approximation(RSA)
After decoupling from baryons, photons free-stream like neutrinos andother relativistic relics
could use UFA, but in matter- and DE-dominated era (Ωr 1) wecan go further as they all simply behave like test particles in externalgrav. field → feedback/coupling minimal, but still exist (Einstein eq.,temp./pol. source function, reionisation)
hence, truncation with lmax possible, but reflected power still maypropagate into final results
instead we use an analytic approximation (→ RSA) to calculate thedensity, velocity and shear.
avoids unphysical truncation errors and increase speed
we need sufficient precision at early times where radiation alreadysub-dominant, but not insignificant, but far less at late times. Alsohigher precision allows us to switch earlier to RSA
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 12 / 35
Photons/rel.relics - Radiation Streaming Approximation(RSA)
After decoupling from baryons, photons free-stream like neutrinos andother relativistic relics
could use UFA, but in matter- and DE-dominated era (Ωr 1) wecan go further as they all simply behave like test particles in externalgrav. field → feedback/coupling minimal, but still exist (Einstein eq.,temp./pol. source function, reionisation)
hence, truncation with lmax possible, but reflected power still maypropagate into final results
instead we use an analytic approximation (→ RSA) to calculate thedensity, velocity and shear.
avoids unphysical truncation errors and increase speed
we need sufficient precision at early times where radiation alreadysub-dominant, but not insignificant, but far less at late times. Alsohigher precision allows us to switch earlier to RSA
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 12 / 35
Photons/rel.relics - Radiation Streaming Approximation(RSA)
After decoupling from baryons, photons free-stream like neutrinos andother relativistic relics
could use UFA, but in matter- and DE-dominated era (Ωr 1) wecan go further as they all simply behave like test particles in externalgrav. field → feedback/coupling minimal, but still exist (Einstein eq.,temp./pol. source function, reionisation)
hence, truncation with lmax possible, but reflected power still maypropagate into final results
instead we use an analytic approximation (→ RSA) to calculate thedensity, velocity and shear.
avoids unphysical truncation errors and increase speed
we need sufficient precision at early times where radiation alreadysub-dominant, but not insignificant, but far less at late times. Alsohigher precision allows us to switch earlier to RSA
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 12 / 35
Photons/rel.relics - Radiation Streaming Approximation(RSA)
After decoupling from baryons, photons free-stream like neutrinos andother relativistic relics
could use UFA, but in matter- and DE-dominated era (Ωr 1) wecan go further as they all simply behave like test particles in externalgrav. field → feedback/coupling minimal, but still exist (Einstein eq.,temp./pol. source function, reionisation)
hence, truncation with lmax possible, but reflected power still maypropagate into final results
instead we use an analytic approximation (→ RSA) to calculate thedensity, velocity and shear.
avoids unphysical truncation errors and increase speed
we need sufficient precision at early times where radiation alreadysub-dominant, but not insignificant, but far less at late times. Alsohigher precision allows us to switch earlier to RSA
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 12 / 35
Photons/rel.relics - Radiation Streaming Approximation(RSA)
After decoupling from baryons, photons free-stream like neutrinos andother relativistic relics
could use UFA, but in matter- and DE-dominated era (Ωr 1) wecan go further as they all simply behave like test particles in externalgrav. field → feedback/coupling minimal, but still exist (Einstein eq.,temp./pol. source function, reionisation)
hence, truncation with lmax possible, but reflected power still maypropagate into final results
instead we use an analytic approximation (→ RSA) to calculate thedensity, velocity and shear.
avoids unphysical truncation errors and increase speed
we need sufficient precision at early times where radiation alreadysub-dominant, but not insignificant, but far less at late times. Alsohigher precision allows us to switch earlier to RSA
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 12 / 35
Radiation Streaming Approximation (RSA) (rel. relics)For rel. relics, we get the density from substituting Θ′ur into δ′′ur termin Boltmann hierarchy.
δ′′ur + δurk2
3= −2
3h′′ +
4
3k2σ2
ur
Inside the Hubble scale, we can assume in first approximation that thedensity perturbation exceeds the shear by far.
Furthermore, for a smooth particular solution, we can assume that|δ′′ur| δurk
2|.Hence, our previous eq. simplifies to
δur = − 2
k2h′′
Notice that as h ∼ δcdm in MD era in sync. gauge, h′′ is constant andthus δur static. Using the Einstein eq. (and a few approximations forthe post RD-era), we can determine h′′ in terms of h′ and get
δur = − 4
k2(a′
ah′ − k2η)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 13 / 35
Radiation Streaming Approximation (RSA) (rel. relics)For rel. relics, we get the density from substituting Θ′ur into δ′′ur termin Boltmann hierarchy.
δ′′ur + δurk2
3= −2
3h′′ +
4
3k2σ2
ur
Inside the Hubble scale, we can assume in first approximation that thedensity perturbation exceeds the shear by far.Furthermore, for a smooth particular solution, we can assume that|δ′′ur| δurk
2|.
Hence, our previous eq. simplifies to
δur = − 2
k2h′′
Notice that as h ∼ δcdm in MD era in sync. gauge, h′′ is constant andthus δur static. Using the Einstein eq. (and a few approximations forthe post RD-era), we can determine h′′ in terms of h′ and get
δur = − 4
k2(a′
ah′ − k2η)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 13 / 35
Radiation Streaming Approximation (RSA) (rel. relics)For rel. relics, we get the density from substituting Θ′ur into δ′′ur termin Boltmann hierarchy.
δ′′ur + δurk2
3= −2
3h′′ +
4
3k2σ2
ur
Inside the Hubble scale, we can assume in first approximation that thedensity perturbation exceeds the shear by far.Furthermore, for a smooth particular solution, we can assume that|δ′′ur| δurk
2|.Hence, our previous eq. simplifies to
δur = − 2
k2h′′
Notice that as h ∼ δcdm in MD era in sync. gauge, h′′ is constant andthus δur static. Using the Einstein eq. (and a few approximations forthe post RD-era), we can determine h′′ in terms of h′ and get
δur = − 4
k2(a′
ah′ − k2η)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 13 / 35
Radiation Streaming Approximation (RSA) (rel. relics)For rel. relics, we get the density from substituting Θ′ur into δ′′ur termin Boltmann hierarchy.
δ′′ur + δurk2
3= −2
3h′′ +
4
3k2σ2
ur
Inside the Hubble scale, we can assume in first approximation that thedensity perturbation exceeds the shear by far.Furthermore, for a smooth particular solution, we can assume that|δ′′ur| δurk
2|.Hence, our previous eq. simplifies to
δur = − 2
k2h′′
Notice that as h ∼ δcdm in MD era in sync. gauge, h′′ is constant andthus δur static. Using the Einstein eq. (and a few approximations forthe post RD-era), we can determine h′′ in terms of h′ and get
δur = − 4
k2(a′
ah′ − k2η)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 13 / 35
Radiation Streaming Approximation (RSA) (rel. relics)
Θur now follow simply from the exact energy-conservation eq.
δ′ur = −4
3Θur −
2
3h′
!= 0
⇒ Θur = −1
2h′
Finally, we set σur = 0.
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 14 / 35
Radiation Streaming Approximation (RSA) (photons)
For photos, we start with a similar substitution, but get an additionalterm for the non-negligible baryon-photon interactions duringreionisation:
δ′′γ + δγk2
3= −2
3h′′ +
4
3k2σ2
ur −4
3τc(Θb −Θγ)
Neglecting shear and density derivatives again, we further expand theinteraction term in τ−1
c around 0 up to first order. Using our resultfrom the ultra-rel. particles and substitution h′′ again, we get
δγ = − 4
k2
(a′
ah′ − k2η
)+
4
k2τc
(Θb +
1
2h′)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 15 / 35
Radiation Streaming Approximation (RSA) (photons)
For photos, we start with a similar substitution, but get an additionalterm for the non-negligible baryon-photon interactions duringreionisation:
δ′′γ + δγk2
3= −2
3h′′ +
4
3k2σ2
ur −4
3τc(Θb −Θγ)
Neglecting shear and density derivatives again, we further expand theinteraction term in τ−1
c around 0 up to first order. Using our resultfrom the ultra-rel. particles and substitution h′′ again, we get
δγ = − 4
k2
(a′
ah′ − k2η
)+
4
k2τc
(Θb +
1
2h′)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 15 / 35
Radiation Streaming Approximation (RSA) (photons)
Θur now follow again from the exact energy-conservation eq. andsubstitute both h′′ and the derivative of the result for δγ
⇒ Θγ = −1
2h′ − 3
4δ′γ
⇒ Θγ = −1
2h′
+3
k2τc
[−τ′c
τc
(Θb +
1
2h′)
+
(−a′
aΘb + c2
bk2δb −
a′
ah′ + k2η
)]
Finally, we set the shear to zero again i.e. σγ = 0.
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 16 / 35
Radiation Streaming Approximation (RSA) (photons)
Θur now follow again from the exact energy-conservation eq. andsubstitute both h′′ and the derivative of the result for δγ
⇒ Θγ = −1
2h′ − 3
4δ′γ
⇒ Θγ = −1
2h′
+3
k2τc
[−τ′c
τc
(Θb +
1
2h′)
+
(−a′
aΘb + c2
bk2δb −
a′
ah′ + k2η
)]
Finally, we set the shear to zero again i.e. σγ = 0.
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 16 / 35
Implementation - CLASS
Project started on request of Planck science team to have a toolindependent from CAMB (and to check for possibleBoltzmann-code-induced bias)
CLASS is an Einstein-Boltzmann code written in C (with anautomatically generated interface for python & C++)
it was designed with user-friendliness in mind, i.e. both for those ofyou who simply want to run the code as well as those who are lookinginto implementing their own model i.e.
I Modularized - clear separation of different physics (background,perturbation, lensing, etc)
I User-friendly units - ~ = kB = c = 1, dimensionful quantities have unitMpcn
I Equations follow literally notations of most famous papers
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 17 / 35
Implementation - CLASS
Project started on request of Planck science team to have a toolindependent from CAMB (and to check for possibleBoltzmann-code-induced bias)
CLASS is an Einstein-Boltzmann code written in C (with anautomatically generated interface for python & C++)
it was designed with user-friendliness in mind, i.e. both for those ofyou who simply want to run the code as well as those who are lookinginto implementing their own model i.e.
I Modularized - clear separation of different physics (background,perturbation, lensing, etc)
I User-friendly units - ~ = kB = c = 1, dimensionful quantities have unitMpcn
I Equations follow literally notations of most famous papers
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 17 / 35
Implementation - CLASS
Project started on request of Planck science team to have a toolindependent from CAMB (and to check for possibleBoltzmann-code-induced bias)
CLASS is an Einstein-Boltzmann code written in C (with anautomatically generated interface for python & C++)
it was designed with user-friendliness in mind, i.e. both for those ofyou who simply want to run the code as well as those who are lookinginto implementing their own model i.e.
I Modularized - clear separation of different physics (background,perturbation, lensing, etc)
I User-friendly units - ~ = kB = c = 1, dimensionful quantities have unitMpcn
I Equations follow literally notations of most famous papers
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 17 / 35
Implementation - CLASS
In CLASS you can calculate a wide range of quantities e.g.I CMB spectraI matter power spectraI transfer function at a given time/redshiftI matter density and lensing Cl ’sI background evolutionI thermal historyI distance-redshift relations, sound horizon
with a broad selection of models already implemented e.g.I Darm Matter (cold, warm, decaying, annihilating, interacting, ...)I Dark Energy (fluid with CLP+ sound speed, quintessence with given
V (φ))I Neutrinos (chemical potentials, arbitrary phase-space distributions,
flavormixing ...)I Primordial perturbationsI Modified Gravity (with HiCLASS version)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 18 / 35
Implementation - CLASS
In CLASS you can calculate a wide range of quantities e.g.I CMB spectraI matter power spectraI transfer function at a given time/redshiftI matter density and lensing Cl ’sI background evolutionI thermal historyI distance-redshift relations, sound horizon
with a broad selection of models already implemented e.g.I Darm Matter (cold, warm, decaying, annihilating, interacting, ...)I Dark Energy (fluid with CLP+ sound speed, quintessence with given
V (φ))I Neutrinos (chemical potentials, arbitrary phase-space distributions,
flavormixing ...)I Primordial perturbationsI Modified Gravity (with HiCLASS version)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 18 / 35
Structure of CLASS
We will have a quick look at the structure of the source code to showyou where to find everything.
in the class public-2.7.2/ folder, you should find the followingcontent:
source/ the 10 modules of CLASS - ALL THE PHYSICStools/ auxiliary numerical methods - ALL THE MATHmain/ main CLASS function (just calls modules)
output/ directory for output filesinclude/ header files containing declarations
test/ CLASS functions for testing part of the codepython/,cpp/ python/C++ wrapper of CLASSbbn/,hyrec/ data files, external codeexplanatory.ini reference input file
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 19 / 35
Structure of CLASS
We will have a quick look at the structure of the source code to showyou where to find everything.
in the class public-2.7.2/ folder, you should find the followingcontent:
source/ the 10 modules of CLASS - ALL THE PHYSICStools/ auxiliary numerical methods - ALL THE MATHmain/ main CLASS function (just calls modules)
output/ directory for output filesinclude/ header files containing declarations
test/ CLASS functions for testing part of the codepython/,cpp/ python/C++ wrapper of CLASSbbn/,hyrec/ data files, external codeexplanatory.ini reference input file
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 19 / 35
Structure of CLASS
We will have a quick look at the structure of the source code to showyou where to find everything.
in the class public-2.7.2/ folder, you should find the followingcontent:
source/ the 10 modules of CLASS - ALL THE PHYSICS
tools/ auxiliary numerical methods - ALL THE MATHmain/ main CLASS function (just calls modules)
output/ directory for output filesinclude/ header files containing declarations
test/ CLASS functions for testing part of the codepython/,cpp/ python/C++ wrapper of CLASSbbn/,hyrec/ data files, external codeexplanatory.ini reference input file
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 19 / 35
Structure of CLASS
We will have a quick look at the structure of the source code to showyou where to find everything.
in the class public-2.7.2/ folder, you should find the followingcontent:
source/ the 10 modules of CLASS - ALL THE PHYSICStools/ auxiliary numerical methods - ALL THE MATH
main/ main CLASS function (just calls modules)output/ directory for output filesinclude/ header files containing declarations
test/ CLASS functions for testing part of the codepython/,cpp/ python/C++ wrapper of CLASSbbn/,hyrec/ data files, external codeexplanatory.ini reference input file
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 19 / 35
Structure of CLASS
We will have a quick look at the structure of the source code to showyou where to find everything.
in the class public-2.7.2/ folder, you should find the followingcontent:
source/ the 10 modules of CLASS - ALL THE PHYSICStools/ auxiliary numerical methods - ALL THE MATHmain/ main CLASS function (just calls modules)
output/ directory for output filesinclude/ header files containing declarations
test/ CLASS functions for testing part of the codepython/,cpp/ python/C++ wrapper of CLASSbbn/,hyrec/ data files, external codeexplanatory.ini reference input file
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 19 / 35
Structure of CLASS
We will have a quick look at the structure of the source code to showyou where to find everything.
in the class public-2.7.2/ folder, you should find the followingcontent:
source/ the 10 modules of CLASS - ALL THE PHYSICStools/ auxiliary numerical methods - ALL THE MATHmain/ main CLASS function (just calls modules)
output/ directory for output files
include/ header files containing declarationstest/ CLASS functions for testing part of the code
python/,cpp/ python/C++ wrapper of CLASSbbn/,hyrec/ data files, external codeexplanatory.ini reference input file
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 19 / 35
Structure of CLASS
We will have a quick look at the structure of the source code to showyou where to find everything.
in the class public-2.7.2/ folder, you should find the followingcontent:
source/ the 10 modules of CLASS - ALL THE PHYSICStools/ auxiliary numerical methods - ALL THE MATHmain/ main CLASS function (just calls modules)
output/ directory for output filesinclude/ header files containing declarations
test/ CLASS functions for testing part of the codepython/,cpp/ python/C++ wrapper of CLASSbbn/,hyrec/ data files, external codeexplanatory.ini reference input file
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 19 / 35
Structure of CLASS
We will have a quick look at the structure of the source code to showyou where to find everything.
in the class public-2.7.2/ folder, you should find the followingcontent:
source/ the 10 modules of CLASS - ALL THE PHYSICStools/ auxiliary numerical methods - ALL THE MATHmain/ main CLASS function (just calls modules)
output/ directory for output filesinclude/ header files containing declarations
test/ CLASS functions for testing part of the code
python/,cpp/ python/C++ wrapper of CLASSbbn/,hyrec/ data files, external codeexplanatory.ini reference input file
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 19 / 35
Structure of CLASS
We will have a quick look at the structure of the source code to showyou where to find everything.
in the class public-2.7.2/ folder, you should find the followingcontent:
source/ the 10 modules of CLASS - ALL THE PHYSICStools/ auxiliary numerical methods - ALL THE MATHmain/ main CLASS function (just calls modules)
output/ directory for output filesinclude/ header files containing declarations
test/ CLASS functions for testing part of the codepython/,cpp/ python/C++ wrapper of CLASS
bbn/,hyrec/ data files, external codeexplanatory.ini reference input file
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 19 / 35
Structure of CLASS
We will have a quick look at the structure of the source code to showyou where to find everything.
in the class public-2.7.2/ folder, you should find the followingcontent:
source/ the 10 modules of CLASS - ALL THE PHYSICStools/ auxiliary numerical methods - ALL THE MATHmain/ main CLASS function (just calls modules)
output/ directory for output filesinclude/ header files containing declarations
test/ CLASS functions for testing part of the codepython/,cpp/ python/C++ wrapper of CLASSbbn/,hyrec/ data files, external code
explanatory.ini reference input file
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 19 / 35
Structure of CLASS
We will have a quick look at the structure of the source code to showyou where to find everything.
in the class public-2.7.2/ folder, you should find the followingcontent:
source/ the 10 modules of CLASS - ALL THE PHYSICStools/ auxiliary numerical methods - ALL THE MATHmain/ main CLASS function (just calls modules)
output/ directory for output filesinclude/ header files containing declarations
test/ CLASS functions for testing part of the codepython/,cpp/ python/C++ wrapper of CLASSbbn/,hyrec/ data files, external codeexplanatory.ini reference input file
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 19 / 35
Structure of CLASS - Source / Modules
The physics implemented in CLASS are separated into 10 modules
Each module consists of one header file, one source file and a datastructure
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 20 / 35
Structure of CLASS - Source / Modules
The physics implemented in CLASS are separated into 10 modules
Each module consists of one header file, one source file and a datastructure
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 20 / 35
Structure of CLASS - Source / Modules
The physics implemented in CLASS are separated into 10 modules
Each module consists of one header file, one source file and a datastructure
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 20 / 35
Structure of CLASS: Input Module
reads input parameters
Input parameters are “interpreted” i.e. prevents you from settingconflicting parameters e.g. only one from each of the following groupsaccepted:
H0, h, 100×Θs, Tcmb,Ωγ , ωγ, Ωncdm, ωncdm,mν, Ωur, ωur,Nur, ...
The others from each group are then inferred from the given one
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 21 / 35
Structure of CLASS: Input Module
reads input parameters
Input parameters are “interpreted” i.e. prevents you from settingconflicting parameters e.g. only one from each of the following groupsaccepted:
H0, h, 100×Θs, Tcmb,Ωγ , ωγ, Ωncdm, ωncdm,mν, Ωur, ωur,Nur, ...
The others from each group are then inferred from the given one
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 21 / 35
Structure of CLASS: Input Module
reads input parameters
Input parameters are “interpreted” i.e. prevents you from settingconflicting parameters e.g. only one from each of the following groupsaccepted:
H0, h, 100×Θs, Tcmb,Ωγ , ωγ, Ωncdm, ωncdm,mν, Ωur, ωur,Nur, ...
The others from each group are then inferred from the given one
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 21 / 35
Structure of CLASS: Background Module
Evolves the background equations (in particular, the Friedmannequation)
stores in structure background an interpolation table for allbackground quantities (e.g. ρi ,Ωi ,H) as a function of time
functions like background at tau() or background at z() recoverthese quantities interpolated for a specific conf. time or redshift resp.
also calculates and stores further useful background-related quantitiese.g. TUniv.
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 22 / 35
Structure of CLASS: Background Module
Evolves the background equations (in particular, the Friedmannequation)
stores in structure background an interpolation table for allbackground quantities (e.g. ρi ,Ωi ,H) as a function of time
functions like background at tau() or background at z() recoverthese quantities interpolated for a specific conf. time or redshift resp.
also calculates and stores further useful background-related quantitiese.g. TUniv.
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 22 / 35
Structure of CLASS: Background Module
Evolves the background equations (in particular, the Friedmannequation)
stores in structure background an interpolation table for allbackground quantities (e.g. ρi ,Ωi ,H) as a function of time
functions like background at tau() or background at z() recoverthese quantities interpolated for a specific conf. time or redshift resp.
also calculates and stores further useful background-related quantitiese.g. TUniv.
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 22 / 35
Structure of CLASS: Background Module
Evolves the background equations (in particular, the Friedmannequation)
stores in structure background an interpolation table for allbackground quantities (e.g. ρi ,Ωi ,H) as a function of time
functions like background at tau() or background at z() recoverthese quantities interpolated for a specific conf. time or redshift resp.
also calculates and stores further useful background-related quantitiese.g. TUniv.
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 22 / 35
Structure of CLASS: Thermodynamics Module
Solves for the thermodynamical evolution with RECFAST and HyRec
with corrections for reionisation
BBN data (YHe) separately calculated by code Parthenope and theninterpolated from table
stores in structure thermo an interpolation table for allthermodynamical quantities (e.g. xe , τd , dκ/dτ , Tb,c2
b) as a functionof redshift
also calculates and stores further useful background-related quantitiese.g. various quantities at recombination (zrec, rsrec,...)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 23 / 35
Structure of CLASS: Thermodynamics Module
Solves for the thermodynamical evolution with RECFAST and HyRec
with corrections for reionisation
BBN data (YHe) separately calculated by code Parthenope and theninterpolated from table
stores in structure thermo an interpolation table for allthermodynamical quantities (e.g. xe , τd , dκ/dτ , Tb,c2
b) as a functionof redshift
also calculates and stores further useful background-related quantitiese.g. various quantities at recombination (zrec, rsrec,...)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 23 / 35
Structure of CLASS: Thermodynamics Module
Solves for the thermodynamical evolution with RECFAST and HyRec
with corrections for reionisation
BBN data (YHe) separately calculated by code Parthenope and theninterpolated from table
stores in structure thermo an interpolation table for allthermodynamical quantities (e.g. xe , τd , dκ/dτ , Tb,c2
b) as a functionof redshift
also calculates and stores further useful background-related quantitiese.g. various quantities at recombination (zrec, rsrec,...)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 23 / 35
Structure of CLASS: Thermodynamics Module
Solves for the thermodynamical evolution with RECFAST and HyRec
with corrections for reionisation
BBN data (YHe) separately calculated by code Parthenope and theninterpolated from table
stores in structure thermo an interpolation table for allthermodynamical quantities (e.g. xe , τd , dκ/dτ , Tb,c2
b) as a functionof redshift
also calculates and stores further useful background-related quantitiese.g. various quantities at recombination (zrec, rsrec,...)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 23 / 35
Structure of CLASS: Perturbation Module
Solves solves the evolution of all perturbations (→Einstein-Boltzmann eq.)
Stores the source functions S(k , τ) in structure perturbs:I sources for CMB temperatureI sources for CMB polarisationI metric perturbations and derivatives (used e.g. for lensing)I density perturbations of all components δiI velocity perturbations of all components Θi
When perturbations are integrated, interpolated quantities fromthermodynamics and background are used
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 24 / 35
Structure of CLASS: Perturbation Module
Solves solves the evolution of all perturbations (→Einstein-Boltzmann eq.)
Stores the source functions S(k , τ) in structure perturbs:I sources for CMB temperatureI sources for CMB polarisationI metric perturbations and derivatives (used e.g. for lensing)I density perturbations of all components δiI velocity perturbations of all components Θi
When perturbations are integrated, interpolated quantities fromthermodynamics and background are used
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 24 / 35
Structure of CLASS: Perturbation Module
Solves solves the evolution of all perturbations (→Einstein-Boltzmann eq.)
Stores the source functions S(k , τ) in structure perturbs:I sources for CMB temperatureI sources for CMB polarisationI metric perturbations and derivatives (used e.g. for lensing)I density perturbations of all components δiI velocity perturbations of all components Θi
When perturbations are integrated, interpolated quantities fromthermodynamics and background are used
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 24 / 35
Structure of CLASS: Primordial Module
Computes the primordial power spectra (for each mode and initialcondition) and stores them in its structure primordial.
a number of different ways to infer the primordial power spectrum ofperturbations:
I Analytic parametrisationI Taylor expansion of inflationary potential V (φ− φ∗) or H(φ− φ∗)I Parametrisation of V (φ)I Import spectra from external code
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 25 / 35
Structure of CLASS: Primordial Module
Computes the primordial power spectra (for each mode and initialcondition) and stores them in its structure primordial.
a number of different ways to infer the primordial power spectrum ofperturbations:
I Analytic parametrisationI Taylor expansion of inflationary potential V (φ− φ∗) or H(φ− φ∗)I Parametrisation of V (φ)I Import spectra from external code
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 25 / 35
Structure of CLASS: Nonlinear Module
contains HALOFIT, Time Renormalization Group (TRG), 1-loopperturb.theory
computes factors RNL = δNLm
δLmto correct source functions S(k , τ) for
non-linear contributions (see more on Monday)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 26 / 35
Structure of CLASS: Nonlinear Module
contains HALOFIT, Time Renormalization Group (TRG), 1-loopperturb.theory
computes factors RNL = δNLm
δLmto correct source functions S(k , τ) for
non-linear contributions (see more on Monday)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 26 / 35
Structure of CLASS: Transfer Module
computes harmonic transfer functions
∆Xl =
∫dτSX (k(q), τ)φXl (q, (τ0 − τ))
for each mode l , initial conditions and several types of sourcefunctions
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 27 / 35
Structure of CLASS: Transfer Module
computes harmonic transfer functions
∆Xl =
∫dτSX (k(q), τ)φXl (q, (τ0 − τ))
for each mode l , initial conditions and several types of sourcefunctions
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 27 / 35
Structure of CLASS: Spectra Module
Computes observable power spectra out of source functions,transferfunctions:
I Linear matter power spectra
P(k , z) = (δm(k , τ(z)))2P(‖)
I Angular power spectra
CXYl = 4π
∫dk
k∆X
l (k)∆Yl (k)P(k)
withXY ∈ TT ,TE ,EE ,BB,PP,TP, ...
and stores them in its structure spectra.
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 28 / 35
Structure of CLASS: Lensing Module
uses unlensed CMB spectra CTT ,TE ,EE ,BBl and the spectrum of the
lensing potential CPPl to compute the lensed spectra CTT ,TE ,EE ,BB
l
follows all-sky method [Challinor & Lewis]
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 29 / 35
Structure of CLASS: Lensing Module
uses unlensed CMB spectra CTT ,TE ,EE ,BBl and the spectrum of the
lensing potential CPPl to compute the lensed spectra CTT ,TE ,EE ,BB
l
follows all-sky method [Challinor & Lewis]
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 29 / 35
Structure of CLASS: Output Module
writes requested output files
uses external interpolation functions of other modules (→ same datacan also be obtained by directly calling these functions e.g. fromanother C program)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 30 / 35
Structure of CLASS: Output Module
writes requested output files
uses external interpolation functions of other modules (→ same datacan also be obtained by directly calling these functions e.g. fromanother C program)
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 30 / 35
Python Wrapper: classy
CLASS installs a python module called ’classy’
all its functionality is included in a class called Class
a typical execution of a computation in Python looks like this
from classy import Class
import numpy as np
import matplotlib.pyplot as pltcosmo = Class()
cosmo.set(’output ’:’tCl ,pCl ,lCl ’,’lensing ’:’yes
’,’modes ’:’s,t’,’r’: ’0.2’)
cosmo.compute ()
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 31 / 35
Python Wrapper: classy
CLASS installs a python module called ’classy’
all its functionality is included in a class called Class
a typical execution of a computation in Python looks like this
from classy import Class
import numpy as np
import matplotlib.pyplot as pltcosmo = Class()
cosmo.set(’output ’:’tCl ,pCl ,lCl ’,’lensing ’:’yes
’,’modes ’:’s,t’,’r’: ’0.2’)
cosmo.compute ()
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 31 / 35
Python Wrapper: classy
many of the module structures and their data can be obtained bymethods of that Class class:
get background()
get thermodynamics()
get primordial()
get perturbations()
get transfer(z,format)
besides this many more small,useful functions likeraw cl(),pk(k,z),etc.
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 32 / 35
Python Wrapper: classy
many of the module structures and their data can be obtained bymethods of that Class class:
get background()
get thermodynamics()
get primordial()
get perturbations()
get transfer(z,format)
besides this many more small,useful functions likeraw cl(),pk(k,z),etc.
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 32 / 35
Modifying CLASS
Thanks to the clear structure introduced earlier and the fact thatimplemented equations are following most commonly used forms, it isrelatively easy to implement own models.
I will try to outline this process with an example from my ownresearch interests, namely adding DM-ν interactions
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 33 / 35
Modifying CLASS
Thanks to the clear structure introduced earlier and the fact thatimplemented equations are following most commonly used forms, it isrelatively easy to implement own models.
I will try to outline this process with an example from my ownresearch interests, namely adding DM-ν interactions
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 33 / 35
Modifying CLASS
Thanks to the clear structure introduced earlier and the fact thatimplemented equations are following most commonly used forms, it isrelatively easy to implement own models.
I will try to outline this process with an example from my ownresearch interests, namely adding DM-ν interactions
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 33 / 35
Example: Interacting DM
Let’s assume that a (weak) interaction exists between DM and(cosmic) neutrinos. The modified Boltzmann/Euler equations canthen be written (in Newtonian gauge) as
where µ = aσDM−νcnDM is the interaction rate and S = 34ρDMρν
is afactor to ensure energy conservation.
Requires the following few modifications to CLASS1 have to modify input module to read new parameter i.e. cross-section
u nudm2 modify thermodynamics module to calculate interaction rate and its
derivatives and store it in structure (requires adding new fields to pth
in header)3 in perturbation module, simply add interaction contributions to
ΘCDM/ν as well as to higher mode terms in the Boltzmann hierarchy
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 34 / 35
Example: Interacting DM
Let’s assume that a (weak) interaction exists between DM and(cosmic) neutrinos. The modified Boltzmann/Euler equations canthen be written (in Newtonian gauge) as
where µ = aσDM−νcnDM is the interaction rate and S = 34ρDMρν
is afactor to ensure energy conservation.
Requires the following few modifications to CLASS
1 have to modify input module to read new parameter i.e. cross-sectionu nudm
2 modify thermodynamics module to calculate interaction rate and itsderivatives and store it in structure (requires adding new fields to pth
in header)3 in perturbation module, simply add interaction contributions to
ΘCDM/ν as well as to higher mode terms in the Boltzmann hierarchy
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 34 / 35
Example: Interacting DM
Let’s assume that a (weak) interaction exists between DM and(cosmic) neutrinos. The modified Boltzmann/Euler equations canthen be written (in Newtonian gauge) as
where µ = aσDM−νcnDM is the interaction rate and S = 34ρDMρν
is afactor to ensure energy conservation.
Requires the following few modifications to CLASS1 have to modify input module to read new parameter i.e. cross-section
u nudm
2 modify thermodynamics module to calculate interaction rate and itsderivatives and store it in structure (requires adding new fields to pth
in header)3 in perturbation module, simply add interaction contributions to
ΘCDM/ν as well as to higher mode terms in the Boltzmann hierarchy
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 34 / 35
Example: Interacting DM
Let’s assume that a (weak) interaction exists between DM and(cosmic) neutrinos. The modified Boltzmann/Euler equations canthen be written (in Newtonian gauge) as
where µ = aσDM−νcnDM is the interaction rate and S = 34ρDMρν
is afactor to ensure energy conservation.
Requires the following few modifications to CLASS1 have to modify input module to read new parameter i.e. cross-section
u nudm2 modify thermodynamics module to calculate interaction rate and its
derivatives and store it in structure (requires adding new fields to pth
in header)
3 in perturbation module, simply add interaction contributions toΘCDM/ν as well as to higher mode terms in the Boltzmann hierarchy
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 34 / 35
Example: Interacting DM
Let’s assume that a (weak) interaction exists between DM and(cosmic) neutrinos. The modified Boltzmann/Euler equations canthen be written (in Newtonian gauge) as
where µ = aσDM−νcnDM is the interaction rate and S = 34ρDMρν
is afactor to ensure energy conservation.
Requires the following few modifications to CLASS1 have to modify input module to read new parameter i.e. cross-section
u nudm2 modify thermodynamics module to calculate interaction rate and its
derivatives and store it in structure (requires adding new fields to pth
in header)3 in perturbation module, simply add interaction contributions to
ΘCDM/ν as well as to higher mode terms in the Boltzmann hierarchy
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 34 / 35
Web-/Bibliography
http://class-code.net - you can find here links to the CLASS
publications describing all of the methods outlined here aswell as additional lectures on how to use CLASS
JAS (ICG, Portsmouth) Linear Theory: Solving the Boltzmann Equations July 27, 2019 35 / 35
top related