Releases: cmbant/CAMB
1.0.5
- Added get_lensed_gradient_cls function for flat-sky non-perturbative lensing reconstruction responses
- Fix HMCode bug for w/=-1 models
- Fix k^2 factor in 21cm transfer function output
- Misc minor bug fixes, code and doc tidies
1.0.4
1.0.3
Misc bug fixes, and support for passing BBN interpolation table name as bbn_predictor in set_cosmology.
1.0 January 2019
This is a major new release, with CAMB now configured mainly as a Python package (wrapping modern Fortran for fast numerics). See the example notebook for examples of usage and now comprehensive documentation.
Major new features (in Python and Fortran) include:
-
Integrated CAMB sources, for CMB, CMB lensing, lensing convergence, number counts and 21cm including all linear velocity and GR effects; SplinedSourceWindow and GaussianWindow classes for setting SourceWindows array describing additional sources.
-
New set_initial_power_function and set_initial_power_table functions to set initial power spectra from arbitrary python function or sampled arrays
-
DarkEnergy, InitialPower, NonLinearModel, ReionizationModel and RecombinationModel classes that can be dynamically assigned to CAMBparams object fields.
-
Easily switch Dark Energy model between fluid and PPF, and support for setting custom w(z) evolution
-
Python command line camb script. Functions to load .ini file settings from python scripts.
Python changes:
- set_cosmology now supports more general exact thetastar as well as H0 and cosmomc_theta.
- read_ini and run_ini functions
- Reworked python-fortran interface using metaclass and decorators, supporting allocatable arrays and class instances and directly import and call of Fortran class methods
- Support multiple CAMBdata result instances, and results object can be called safely in any order (removing most global variables)
- CAMBparams read-only properties for omegam, N_eff, omegab, omegac, omaganu, h
- T_CMB changes handled consistently
- set_params supports options for changing dark energy, initial power and non-linear model classes
- set_params can set CAMBparam members if not already used as an argument (and things like InitPower.ns via an input string)
- Fields support named enumerations, name-length fields for arrays, fortran-compatible boolean and help
docs include help for field values (auto-generated via metaclass) - Faster and array versions of various background functions
- SecondOrderPK non-linear model class available from Python
- Optional support for CosmoRec and HyRec RecombinationModel classes (need to compile with them linked)
- Updated BBN model default to Parthenope 2017 as Planck 2018 analysis
- "setup.py make" command to re-build the Fortran library, which also works on Windows if gfortran is installed.
General changes
- Changed CAMBparams parameters to be physical density parameters ombh2, omch3, omnuh2 (+omk)
- Modest speed improvement from using higher order series solutions for background neutrino density combined with linear rather than log spline.
- Uses splined a(t) for perturbation evolution rather than evolving for each perturbation mode; tensor spectrum results now much faster
- More accurate background calculations with partial parallelism
- Finer every-L sampling at L=11-15 (small change in EE). Updated c_l interpolation template.
- min_l and custom source functions now set as parts of CAMBparams
- Account for radiation when setting dark energy density from matter densities and omk
- Smoother default reionization history parameters around helium second reionization
- Use matter temperature evolution from recfast (still harmlessly wrong - as before - from reionization onwards)
- scalarCovCls.dat and _array outputs for lensing potential now deflection angle
- Halofit default updated to HMcode to match Planck 2018 analysis
- Added TAxionEffectiveFluid example specific dark energy class implementation
- high_accuracy_default option removed (is now the default)
- Git repository now uses submodule for forutils
Underlying Fortran changes:
- Fortran 2003 Object-oriented code restructuring; Fortran code structure now closer to the python (see class trees). [this is a breaking change]
- Now requires gfortran 6 or ifort 14 or higher (ifort 18.0.1 or higher recommended)
- Fix for auto-kmax when using lensing from command line
August 2018
- Option to use HMCode 2015 version (thanks Alex Mead)
- accurate_massive_neutrino_transfers option if accurate neutrino transfer functions needed at late time
- Output text file precision increased
- Warning if accurate_BB=T but other options not set sensibly for accurate lensing BB
- Python CAMB wrapper:
- On linux system now builds with ifort if available (~35% faster)
- More efficient and new vector support for angular_diameter_distance and related background functions
- bbn module generalisation to allow more general table interpolation and vector arguments; added PRIMAT table (thanks Cyril Pitrou)
- Improvements for default settings in various cases
- get_background_time_evolution can now get T_b, the baryon temperature
- save_cmb_power_spectra convenience function
- Changes for Cobaya compatibility (thanks Jesus Torrado)
- get_matter_power_interpolator has extrap_kmap to efficiently get tails by extrapolation
- get_matter_power_interpolator now also available as method of results object for optimization purposes
- mathutils module with convenience functions like Wigner 3j, pseudo-CL coupling, and fast Gauss-Legendre and x^T C^{-1} x evaluation
- Doc and example notebook improvements/additional examples and warnings
August 2017
- HMCode bug fix and speed up (thanks Alex Mead)
- 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)
- Python CAMB:
- Added camb.symbolic module using sympy, to get equations, convert between gauges, and produce and compile CAMB code from analytic results in different gauges. See the demo notebook demonstrating how to use this, set custom sources, plot perturbation evolution and calculate angular power spectra of different things.
- Add camb.emission_angle module to get BB power from emission angle and time delay (1706.02673)
- Added camb.postborn module to get the field rotation power spectrum and associated BB power (1605.05662)
- Support for BBN-consistency values of Y_He by interpolation from table; new tables from Parthenope supplied (thanks Ofelia Pisanti)
- H_of_z functions now support arrays of redshifts
- Add nonlinear parameter to model.set_matter_power
- AccurateReionization is now switched on by default
- CMB_outputscale and raw_cl options to python CMB power spectra output functions to get CL or DL, and use different units
- Added get_fsigma8() function
- Python 3.6 compatibility
- "pip install camb" now working cleanly
- Makefile improvements to build pycamb using gfortran even if ifort present (can use "make COMPILER=gfortran" to force gfortran)
- Bug fixes
January 2017
- Python CAMB wrapper correlations module:
- Transform between CL and CMB correlation functions
- Lensed power spectra and correlation functions from unlensed spectra and lensing power spectrum (useful for delensing)
- Matrix of derivatives of lensed power spectra with respect to lensing power and unlensed CL
- Added halofit_casarini=7 for PKequal dark energy fitting (thanks Luciano Casarini; arXiv:0810.0190, arXiv:1601.07230)
- Fixed compilation issue with gfortran 6.3
November 2016
- CAMB_SetNeutrinoHierarchy function and python wrapper neutrino_hierarchy option for set_cosmology function (to configure to use two eigenstate approximation to normal or inverted hierarchies)
- Various misc small bug fixes, improvements and compiler compatibility changes
May 2016
- Added support for HMCODE Halofit version (halofit_version=5; thanks Alex Mead); Takahashi remains the default as before
- Python CAMB
- camb.get_matter_power_interpolator function to get 2D spline object for evaluating P(k,z);
See the sample notebook for an example of how to use this to calculate a lensing spectrum - Result object functions to get unsplined matter power (get_linear_matter_power_spectrum,get_nonlinear_matter_power_spectrum)
- Result object function to get redshift from conformal time (redshift_at_comoving_radial_distance)
- camb.set_halofit_version to set halofit version;
- Option to set cosmomc_theta rather than H_0 (thanks Marius Millea)
- Wigner 3j function for convenience (camb.bispectrum.threej).
- camb.get_matter_power_interpolator function to get 2D spline object for evaluating P(k,z);