Files
Latest commit
fortran
Folders and files
Name | Name | Last commit date | ||
---|---|---|---|---|
parent directory.. | ||||
<HTML> <HEAD> <TITLE>CAMB Fortran ReadMe</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#800080"> <style> body { margin-top: 20px; margin-left: 25px; margin-right: 25px; } p,li,td,tr,table,body {line-height: 1.5em; font-size:1em; font-family: Arial, Helvetica, sans-serif} </style> <CENTER> <H2>Fortran CAMB ReadMe</H2> <A HREF="#compiling">Compiling</A> | <A HREF="#inputs">Inputs</A> | <A HREF="#outputs">Outputs</A>| <A HREF="#coding">Customization</A> | <A HREF="#ACCURACY">Accuracy</A> | <A HREF="#version">Change log</A> | <A HREF="#adds">Add-ons</A> | <A HREF="#refs">References</A> </CENTER> <hr> CAMB is a Python and Fortran code for computing CMB, CMB lensing, lensing, galaxy count and dark-age 21cm power spectra, transfer functions and matter power spectra, and background cosmological functions. For latest information on this program see <A HREF="http://camb.info">camb.info</A>. <p> Often it is easiest and most flexible to just use the <A HREF="https://camb.readthedocs.io/en/latest">Python version</A>, which includes a command-line "camb" script. This readme instead focuses on using the compiled binary Fortran command-line version. CAMB can also be used as part of the <A HREF="http://cosmologist.info/cosmomc/">CosmoMC</A> and <a href="https://cobaya.readthedocs.io/en/latest/">Cobaya</a> parameter estimation packages. <P> <P> <FONT SIZE=-1> Code for Anisotropies in the Microwave Background by <A HREF="http://cosmologist.info/">Antony Lewis</A> and Anthony Challinor. <br> Originally based on CMBFAST developed by Uros Seljak and Matias Zaldarriaga, itself based on Boltzmann code written by Edmund Bertschinger, Chung-Pei Ma and Paul Bode. </FONT> </p> <A NAME="compiling"> <B>Compiling and running</B> </P> To install and compile yourself you will need a Fortran 2008 (or higher) compiler - you can get the free <A HREF="https://gcc.gnu.org/wiki/GFortranBinaries">gfortran</A> compiler (version 6 or higher), or the optimized Intel compiler <em>ifort</em> is installed on many academic clusters and also supports integrated development and debugging in Visual Studio under Windows. Alternatively you can use CAMB in the pre-configured <A HREF="https://cosmologist.info/CosmoBox">CosmoBox</A> virtual machine. <P> To install the Fortran binary from the command line: <UL> <LI><A HREF="https://camb.info/CAMBsubmit.html">Download</A> CAMB <li>If cloning using git, add <b>--recurse-submodules</b> to get the forutils submodule as well</li> <LI>If downloading unzip the file (<B>tar xfv filename </B> for tar.gz); all files will be extracted to a directory called "CAMB-xxx". Note you need <a href="https://github.com/cmbant/forutils">forutils</a> library in the forutils directory. <LI>Change to the fortran directory (<b>cd fortran</b>)</LI> <LI>Run <B>make</B> to compile everything you will need. (you may need to edit the supplied Makefile, see below) <LI>Run <B>./camb ../inifiles/params.ini</B>, where params.ini is a file of parameter values (sample supplied). The params.ini file should be fairly self-explanatory. The Fortran program should be run from the fortran directory (in order find the .dat template file that it loads). <LI>To install and use the Python CAMB wrapper see the <A HREF="https://camb.readthedocs.io/en/latest">Python CAMB</A> documentation. After in installing with pip this also has a command-line camb script that will be built automatically with the python version - no need to compile the fortran code directly, and it can be run from any directory. </UL> </P> <P> The Makefile comes set up for gfortran and ifort compilers. Edit the relevant parts of the Makefile to compile on other systems. If you have Intel's Visual Fortran you can use the projects in the VisualStudio folder, no need to use the Makefile. To run on multi-processor machines add the -openmp (or equivalent) option to the Makefile's FFLAGS parameter to compile a parallelized (OPENMP) version. </P> <P> For a demo of how to use CAMB with the python wrapper see the <A HREF="https://camb.readthedocs.io/en/latest/CAMBdemo.html">demo notebook</A>. For some further technical details about the algorithms, equations and code see the <A HREF="https://cosmologist.info/notes/CAMB.pdf">CAMB notes</A>. </P> <A NAME="inputs"> <H3>Input parameters</H3> <P> The params.ini file specifies the parameters used to run the program. Comments in params.ini should make this fairly self-explanatory, more complicated cases, for example to run with multiple neutrino mass eigenstates and sterile neutrinos at different temperatures see the documentation and examples in the <A HREF="https://cosmologist.info/notes/CAMB.pdf">CAMB notes</A>. To produce the matter power spectrum in addition to CMB C<sub>l</sub> set <b>get_transfer = T</b>; the <b>do_nonlinear</b> input parameter determines whether this is output as the linear power spectrum or includes non-linear corrections from the Halofit model. <P> The default params.ini file produces results in μK<sup>2</sup> from the given primordial curvature perturbation power (<B>scalar_amp</B>) on 0.05 MPc<sup>-1</sup> scales. To get unnormalized dimensionless results set <B>scalar_amp=1</B> and <B>CMB_outputscale=1</B>. To compute lensed C<sub>l</sub>s you must set the normalization to some realistic value (the calculation is non-linear, so normalization matters). <P> <A NAME="outputs"> <H3>Outputs</H3> Unlensed scalar angular power spectra are output to <b>output_root</b>_scalCls.dat. The columns are <BLOCKQUOTE> l C<sub>TT</sub> C<sub>EE</sub> C<sub>TE</sub> [C<sub>Φ</sub> C<sub>ΦT</sub>] </BLOCKQUOTE> Here all C<sub>X</sub> are l(l+1)C_l/2pi except for C<sub>Φ</sub> and C<sub>ΦT</sub> which are C<sub>Φ</sub>= l<sup>4</sup> C<sub>l</sub><sup>Φ</sup>, where C<sub>l</sub><sup>Φ</sup> is the (CMB) lensing potential power spectrum, and C<sub>ΦT</sub> = l<sup>3</sup> C<sub>l</sub><sup>ΦT</sup>. The lensing terms in square brackets are only produced if <b>do_lensing = T</b>. If <b>CMB_outputscale = 7.4311e12</B> ([T<sub>CMB</sub>10<sup>6</sup>]<sup>2</sup>, the default), the units are μK<sup>2</sup>. Note that lensing spectra are also multiplied by CMB_outputscale, so you may want to divide this out of the answer to get a sensible dimensionless spectrum or use the <b>lens_potential_output_file</b> file mentioned below. If requested the lensed power spectrum is output to <b>output_root</b>_lensedCls.dat <P> Tensor angular power spectra are output to <b>output_root</b>_tensCls.dat if requested. The columns are <BLOCKQUOTE> l C<sub>TT</sub> C<sub>EE</sub> C<sub>BB</sub> C<sub>TE</sub> </BLOCKQUOTE> If scalars and tensors are generated, the total spectrum is in <b>output_root</b>_totCls.dat, in the same format as the tensor output file. <P> If <b>do_lensing=T</b> and <b>lens_potential_output_file</b> is specified a file is output containing unlensed scalar (+tensor if calculated) spectra along with the lensing potentials in this format: <BLOCKQUOTE> l C<sub>TT</sub> C<sub>EE</sub> C<sub>BB</sub> C<sub>TE</sub> C<sub>dd</sub> C<sub>dT</sub> C<sub>dE</sub> </BLOCKQUOTE> where as before C<sub>X</sub> are l(l+1)C<sub>l</sub>/2π, and d is the deflection angle, so C<sub>dd</sub>=[l(l+1)]<sup>2</sup>C<sub>l</sub><sup>Φ</sup>/2π, C<sub>dT</sub>=[l(l+1)]<sup>3/2</sup>C<sub>l</sub><sup>ΦT</sup>/2π, C<sub>dE</sub>=[l(l+1)]<sup>3/2</sup>C<sub>l</sub><sup>ΦE</sup>/2π. These are the spectra required for simulating lensed skies using <A HREF="https://cosmologist.info/lenspix">LensPix</A>. <P> <A NAME="transfer"></A> If transfer functions are requested the columns in the <b>output_root</b>_transfer.dat output file are: <p> <table border="1" cellpadding="2"> <tr><td>1 </td><td> k/h </td><td> wavenumber in h Mpc<sup>-1</sup> </td></tr> <tr><td>2 </td><td> Delta_CDM/k<sup>2</sup> </td><td> CDM </td></tr> <tr><td>3 </td><td> Delta_b/k<sup>2</sup> </td><td> baryons </td></tr> <tr><td>4 </td><td> Delta_g/k<sup>2</sup> </td><td> photons </td></tr> <tr><td>5 </td><td> Delta_r/k<sup>2</sup> </td><td> massless neutrinos </td></tr> <tr><td>6 </td><td> Delta_nu/k<sup>2</sup> </td><td> massive neutrinos </td></tr> <tr><td>7 </td><td> Delta_tot/k<sup>2</sup> </td><td> CDM+baryons+massive neutrinos </td></tr> <tr><td>8 </td><td> Delta_nonu/k<sup>2</sup> </td><td> CDM+baryons </td></tr> <tr><td>9 </td><td> Delta_totde/k<sup>2</sup> </td><td> CDM+baryons+massive neutrinos+ dark energy(numerator only)</td></tr> <tr><td>10 </td><td> Φ </td><td> The Weyl potential (φ+ψ)/2 </td></tr> <tr><td>11 </td><td> vel_Newt_cdm/k<sup>2</sup> </td><td>vel_Newt_cdm is -v<sub>cdm</sub> k/H (Newtonian-gauge CDM velocity v<sub>cdm</sub>) </td></tr> <tr><td>12 </td><td> vel_Newt_b/k<sup>2</sup> </td><td> vel_Newt_b is -v<sub>b</sub> k/H (Newtonian-gauge baryon velocity v<sub>b</sub>) </td></tr> <tr><td>13 </td><td> vel_baryon_cdm/k<sup>2</sup> </td><td> relative baryon-CDM velocity (v<sub>b</sub>-v<sub>cdm</sub>) </td></tr> </table> <br> where Delta_X is defined as (delta rho_X)/rho_X in the synchronous gauge and evaluated at the requested redshift, given a unit primordial curvature perturbation on superhorizon scales (for adiabatic modes, chi_0=-1). The column numbers correspond to the Transfer_xx integer constants defined in the Transfer module (results.f90). <p> <b>output_root</b>_matterpower.dat contains the conventionally normalized matter power spectrum (for baryons+cdm+massive neutrinos), in h/Mpc units. <P> <A NAME="coding"> <H3>Compilation options and code modifications</H3> <P> The Makefile should work out of the box in most cases for ifort and gfortran. If you define your own new classes, or want to compile with <A HREF="http://www.jb.man.ac.uk/~jchluba/Science/CosmoRec/CosmoRec.html">CosmoRec</A> or <A HREF="https://github.com/nanoomlee/HYREC-2">HyRec</A> recombination support, you can edit the file list variables at the top of Makefile_main. You can also use e.g. <B>make RECOMBINATION_FILES="recfast cosmorec"</b> to override the default and compile with additional files. REIONIZATION is by default a simple relatively fast single-step reionization model (following <A HREF="http://arxiv.org/abs/0804.3865">arXiv:0804.3865</A>), but you could add alternative models by implementing other derived classes. </P> <P> It's rarely needed, but you can power spectrum produce files in <A HREF="http://heasarc.gsfc.nasa.gov/docs/software/fitsio/fitsio.html">FITS</A> format - to do this you will need to have <A HREF="http://www.eso.org/science/healpix/">HEALPIX</A> installed and make some edits to the Makefile - see the Makefile for details. After compiling with <B>make camb_fits</B>, you can then use <B>camb_fits</B> instead of <B>camb</B> - the FITS file produced is given the name specified in params.ini. Note that the FITS file format for polarization changed with HEALPIX 1.2, CAMB uses the new format. </P> <P> All the equations that need to be modified for simple non-standard models are in the equations.f90 file, or an in separate classes like the dark energy model. <P> After modifying any of the source code run <B>make clean</B> before running <B>make</B> to recompile (Visual Fortran will re-compile dependent code automatically). Run <B>make all</B> to build a library libcamb.a that you can use when linking to other programs. (You will also need to include the module files using -I/cambfolder). <P> See the <a href="https://camb.info/doc/classes/_index.html">class hierarchy</a> for how the different components of the calculation are structured. Some details about what different source code files do are given <A HREF="#FILES">below</A>, see also the <A HREF="https://cosmologist.info/notes/CAMB.pdf">CAMB notes</A>. <P> A test suite is included, and will run automatically on GitHub when committing or making pull requests on the <A HREF="https://github.com/cmbant/CAMB">GitHub repository</A>. Python unit tests are in the camb.tests, and scripts for comparing outputs for a variety of models are in the fortran/tests directory. <A NAME="FILES"> <H3>The source files</H3> <P> See the <a href="https://camb.info/doc/">auto-generated source documentation</a>, and a few details below: <BLOCKQUOTE> <B>camb.f90</B> <P> Main wrapper routines for running CAMB in your fortran programs. Add "use camb" to your programs and call CAMB_GetResults to generate output from a set of model parameters (specified in the CAMBparams type - defined in model.f90). You can call CAMB_ValidateParams(P) to check that the parameter set is valid, use CAMB_GetAge to compute the age of a model in gigayears, and CAMB_GetCls to retrieve the computed Cls. <P> Sample programs tester.f90 and sigma8.f90 are supplied showing how to use CAMB from your own programs. You can also use CAMB_GetTransfers to access the C_l transfer functions directly without incorporating the initial power spectrum. In addition this module provides the routines to read settings from a .ini file. </P> <B>cmbmain.f90</B> <P> The main subroutine that does integrations, etc. <P> <B>equations.f90</B> <P> Files containing background and perturbation evolution equations. The perturbations equations used are derived in the covariant approach, fixing to the CDM (zero acceleration) frame, which are essentially equivalent to the synchronous gauge equations. <P> The file defines a module called "GaugeInterface" which provides the necessary perturbation calculation routines for "cmbmain". <P> The subroutine dtauda(a) returns dt/da and is used wherever the background evolution is needed. It can be modified for different backgrounds. If you add additional components, and can edit the init_background routine to do additional initialization. <P> outtransf writes out the matter transfer functions. <P> The "output" subroutine computes the scalar sources at a given time for a given wavenumber. These are the temperature, E polarization and (if doing lensing) the lensing source. By editing the equation for the lensing source it should be straightforward to compute power spectra for other matter tracers, e.g. for cross-correlation with the CMB. The lensing power spectrum is automatically computed if <B>DoLensing=T</B>. <P> <B> InitialPower.f90</B> <P> This file defines a module called InitialPower with classes returning the initial power spectra. Comments in the code explain this further. <P> <P> <B> reionization.f90</B> <P> This file defines a module called Reionization that provides a class implementing a tanh-parameterization of the reionization history. The class gives x<sub>e</sub> as a function of redshift. Optical depth input parameters are mapped into z<sub>re</sub> (defined as where x<sub>e</sub> is half its maximum (ex second He reionization)) using a binary search. See the CAMB <A HREF="http://cosmologist.info/notes/CAMB.pdf">notes</A> for discussion. This module should be easily modifiable for alternative reionization models. <P> <B>halofit.f90</B><P> Implements the NonLinearModel class, to calculate non-linear scalings of the matter power spectrum as a function of redshift. Uses HALOFIT (<A HREF="https://arxiv.org/abs/astro-ph/0207664">astro-ph/0207664</A>, code thanks to <A HREF="https://profiles.sussex.ac.uk/p330705-robert-e-smith">Robert Smith</A>, with tweaks from <A HREF="https://arxiv.org/abs/1208.2701">arXiv:1208.2701</A> (thanks Ryuichi Takahashi) - see that paper for discussion of numerical accuracy. This module can be replaced to use a different non-linear fitting method if desired. <P> <B> inidriver.f90</B> <P> Reads in parameters from a file of name/value pairs and calls CAMB. <P> <B>model.f90</B> <P> Defined CAMBparams input parameter types. <P> <P> <B>results.f90</B> <P> Defines types used by calculated intermediate results (e.g. time interpolation tables), and outputs like CAMBdata and transfer functions <P> <B>bessels.f90</B> <P> Module to calculate spherical and hyper-spherical Bessel functions. Hyper-spherical functions generated by use of either the recursion relation or Kosowsky's WKB approximation. Based on Arthur Kosowsky's "hyperjl.c". <P> <B>lensing.f90</B> <P> Lensing module for computing the lensed CMB power spectra from the unlensed spectra and a lensing power spectrum. See <A HREF="http://arxiv.org/abs/astro-ph/0502425">astro-ph/0502425</A>. </P> <B> subroutines.f90</B> <P> Various subroutines for interpolation, and modified Runge-Kutta dverk for parallelized evolution. <P> <B> writefits.f90</B> <P> Subroutine WriteFitsCls that uses HEALPIX routines to output power spectrum in FITS format. Not usually used (also not tested regularly). <P> <B>recfast.f90</B> <P> RECFAST integrator for Cosmic Recombination of Hydrogen and Helium by Douglas Scott (with minor modifications for CMBFAST and the CAMB). See <A HREF="http://www.astro.ubc.ca/people/scott/recfast.html">RECFAST</A> for the original code. This module implements the TRecombinationModel class required by CAMB. Sample wrappers are also provided for <A HREF="http://www.jb.man.ac.uk/~jchluba/Science/CosmoRec/CosmoRec.html">CosmoRec</A> and <A HREF="https://github.com/nanoomlee/HYREC-2">HyRec</A>, but the libraries for these must be installed separately. <P> <B>SeparableBispectrum.f90</B> <P> Implements calculation of simple separable primordial bispectra, specifically the local constant f<sub>NL</sub> model, and the CMB lensing bispectrum due to the linear temperature and polarization cross-correlation with the lensing potential. Compile with FISHER defined in the makefile to also calculate Fisher elements, including the effects of lensing signal variance (edit Makefile to link to LAPACK if necessary). Note that the primordial bispectra here are unlensed (see <A HREF="http://arxiv.org/abs/0905.4732">arXiv:0905.4732</a> for a calculation), but the lensed bispectra are calculated non-perturbatively (but approximately) using the lensed small-scale CMB power spectra. Note that calculating primordial bispectra is significantly slower than doing standard power spectrum calculations, however it parallelizes well. <P> <B>camb_python.f90</B> <P> Interface functions for the python wrapper. <P> </BLOCKQUOTE> <P> <A NAME="ACCURACY"> <H3>Accuracy</H3> <P> <BLOCKQUOTE> Scalar numerical errors should rarely exceed 0.3% and 0.1% for 500<L<3000. Matter power spectrum errors are usually dominated by interpolation in the acoustic oscillations, with about 0.2% accuracy (but much better rms accuracy). For a detailed study of numerical accuracy as of January 2012 see <A HREF="http://arxiv.org/abs/1201.3654">arXiv:1201.3654</A>. <p> </p> Accuracy of course assumes the model is correct, and is dependent on RECFAST being the correct ionization history. Lensed C_l TT, TE and EE are accurate at the same level (to within the approximation that the lensing potential is linear, or the accuracy of the HALOFIT non-linear model). <P> Extreme models (e.g. scale > 4, h>1) may give errors of 5% or more. <P> Tensor errors around 2% or more on small scales (e.g. due to l-interpolation). Low l accuracy somewhat worse than scalars (typically < 1%). Turn on neutrinos in the input file for accurate results (automatic on high accuracy setting). <P> Hierarchy truncation errors up to 5% at high l (>1500) in some closed models <P> You can improve or check accuracy (or increase speed) by changing global accuracy parameters at the bottom of the params.ini input file. Convergence and stability can be checked using the test suite, and accuracy parameters can also be changed from the python version. <P> </BLOCKQUOTE> <P> <A NAME="version"> <H3>Version history</H3> <B>1.x + :</B> See <a href="https://github.com/cmbant/CAMB/releases">GitHub Release</a> history<BR> <p> </p> <B>1.0: January 2019</B><BR> <ul> <li>Integrated CAMB and CAMB sources, for CMB, CMB lensing, lensing convergence, number counts and 21cm. </li> <li>Fortran 2003 Object-oriented code restructuring; fortran code structure now closer to the python (see <a href="https://camb.info/doc/classes/_index.html">class trees</a>).</li> <li>Changed CAMBparam parameters to be physical density parameters ombh2, omch3, omnuh2 (+omk)</li> <li>Modest speed improvement from using higher order series solutions for background neutrino density combined with linear rather than log spline.</li> <li>Uses splined a(t) for perturbation evolution rather than evolving for each perturbation mode; tensor spectrum results now much faster</li> <li>More accurate background calculations with partial parallelism</li> <li>Finer every-L sampling at L=11-15 (small change in EE). Updated c_l interpolation template.</li> <li>min_l and custom source functions now set as parts of CAMBparams</li> <li>Account for radiation when setting dark energy density from matter densities and omk</li> <li>Smoother default reionization history parameters around helium second reionization</li> <li>Use matter temperature evolution from recfast (still harmlessly wrong - as before - from reionization onwards)</li> <li>scalarCovCls.dat and _array outputs for lensing potential now deflection angle</li> <li>Fix for auto-kmax when using lensing from command line</li> <li>Halofit default updated to HMcode to match Planck 2018 analysis</li> <li>Dark Energy, InitialPower, NonLinearModel, ReionizationModel and RecombinationModel are now all classes that can be switched dynamically. General spline fit implementation for the initial power spectrum and lensing/count source distributions.</li> <li>SplinedInitialPower and SplinedSourceWindow implementations for general interpolated initial power spectra and source window functions</li> <li>Added TAxionEffectiveFluid example specific dark energy class implementation</li> <li>high_accuracy_default option removed (is now the default).</li> <li>Git repository now uses submodule for <a href="https://github.com/cmbant/forutils">forutils</a></li> <LI><A HREF="https://camb.readthedocs.io/">Python CAMB</A>: <ul> <li>CAMB is now packaged as a Python-focused module, but fortran directory still has support for fortran executable as before.</li> <li>Lensing convergence, number counts and 21cm now available from Python</li> <li>SplinedSourceWindow and GaussianWindow for setting SourceWindows array (see example notebook)</li> <li>Reworked python-fortran interface using metaclass and decorators, supporting allocatable arrays and class instances and directly import and call of fortran class methods</li> <li>Support multiple CAMBdata instances, and results object can be called safely in any order (removing most global variables)</li> <li>Dark Energy, InitialPower, NonLinearModel, ReionizationModel and RecombinationModel classes that can be dynamically assigned to CAMBparam class member elements</li> <li><a href="https://camb.readthedocs.io/en/latest/model.html#camb.model.CAMBparams.set_initial_power_function">set_initial_power_function</a> and <a href="https://camb.readthedocs.io/en/latest/model.html#camb.model.CAMBparams.set_initial_power_table">set_initial_power_table</a> to set initial power spectra from arbitrary python function or sampled arrays</li> <li>set_cosmology() now supports more general exact thetastar as well as H0 and cosmomc_theta. No H0 default.</li> <li>CAMBParams read-only properties for omegam, N_eff, omegab, omegac, omaganu, h</li> <li>T_CMB changes handled consistently</li> <li>camb.set_params supports options for changing dark energy, initial power and non-linear model classes</li> <li>camb.set_params can set CAMBparam members if not already used as an argument (and things like InitPower.ns via an input string)</li> <li>Fields support named enumerations, name-length fields for arrays, fortran-compatible boolean and help</li> <li>Docs include help for field values (auto-generated via metaclass)</li> <li>Faster and array versions of various background functions</li> <li>SecondOrderPK non-linear model class</li> <li>Optional support for CosmoRec and HyRec RecombinationModel classes (need to compile with them linked)</li> <li>Updated BBN model default to Parthenope 2017 as Planck 2018 analysis</li> </ul> </ul> <B>August 2018</B><BR> <ul> <li>Option to use HMCode 2015 version (thanks Alex Mead)</li> <li><b>accurate_massive_neutrino_transfers</b> option if accurate neutrino transfer functions needed at late time</li> <li>Output text file precision increased</li> <li>Warning if accurate_BB=T but other options not set sensibly for accurate lensing BB</li> <LI><A HREF="https://camb.readthedocs.io/en/latest">Python CAMB wrapper</A>: <ul> <li>On linux system now builds with ifort if available (~35% faster)</li> <li>More efficient and new vector support for <a href="https://camb.readthedocs.io/en/latest/camb.html?highlight=angular_diameter_distance#camb.CAMBdata.angular_diameter_distance">angular_diameter_distance</a> and related background functions </li> <li><a href="https://camb.readthedocs.io/en/latest/bbn.html">bbn module</a> generalisation to allow more general table interpolation and vector arguments; added <a href="http://www2.iap.fr/users/pitrou/primat.htm">PRIMAT table</a> (thanks Cyril Pitrou)</li> <li>Improvements for default settings in various cases</li> <li><a href="https://camb.readthedocs.io/en/latest/camb.html?highlight=get_background_time_evolution#camb.CAMBdata.get_background_time_evolution">get_background_time_evolution</a> can now get T_b, the baryon temperature</li> <li><a href="https://camb.readthedocs.io/en/latest/camb.html?highlight=save_cmb_power_spectra#camb.CAMBdata.save_cmb_power_spectra">save_cmb_pwoer_spectra</a> convenience function</li> <li>Changes for <a href="https://github.com/JesusTorrado/cobaya">Cobaya</a> compatibility (thanks Jesus Torrado)</li> <li><a href="https://camb.readthedocs.io/en/latest/camb.html?highlight=get_matter_power_interpolator#camb.get_matter_power_interpolator">get_matter_power_interpolator</a> has extrap_kmap to efficiently get tails by extrapolation</li> <li><a href="https://camb.readthedocs.io/en/latest/camb.html#camb.CAMBdata.get_matter_power_interpolator">get_matter_power_interpolator</a> now also available as method of results object for optimization purposes</li> <li>mathutils module with convenience functions like Wigner 3j, pseudo-CL coupling, and fast Gauss-Legendre and x^T C^{-1} x evaluation</li> <li>Doc and example notebook improvements/additional examples and warnings</li> </ul> </ul> <B>August 2017</B><BR> <UL> <LI>HMCode bug fix and speed up (thanks Alex Mead)</LI> <li>Refactoring in equations.f90 so all scalar source outputs now computed in derivs function; support for custom source functions (as used by python camb.symbolic module) <LI><A HREF="https://camb.readthedocs.io/en/latest">Python CAMB wrapper</A>: <ul> <li>Added <A href="http://camb.readthedocs.io/en/latest/symbolic.html">camb.symbolic</a> module using sympy, to get equations, convert between gauges, and produce and compile CAMB code from analytic results in different gauges. See the <A hREf="http://nbviewer.jupyter.org/github/cmbant/CAMB/blob/master/pycamb/docs/ScalEqs.ipynb">demo notebook</a> demonstrating how to use this, set custom sources, plot perturbation evolution and calculate angular power spectra of different things. <li>Add <a href="http://camb.readthedocs.io/en/latest/emission_angle.html">camb.emission_angle</a> module to get BB power from emission angle and time delay (<a href="http://arxiv.org/abs/1706.02673">1706.02673</a>)</li> <li>Added <a href="http://camb.readthedocs.io/en/latest/postborn.html">camb.postborn</a> module to get the field rotation power spectrum and associated BB power (<a href="http://arxiv.org/abs/1605.05662">1605.05662</a>) <li>Support for BBN-consistency values of Y<sub>He</sub> by interpolation from table; new tables from Parthenope supplied (thanks Ofelia Pisanti)</li> <li>H_of_z functions now support arrays of redshifts</li> <li>Add nonlinear parameter to model.set_matter_power</li> <li>AccurateReionization is now switched on by default</li> <li>CMB_outputscale and raw_cl options to python CMB power spectra output functions to get CL or DL, and use different units</li> <li>Added get_fsigma8() function</li> <li>Python 3.6 compatibility</li> <li>"pip install camb" now working cleanly</li> <li>Makefile improvements to build pycamb using gfortran even if ifort present (can use "make COMPILER=gfortran" to force gfortran)</li> <li>Bug fixes</li> </ul> </li> </UL> <B>January 2017</B><BR> <UL> <LI><A HREF="http://camb.readthedocs.io/en/latest/correlations.html">Python CAMB wrapper correlations module</A>: Transform between C<sub>L</sub> and CMB correlation functions; calculate lensed power spectra and correlation functions from unlensed spectra and lensing power spectrum (useful for delensing); calculate matrix of derivatives of lensed power spectra with respect to lensing power and unlensed C<sub>L</sub>. <LI>Added halofit_casarini=7 for PKequal dark energy fitting (thanks Luciano Casarini; arXiv:0810.0190, arXiv:1601.07230) <LI>Fixed compilation issue with gfortran 6.3 </UL> <B>November 2016</B><BR> <UL> <LI><b>CAMB_SetNeutrinoHierarchy</b> function and python wrapper <b>neutrino_hierarchy</b> option for set_cosmology function (to configure to use two eigenstate approximation to normal or inverted hierarchies) <LI>Various misc small bug fixes, improvements and compiler compatibility changes </UL> <B>May 2016</B><BR> <UL> <LI>Added support for <A HREF="http://arxiv.org/abs/1505.07833">HMCODE</A> Halofit version (halofit_version=5; thanks Alex Mead); Takahashi remains the default as before <LI><A HREF="https://camb.readthedocs.io/en/latest">Python CAMB wrapper</A> <UL> <LI> <b>camb.get_matter_power_interpolator</b> function get 2D spline object for evaluating P(k,z); <br>See the <A HREF="http://camb.readthedocs.io/en/latest/CAMBdemo.html">sample notebook</A> for an example of how to use this to calculate a lensing spectrum <LI>Result object functions to get unsplined matter power (<b>get_linear_matter_power_spectrum</b>,<b>get_nonlinear_matter_power_spectrum</b>) <LI>Result object function to get redshift from conformal time (<b>redshift_at_comoving_radial_distance</b>) <LI><b>camb.set_halofit_version</b> to set halofit version; <LI>Option to set cosmomc_theta rather than H_0 (thanks Marius Millea) <LI> Wigner 3j function for convenience (<b>camb.bispectrum.threej</b>). </UL> </UL> <B>November 2015</B><BR> <UL> <LI>New <A HREF="https://camb.readthedocs.io/en/latest">Python CAMB wrapper</A> <LI>Option to add comment headers to output files giving column names (output_file_headers = T) <LI>New input parameters to change the default second helium reionization redshift and duration <LI>Output of transfer functions will now also work at very early times </UL> <B>February 2015</B><BR> <UL> <LI>Tidied up Makefile (auto-detect gfortran/ifort, release/debug builds) <LI>Small tweak for accuracy with higher neutrino masses <LI>A CodeBlocks project file is provided (camb.cbp), which can also be used to run and debug from the cross-platform <A hREF="http://darmar.vgtu.lt/">CodeBlocks IDE</A> </UL> <B>January 2015</B><BR> <UL> <LI>Transfer function output now includes more variables, including different total densities and velocities (see <A HREF="#transfer">list</A>) <LI>Generalized matter power and sigma8 functions; output of "growth" (from CDM velocity correlation sigma8_vd^2/sigma8) <LI>Output of additional derived parameters (k<sub>eq</sub>, D<sub>A</sub>, θ<sub>s,eq</sub> - the angular scale of the sound horizon at matter-radiation equality) <LI>Add <b>halofit_version</b> (=1,2,3,4) to set halofit version (see params.ini) <LI>Halofit tweak to prevent negative values in neutrino models for high Ω<sub>m</sub> (thanks Simeon Bird) <LI>Add tensors when calculating bispectrum Fisher values <LI>Add AngularDiameterDistance2 utility function <LI>Added internal ALens_Fiducial as alternative to Alens </UL> <B>April 2014</B><BR> <UL> <LI>Added two alternative tensor power spectrum parameterizations (see <A HREF="http://cosmologist.info/notes/CAMB.pdf">CAMB notes</A> section on initial power spectra), allowing easy specification of r or tensor amplitude with different scalar/tensor pivot scales <LI>Added optional parameters <b>scalar_nrunrun</b> (for running of running of scalar power), and <b>tensor_nrun</b> for running of tensors <LI>Start lensing potential integration at tau_maxvis (gets T-phi slightly closer to result from using visibility, very small change to anything else) and added negligible anisotropic stress correction for consistency in extended models. </UL> <B>March 2014</B><BR> <UL> <LI>Fixed problem with tensor modes having DoTensorNeutrinos=T and massive neutrinos <LI>Set DoTensorNeutrinos=T by default when called from code (e.g. for use with CosmoMC) <LI>Modified massive neutrino halofit parameters to be more accurate with the new halofit from Takahashi 2012 (thanks to Simeon Bird). </UL> <B>December 2013</B><BR> <UL> <LI>Minor fix so to set NLL_num_redshifts=0 by default so transfer functions don't have to always be integrated down to z=0 <LI>Added ./python folder with some sample plotting scripts and utilities </UL> <B>November 2013</B><BR> <UL> <LI>Fixed issue calling CAMB programmatically, e.g. with tensors and lensing <LI>CAMB_GetCls function in camb.f90 now returns total lensed C<sub>l</sub> if DoLensing is true (rather than always unlensed) <LI>Code fixes that do not affect results unless code is modified </UL> <B>October 2013</B><BR> <UL> <LI>Fix to equations_ppf for w/=-1 models; corrected source output fixes C<sub>L</sub> error at very low L (<2% for w>-0.8, more for w<-0.8). (thanks David Rapetti and Matteo Cataneo) <LI>Updated writefits.f90 consistently </UL> <B>September 2013</B><BR> <UL> <LI>Modified more general neutrino mass input specification: <B>share_delta_neff</B> and <B>massive_neutrinos</b> now integer array. See section the <A HREF="http://cosmologist.info/notes/CAMB.pdf">CAMB notes</A> for detailed documentation and examples. <LI>Changes to support non-linear CMB lensing and non-linear matter power (<B>do_nonlinear = 3</B>); (thanks Jason Dossett) <LI>Replaced numerical recipes functions with internal fortran or new versions (thanks Martin Reinecke) <LI>Fixed memory issue for CosmoMC compatibility </UL> <B>July 2013</B><BR> <UL> <LI>[31 July] fixed compatibility with gfortran <LI>Improved speed and accuracy of lensed CMB calculation at L>5000 (tweaks to correlation function apodization, etc.) <LI>More accurate Limber approximation for lensing potential (<A HREF="http://arxiv.org/abs/0809.5112">arXiv:0809.5112</A>); result much more stable around Limber switch scale <LI>A few internal changes for greater consistency with CAMB sources <LI>Updated high-L template file for Planck parameters, non-linear lensing and higher L </UL> <B>March 2013</B><BR> <UL> <LI>Fix numerical accuracy for larger neutrino masses and bug in and non-linear lensing calculation in very closed models <LI>Read in AccuracyBoost parameters earlier so they are reflected e.g. in e.g. Transfer_SetForNonlinearLensing. <LI>Temperatures of massive neutrinos set from the degeneracy, e.g. 3.046, unless same_neutrino_Neff set (no degeneracies specific in .ini) <LI>Updated default T_CMB=2.7255 (does not change results for same input parameters) <LI>Derived sound horizon output parameter now uses more accurate sound speed using correct CMB temperature (power spectrum results and CosmoMC theta unchanged) <LI>Fixed bug calculating zstar with Feedback=0 and accurate_reionization (gave wrong results) <LI>Utility functions Hofz, DeltaPhysicalTimeGyr, and dsound_da_exact for getting H(z), age and the accurate sound speed </UL> <B>October 2012</B><BR> <UL> <LI>Updated Recfast to 1.5.2 (~0.15% change in C<sub>l</sub> from small tweaks to fudge parameters to match <A HREF="http://www.cita.utoronto.ca/~jchluba/Science_Jens/Recombination/CosmoRec.html">CosmoRec</A> and <A HREF="http://www.sns.ias.edu/~yacine/hyrec/hyrec.html">HyRec</A>) <LI>Updated Halofit model from <A HREF="http://arxiv.org/abs/1208.2701">arXiv:1208.2701</A> (thanks Ryuichi Takahashi) <LI>Calculation of various potentially useful derived parameters (if <b>derived_parameters=T</b>) <LI>Change to allow N<sub>eff</sub><1 to work (thanks Zhen Hou) <LI>Typo in approximation result in equations.f90 corrected (thanks Alex Hall; no effect on numerics) <LI>Switch off use_spline_template for non-adiabatic models (thanks Jo Dunkley) <LI>Support for compiling with and linking to <A HREF="http://www.cita.utoronto.ca/~jchluba/Science_Jens/Recombination/CosmoRec.html">CosmoRec</A> for recombination model (make RECOMBINATION=cosmorec) and HyRec <A HREF="http://www.sns.ias.edu/~yacine/hyrec/hyrec.html">HyRec</A> (make RECOMBINATION=hyrec) <LI>IniFile module updated [supports overridden and common parameters via DEFAULT(name.ini) and INCLUDE(name.ini)]. </UL> <B>January 2012</B><BR> <UL> <LI>Interpolation accuracy and speed improved by using fiducial template (set <b>use_spline_template=F</b> to recover previous behaviour). For summary of current accuracy performance see <A HREF="http://arxiv.org/abs/1201.3654">arXiv:1201.3654</A>. </UL> <B>December 2011</B><BR> <UL> <LI>Halofit changes from <A HREF="http://arxiv.org/abs/1109.4416">arXiv:1109.4416</A> for better accuracy on small scales (thanks to Simeon Bird) <LI>Added <b>version_check</b> to output .ini files to track CAMB version being used <LI>Option to export curvature alpha_l(r) and beta_l(r) [useful for local non-Gaussianity] <LI>Minor bug fixes that don't affect numerical results <LI>Example params.ini parameters changed to be consistent with CosmoMC's defaults (CMB temperature, effective number of neutrinos) </UL> <B>October 2011</B><BR> <UL> <LI>Fixed array bounds issue for closed-model tensor calculation <LI>Tweaks for high_accuracy_default stability in closed models <LI>L sampling slightly increased (1.2 factor) at high L for high_accuracy_default <LI>Added global_error_flag and Errors module for handling bailout from various modules <LI>Updated Makefile </UL> <B>July 2011</B><BR> <UL> <LI>Added <b>high_accuracy_default</b> parameter, to give target accuracy of 0.1% for 500<L<2000 rather than default of 0.3%. This is much faster than increasing the accuracy boost parameters. <LI>Added improved high kτ approximations from <A HREF="http://arxiv.org/abs/1104.2933">arXiv:1104.2933</A>. <LI>Optimized very accurate massive neutrino evolution and perturbatively relativistic expansion (much faster, see the <A HREF="http://cosmologist.info/notes/CAMB.pdf">notes</A>) <LI>Fractional numbers of neutrinos now used to increase neutrino temperature equally for all neutrinos, giving consistency for number densities of massive neutrinos <LI> Merged flat and non-flat derivative routines in equations.f90, time evolution restructuring and some higher-order tight coupling terms from <A HREF="http://arxiv.org/abs/1012.0569">arXiv:1012.0569</A>. <LI>Various tweaks to fixed internal accuracy parameters for consistency with <b>high_accuracy_default</b> (very small decrease in speed) <LI>Added apodization in lensing.f90 so that slow full integration is now only used for lmax>=5000 rather than lmax>=3000 (or if AccurateBB is set). <LI>Added quick calculation of the high-L tails of the lensing convolution by rescaling a template (speeds up high-accuracy lensedCl calculation with minimal loss of accuracy). <LI>Removed a couple of options relating to unlensed or temperature-only calculations that are now rarely relevant </UL> <B>January 2011</B><BR> <UL> <LI>(14 Jan) updated Makefile for gfortran compatibility and easier compilation for bispectrum fisher calculations <LI>Added Bispectrum module to calculate CMB lensing and local primordial non-Gaussianity bispectra for temperature and polarization (see <A HREF="http://arxiv.org/abs/1101.2234">arXiv:1101.2234</A>). Define FISHER in the makefile to also calculate Fisher elements for the bispectra, including lensing signal variance effects (you make need to edit makefile to link to LAPACK). Corresponding new parameters in the .ini file. <LI><b>lens_potential_output_file</b> format changed to included temperature and polarization spectra (scalar+tensor), and extra column giving [l(l+1)]<sup>3/2</sup>C<sub>ψE</sub>/2π - the correlation of the lensing potential with the E polarization. <LI> Updates for BAO calculations were in CosmoMC May 2010. </UL> <P> <B>January 2010</B><BR> Recfast updated to version 1.5 (rising to 2% change at l=2000; added rate fudge to match <A HREF="http://arxiv.org/abs/0910.4383">0910.4383</A>; use <b>RECFAST_Hswitch = F</b> to recover old result). Added <b>lens_potential_output_file</b> parameter to get sensibly normalized lensing potential ([l(l+1)]<sup>2</sup>C<sub>l</sub>/2π and temperature correlation). Added code parameter do_bispectrum to modules.f90 for parameter tweaks to get accurate transfer functions for f<sub>NL</sub> calculations. <P> <B>February 2009</B><BR> Fixed serious bug in the calculation of lensed non-flat models (introduced in the Feb 2008 version). <P> <B>November 2008</B><BR> Fixed proton mass error (and hence incorrect baryon evolution on pressure-damping scales; note CAMB is not as accurate as <A HREF="http://camb.info/sources/">CAMB sources</A> anyway due to use of adiabatic pressure). <P> <B>September 2008</B><BR> Restructured recombination module to allow use of different models. RECFAST default implementation updated to version 1.4.2 (+fixes, tiny change to results). Misc minor changes. </P> <B>June 2008</B><BR> Fixed significant bug affecting very closed models (introduced Feb 2008; slightly closed models were fine). <P> <B>March 2008</B><BR> <I>(26th March, fixed pivot parameters in sample .ini)</I><BR> New reionization history model: new input parameter <B>re_delta_redshift</B> (does not change optical depth), and option to set <B>re_ionization_frac=-1</B> to automatically set the reionization fraction from input Y<sub>He</sub> assuming Helium is singly reionized at the same time as hydrogen (hence mapping of redshift to optical depth different to before at 10% level; see the <A HREF="http://cosmologist.info/notes/CAMB.pdf">notes</A>). Reionization history now specified in (replaceable) module in reionization.f90; default includes tiny effect of He double reionization at z~3.5. Some internal reorganization. Added <B>pivot_scalar</B> and <B>pivot_tensor</B> input parameters for initial power spectrum. <b>output</b> subroutine (equations.f90) re-arranged to separated ISW source terms. <P> <B>February 2008</B><BR> Updated RECFAST to version 1.4 (~0.5% effect at high <I>l</I>; new RECFAST_fudge_He,RECFAST_Heswitch parameters, removed Dubrovich modifications). <B>lensed_total_output_file</b> parameter to get lensed scalar plus tensor power spectrum. Calculates CosmoMC's theta parameter for each model (code in modules.f90). Modules routine <B>MatterPowerData_Load</B> to read in matter power (for splining from pre-computed file); <B>MatterPowerData_k</B> function now extrapolates low-k out of range. <B>transfer_interp_matterpower</B> parameter to switch between interpolated regular grid in log k or array at actual computed values (better for later re-interpolation). Added camb.vfproj Intel Visual Fortran project file. Simplifying internal changes from <A HREF="http://camb.info/sources">CAMB sources</A>, e.g. use of Ranges module for setting time steps and k sampling values; also now switches to log k source spacing at very high l to speed up calculation where spectra smooth. More diagnostics and options in the <A HREF="http://camb.info/test_suite.tar.gz">test suite</A>. <P> <B>November 2006</B><BR> Updated RECFAST to version 1.3 (0.1% effect on C<sub>l</sub>). Tweak to get <0.3% error in matter power spectrum around the peak when <B>transfer_high_precision = T</B>. <P> <B>September 2006</B><BR> Fixed problem generating combinations of scalars and tensors in camb.f90 (since August version). <P> <B>August 2006</B><BR> Speeded calculation of lensed spectra and lensing power spectrum by using Limber approximation on small scales (no loss of accuracy). Fixed missing f_K in source term for non-flat lensing potential. Minor changes to default parameters and compatibility tweaks. Can <A HREF="http://camb.info/test_suite.tar.gz">download</A> test suite for comparing accuracy and code versions. <P> <B>July 2006</B><BR> Fixed bug setting default neutrino degeneracy if none specified and initialization of nu_mass_eigenstates for programmatic access. Other minor fixes. <P> <B>June 2006</B><BR> Added support for arbitrary neutrino mass splittings. New option to set <B>transfer_k_per_logint=0</B> to get automatic accurate k-sampling of the matter power spectrum. Fixed Transfer_GetMatterPower at large scales for non-flat models. New setting value <B>massive_nu_approx=3</B> to use whatever method is good to get fast accurate results. Other internal changes. <P> <B>March 2006</B><BR> Fixed bug lensing scalar spectrum when generated at the same time as tensors. New (hard coded) parameter <B>lmin</B> in modules.f90 - set to 1 if you want to generate temperature and lensing potential l=1 (Newtonian Gauge) C<sub>l</sub>. <P> <B>April 2005</B><BR> Added <B>do_nonlinear</B> option to apply non-linear corrections from HALOFIT (<A HREF="http://arxiv.org/abs/astro-ph/0207664">astro-ph/0207664</A>). <B>do_nonlinear = 1</B> applies just to the matter power spectra, <B>do_nonlinear=2</B> applies corrections to the lensed CMB power spectra (important for BB). HALOFIT should only be used for standard adiabatic ΛCDM models with power law initial power spectra. New <B>recombination</B> option (1 does RECFAST as before, 2 uses modified version from <a href="http://arxiv.org/abs/astro-ph/0501672">astro-ph/0501672</a>). New option <B>do_late_rad_trunction</B> to turn off the small scale radiation hierarchies after matter domination (see <A HREF="http://cosmocoffee.info/discuss/astro-ph/0503277">astro-ph/0503277</A> and the <A HREF="http://cosmologist.info/notes/CAMB.pdf">notes</A>) - saves some time. New <B>output_root</B> option to prefix output file names and generate output_root_params.ini file of input parameters for the run. <P> <B>November 2004</B><BR> Default lensing routine (<B>lensing_method=1</B>) changed to use new full-sky correlation function method (<A HREF="http://arxiv.org/abs/astro-ph/0502425">astro-ph/0502425</A>) in preference to the harmonic method of <A HREF="http://arxiv.org/abs/astro-ph/0001303">astro-ph/0001303</A> (<B>lensing_method=3</B>; inaccurate at l>1000 at ~1.5% level by l=2000). The lensed result is now significantly faster and more accurate. Also added flat-sky method (<B>lensing_method=2</B>) of <A HREF="http://arxiv.org/abs/astro-ph/9505109">astro-ph/9505109</A> and <A HREF="http://arxiv.org/abs/astro-ph/9803150">astro-ph/9803150</A> as in CMBFAST (accurate to 0.4%). New <B>accurate_BB</B> parameter to get lensed BB accurately (within assumptions of linearity and given k_max, l_max, etc.). Note lensed_output_file no longer contains any tensor contribution. Various changes for better accuracy and compiler compatibility, including same accuracy with massive neutrinos as with massless. <P> <B>August 2004</B><BR> Fixed effect of reionization on the lensed C<sub>l</sub> (0.5% on small scale TT). </P> <B>June 2004</B><BR> <P> Fixed serious problem with tensor mode polarized C<sub>l</sub> from reionization (significantly underestimated power). Changed default tensor pivot scale to 0.05 Mpc<sup>-1</sup> (same as for scalars). Flat Bessel functions no longer cached to disk (faster to compute than read in many cases; prevents problems in uses with MPI). New <B>accurate_reionization</B> flag for accurate calculation of large scale scalar EE around the first dip (also outputs computed optical depth due to reionization). Option to output vector mode spectra from regular vorticity mode (<A HREF="http://arxiv.org/abs/astro-ph/0403583">astro-ph/0403583</A>) or magnetic field (<A HREF="http://arxiv.org/abs/astro-ph/0406096">astro-ph/0406096</A>). </P> <B>December 2003</B><BR> <I>Fix - 17 Dec:</I> corrected problem with significantly non-flat models (e.g. Ω<sub>K</sub>=-0.1, H<sub>0</sub>=40) <P> Improved accuracy of non-flat calculation, and allowed for very nearly flat models (Ω<sub>K</sub> ~ 1e-5). Non-flat code should be as accurate as the flat (0.5%) on most scales. Added run-time parameters <B>do_tensor_neutrinos</B> (to include the neutrino evolution in the tensor equations) and <B>cs2_lam</B> (constant sound speed of the dark energy) instead of having to modify the code. Fixed fatal bug in tensor neutrino setup introduced some time this year. Added parameter <B>CMB_outputscale</B> to scale output Cls by a constant (see comments in params.ini for getting microK^2 output). </P> <B>July 2003</B><BR> <P> Fixed instability in bessels.f90 which gave problem for very nearly flat closed models with abnormal Helium fractions (and possibly other models). Dark energy equations in equations.f90 changed to use simpler general fluid equations for the perturbations (see <A HREF="http://arxiv.org/abs/astro-ph/0307104">astro-ph/0307104</A>). inidriver.F90 now reads in scalar amplitude even if computing tensors only (so combination with the initial ratio sets correct tensor amplitude). </P> <B>May 2003</B><BR> <P> Fixed bug in equations.f90 giving errors with non-flat models. Fixed bug in inidriver.F90 setting H<sub>0</sub> with <B>use_physical=F</B>. Fixed camb.f90 file in download - missing routines for getting C<sub>l</sub> transfer functions. </P> <B>April 2003</B><BR> <P> Some major restructuring, including new functions to return the CMB transfer functions (see camb.f90). The tight coupling code has been re-written, adding quadrupole terms and accounting for the time variation of the opacity numerically. The code should be more accurate and faster, especially on small scales. Minor fixes to RECFAST to match version in CMBFAST (0.01% effect on C<sub>l</sub>s), and bug fix in output routine (0.3%). Includes constant w dark energy and running spectral index parameters by default (rather than with an add-on). New <B>use_physical</B> parameter to allow alternative model specification by Om_b h^2, Om_b h^2 and Om_k. Polarization .fits files now compatible with HEALPIX 1.2. </P> <B>November 2002</B> <P> Minor changes for greater compiler compatibility, in particular with Visual Fortran. Makefile includes suggested options for a variety of compilers. </P> <B>September 2002</B> <P> Added support for neutrino isocurvature initial conditions, and totally correlated mixed initial conditions (assuming the same power spectrum for each mode) - new <B>initial_vector</B> parameter in params.ini. Partially correlated mixed initial conditions can be computed by combining results from different runs with totally correlated initial conditions. </P> <B>July 2002</B> <P> Changes for compatibility with <A HREF="http://cosmologist.info/cosmomc/">CosmoMC</A>. New option to output matter power spectrum. Changed default pivot point for tensor initial power spectrum to 0.002 MPc<sup>-1</sup> (power_tilt.f90), added pivot point and normalization to initial power parameters. Minor enhancements to inifile.f90. Utility routines Re_OpticalDepthAtZ and Transfer_GetMatterPower added to modules.f90. </P> <B>March 2002</B> <P> Massive neutrino support improved. Background evolution is much faster, and only ever needs to be computed once for all neutrino masses. Output transfer function files now include columns for the massive neutrino and total perturbations. Sigma_8 is now computed including CDM, baryons and massive neutrinos. Fixed problem computing matter power spectrum in massive neutrino models. New parameter <B>massive_nu_approx</B> to control how the massive neutrinos are evolved - option for new approximate fast scheme that is quite accurate for the CMB. New <B>feedback_level</B> parameter that can be used to get useful information about the model being calculated. <BR> Fixed rare problem computing closed models, and bug in computation of closed transfer functions. The names of the massive neutrino subroutines have been changed because the argument that is passed has changed. </P> <B>February 2002</B> <P> Fixed FITS file output to start at l=0 rather than l=2 to be consistent with HEALPIX. </P> <B>January 2002</B> <P> The code is now fully internally parallelized and lensing is supported. Can now use about 16 processors with good efficiency - just compile with the OpenMP -mp compiler flag. The lensing power spectrum is computed explicitly and then used to computed the lensed CMB power spectra using the full-sky results of <A HREF="http://arxiv.org/abs/astro-ph/0001303">astro-ph/0001303</A> (many thanks for Gayoung Chon for work on the lensed power spectrum code). To generate the lensed power spectra set do_lensing=T in params.ini and the output will be in the lensed_output_file. The lensing power spectrum l<sup>4</sup> C<sub>l</sub><sup>φφ</sup> is also output as the 5th column of the scalar_output_file, followed by the cross-correlation with the temperature l<sup>3</sup> C<sub>l</sub><sup>φT</sup>. </P> <B>October 2001</B><P> Fixed bug in RECFAST - corrects C_l errors at 1-2% level. Background evolution is now determined from routines in gauge_inv.f90 (and gauge_sync.f90) - you now only need to edit these files to add additional matter components, use extended theories, etc. RECFAST now consistent with massive neutrinos. Added Makefile for better compilation, and added option to create FITS format power spectrum files. Changed driver.f90 to driver.F90, and new file writefits.f90. Some minor changes to ease use with a wider range of compilers (e.g. NaG F95 for Linux). <P> <B>May 2001</B><P> Fixed the neutrino ratio factor in the normalization of the scalar power spectrum to be consistent with the power spectrum as defined since the January 2001 version. Changes to gauge_inv.f90 and gauge_sync.f90. <P> <B>April 2001</B><P> New <A HREF="http://camb.info/examples.html">example code</A>. These samples show how you can call CAMB from other programs via a subroutine. There are also improved InitialPower modules for parameterizing the initial power spectrum to obtain meaningful tensor/scalar ratios for general models and for parameterizing in terms of slow-roll inflation parameters.<P> Fixed a floating error arising when both tensor and scalar spectra are generated but with ratio zero. <P> <B>February 2001</B><P> Fixed bug in recfast.f90 introduced in August 2000 update (caused erroneous blip in ionization history).<P> <B>January 2001</B><P> New file power.f90 added to separate out the InitialPower module for easily modifying the initial power spectrum. The InitialPower module now has additional parameters to control the normalization of the output Cls, allowing absolute computations using correctly normalized initial power spectra (set the UseScalTensRatio parameter to false to compute the tensor/scalar ratio correctly from the initial power spectra in general models). The InitialPower module is now commented to fully explain the definition of the power spectra that should be returned by the TensorPower and ScalarPower routines. <P> The transfer functions are now output in terms of k rather than beta (nu*K) in non-flat models, and the way to compute the matter power spectrum from the transfer functions via d2norm is documented. The variables used to propagate the tensor modes in gauge_inv.f90 have been changed to be equivalent to the metric variables, improving stability when DoTensorNeutrinos=true. <P> <B>September 2000</B><P> Now uses an accurate approximation to propagate massive neutrino perturbations once no longer highly relativistic, speeding up computation by about a factor of two (gauge_inv routine only). All massive neutrino code is now re-organized into a module called MassiveNu in modules.f90. The massive neutrino equations are described in <A HREF="http://arxiv.org/abs/astro-ph/0203507">astro-ph/0203507</A> <P> <B>August 2000</B><P> Minor changes to recfast.f90 and modules.f90 to prevent floating point errors on some systems. (Thanks for Louise Griffiths)<P> <B>July 2000</B><P> Fixes inaccurate computation of the tensor quadrupole in flat models, pointed out in <A HREF="http://arxiv.org/abs/astro-ph/0006392">astro-ph/0006392</A> . The only code change is to subroutine TensSourceSumIntJl in cmbmain.f90.<P> <B>February 2000</B><P> Massive neutrinos are now supported. The treatment is essentially the same as CMBFAST. However gauge_inv now includes neutrino anisotropic stress in the tensor computation by default, accounting for massive neutrinos when appropriate. You can revert to the old default by changing the "DoTensorNeutrinos" parameter in gauge_inv. <P> This version also fixes the tight coupling switch over to give accurate results with gauge_sync. This fixes errors introduced in CMBFAST 3.0/CAMB Nov 99. <P> <B>November 1999</B><P> Adds support for RECFAST recombination and fixes various bugs that were in CMBFAST 2.4.1 but fixed in CMBFAST 3.0. RECFAST is an option via the fifth line in the input file as in CMBFAST. Using it does not slow things down significantly and corrects errors at around the 2% level. <A NAME="adds"> <H3>Add-ons, extensions, external sites</H3> <UL> <li><a href="https://github.com/sfu-cosmo/MGCAMB/">MGCAMB</a></li> <li><a href="http://eftcamb.org/">EFTCAMB</a></li> </UL> <A NAME="refs"> <H3>REFERENCES</H3> <P> Some notes and relevant Maple derivations are given <A HREF="http://camb.info/theory.html">here</A> (see also the Appendix of <A HREF="http://arxiv.org/abs/astro-ph/0406096">astro-ph/0406096</A>). The <A HREF="http://cosmologist.info/notes/CAMB.pdf">CAMB notes</A> outline the equations and approximations used, and relation to standard synchronous-gauge and Newtonian-gauge variables; see also <A HREF="http://arxiv.org/abs/1201.3654">arXiv:1201.3654</A>. There is a <A HREF="http://cosmologist.info/cosmomc/cosmomc.bib">BibTex</A> file of references (including <A HREF="http://cosmologist.info/cosmomc">CosmoMC</A>). </P> <P> CMB power spectrum parameter degeneracies in the era of precision cosmology<BR> Cullan Howlett, Antony Lewis, Alex Hall, Anthony Challinor <A HREF="http://arxiv.org/abs/1201.3654">arXiv:1201.3654</A>. <P> Efficient computation of CMB anisotropies in closed FRW Models<BR> Antony Lewis, Anthony Challinor and Anthony Lasenby <A HREF="http://arxiv.org/abs/astro-ph/9911177">astro-ph/9911177</A> Ap. J. 538:473-476, 2000. <P> Geometric Algebra and Covariant Methods in Physics and Cosmology, Chapters 6&7<BR> PhD thesis, Antony Lewis 2000. <A HREF="http://cosmologist.info/thesis.ps.gz">PostScript</A>. </P> <P> <B>Covariant theory</B> <P> Cosmic Microwave Background Anisotropies in the CDM model: A Covariant and Gauge-Invariant Approach<BR> Anthony Challinor and Anthony Lasenby, <A HREF="http://arxiv.org/abs/astro-ph/9804301">astro-ph/9804301</A> Ap. J. 513:1 1-22, 1999 <P>Evolution of cosmological dark matter perturbations<BR> Antony Lewis and Anthony Challinor <A HREF="http://arxiv.org/abs/astro-ph/0203507">astro-ph/0203507</A> Phys. Rev. D66, 023531 (2002) <P> Microwave background anisotropies from gravitational waves: the 1+3 covariant approach <BR> Anthony Challinor, <A HREF="http://arxiv.org/abs/astro-ph/9906474">astro-ph/9906474</A> <P> Microwave background polarization in cosmological models<BR> Anthony Challinor, <A HREF="http://arxiv.org/abs/astro-ph/9911481">astro-ph/9911481</A> <P> CMB anisotropies from primordial inhomogeneous magnetic fields<BR> Antony Lewis, <A HREF="http://arxiv.org/abs/astro-ph/0406096">astro-ph/0406096</A><BR> (The appendix contains general derivations of the multipole equations and C<SUB>l</SUB> as used in CAMB) <P> <B>Initial conditions</B> <P> The General Primordial Cosmic Perturbation <BR> Martin Bucher, Kavilan Moodley and Neil Turok, <A HREF="http://arxiv.org/abs/astro-ph/9904231">astro-ph/9904231</A> (These results extended to the non-flat case; see the <A HREF="http://camb.info/theory.html">theory page</A>) <P> Observable primordial vector modes<BR> Antony Lewis, <A HREF="http://arxiv.org/abs/astro-ph/0403583">astro-ph/0403583</A> <P> <B>HALOFIT</B> <P> Stable clustering, the halo model and nonlinear cosmological power spectra<BR> Smith, R. E. and others, <A HREF="http://arxiv.org/abs/astro-ph/0207664">astro-ph/0207664</A>. <P> Revising the Halofit Model for the Nonlinear Matter Power Spectrum<BR> Ryuichi Takahashi and others, <A HREF="http://arxiv.org/abs/1208.2701">arXiv:1208.2701</A>. <P> <B>RECOMBINATION</B> <P> A new calculation of the recombination epoch.<BR> Seager, S., Sasselov, D. & Scott, D., 1999, ApJ, 523, L1, <A HREF="http://arxiv.org/abs/astro-ph/9909275">astro-ph/9909275</A>. <P> How well do we understand cosmological recombination?<BR> Wong, Wan Yan and Moss, Adam and Scott, Douglas, <A HREF="http://cosmocoffee.info/discuss/0711.1357">arXiv:0711.1357</A>. <P> <B>Weak lensing of the CMB</B> <P> <BLOCKQUOTE> <B>lensing_method=1</B><BR> Lensed CMB power spectra from all-sky correlation functions<BR> A. Challinor and A. Lewis. <A HREF="http://arxiv.org/abs/astro-ph/0502425">astro-ph/0502425</A>. (For Maple derivations see the <A HREF="http://camb.info/theory.html">theory page</A>.)<BR> Also: Weak Lensing of the CMB, <A HREF="http://arxiv.org/abs/astro-ph/0601594">astro-ph/0601594</A>. <P> <B>lensing_method=2</B><BR> Gravitational lensing effect on cosmic microwave background anisotropies: A Power spectrum approach<BR> Uros Seljak. <A HREF="http://arxiv.org/abs/astro-ph/9505109">astro-ph/9505109</A> <P> Gravitational Lensing Effect on Cosmic Microwave Background Polarization<BR> Uros Seljak and Matias Zaldarriaga. <A HREF="http://arxiv.org/abs/astro-ph/9803150">astro-ph/9803150</A> <P> <B>lensing_method=3</B><BR> Weak Lensing of the CMB: A Harmonic Approach<BR> Wayne Hu. <A HREF="http://arxiv.org/abs/astro-ph/0001303">astro-ph/0001303</A><BR> See also <A HREF="http://arxiv.org/abs/astro-ph/0301064">astro-ph/0301064</A>, <A HREF="http://arxiv.org/abs/astro-ph/0301031">astro-ph/0301031</A> </P> </BLOCKQUOTE> <B>Bispectra</B> <P> The shape of the CMB lensing bispectrum<BR> Antony Lewis, Anthony Challinor and Duncan Hanson <A HREF="http://arxiv.org/abs/1101.2234">arXiv:1101.2234</A> </P> <B>Sub-horizon radiation approximations</B> <P> The Cosmic Linear Anisotropy Solving System (CLASS) II: Approximation schemes<BR> Blas, Diego and Lesgourgues, Julien and Tram, Thomas. <A HREF="http://arxiv.org/abs/1104.2933">arXiv:1104.2933</A> </P> <B>Massive Neutrinos</B> <P> CMB power spectrum parameter degeneracies in the era of precision cosmology <BR> Cullan Howlett, Antony Lewis, Alex Hall, Anthony Challinor. <A HREF="http://arxiv.org/abs/1201.3654">arXiv:1201.3654</A> JCAP 04(2012)027 <P> <P>Evolution of cosmological dark matter perturbations<BR> Antony Lewis and Anthony Challinor <A HREF="http://arxiv.org/abs/astro-ph/0203507">astro-ph/0203507</A> Phys. Rev. D66, 023531 (2002) <P> <B>Synchronous gauge theory and non-flat models</B> <P> Complete treatment of CMB anisotropies in a FRW universe<BR> Wayne Hu, Uros Seljak and Matias Zaldarriaga. Phys. Rev. D57:6, 3290-3301, 1998. <A HREF="http://arxiv.org/abs/astro-ph/9709066">astro-ph/9709066</A>. <P> <B>WKB approx to hyperspherical Bessel functions</B> <P> Efficient Computation of Hyperspherical Bessel Functions<BR> Arthur Kosowsky, <A HREF="http://arxiv.org/abs/astro-ph/9805173">astro-ph/9805173</A> <P> <B>CMBFAST and the line of sight approach</B> <P> A line of sight integration approach to Cosmic Microwave Background Anisotropies<BR> Uros Seljak and Matias Zaldarriaga, <A HREF="http://arxiv.org/abs/astro-ph/9603033">astro-ph/9603033</A> Ap.J. 469:2 437-444, 1996 <P> Integral solution for the microwave background anisotropies in nonflat universes<BR> Matias Zaldarriaga, Uros Seljak, Edmund Bertschinger. ApJ. 494:491-501, 1998. <A HREF="http://arxiv.org/abs/astro-ph/97042656">astro-ph/9704265</A>. <P> CMBFAST for spatially closed universes<BR> Uros Seljak and Matias Zaldariaga, <A HREF="http://arxiv.org/abs/astro-ph/9911219">astro-ph/9911219</A> </BODY> </HTML>