Version history =============== 1.0.0 (planned changes) ----------------------- - GW power spectrum for low wavenumbers by using the formulae by :giombi_2024_cs:`\ `. - More polished documentation and examples. - Improve unit testing by using more comprehensive reference data, which are stored externally as HDF5. Test whether `Git LFS `_ on GitLab would be a suitable storage. - Improve integration with Cobaya and add examples. 0.9.0 ----- These modifications were `Mika's master's thesis `_. - Restructure the project - Provide an object-oriented interface for bubbles and spectra - Replace the fluid profile solver with a new implementation - Add support for equations of state beyond the bag model - Temperature-dependent degrees of freedom and sound speed - Add conversion to the gravitational wave frequencies and amplitudes today ($\Omega_\text{gw,0}$): include the omgw0 branch by Chloe Hopling - Add analysis utilities - Improve error handling - Improve documentation and publish it on Read the Docs - Improve compatibility for macOS on ARM - Improve packaging for PyPI and Docker - Update dependencies - License the project with the MIT license - Fix various bugs 0.0.1 ----- These modifications were Mika's summer project in 2021. - Improve code structure by splitting :mod:`pttools.bubble` and :mod:`pttools.ssmtools` to multiple submodules. - Improve code quality. - Lint each commit automatically with `Pylint `_. - Improve compliance with PEP8. - Add support for other integrators in addition to :meth:`scipy.integrate.odeint` such as :meth:`scipy.integrate.solve_ivp` and NumbaLSODA. - Speed up the simulations with Numba and NumbaLSODA. - Full GW power spectrum calculations: 5x for 1 CPU, 7x for 4 CPUs - Sine transform: Nx for N CPU cores (trivially parallelisable, minus some overhead) - ODE integration: 20x faster than :meth:`scipy.integrate.odeint` with pure Python - Add unit testing. - Set up `CI/CD pipeline on GitHub Actions `_. - Set up automatic testing with Python versions from 3.6 to 3.9 and with multiple versions of Numba and other libraries. - Set up automatic testing with all major operating systems (GNU/Linux, Windows, macOS). - Set up automatic performance testing using `timeit `_. - Set up automatic profiling (:mod:`tests.profiling`) of the performance-critical parts of the code such as :meth:`pttools.ssmtools.spectrum.power_gw_scaled` and :meth:`tests.paper.ssm_paper_utils.do_all_plot_ps_compare_nuc` using `cProfile `_, `Pyinstrument `_ and `YAPPI `_. - `Package `_ PTtools with `setuptools `_ so that it can be installed with pip. - This prepares the project for being published on `PyPI `_. - Add example scripts for running on `Slurm `_ clusters. - Add `Sphinx `_ documentation (the one you're currently reading). Previous development -------------------- 2020-06 ^^^^^^^ Bubble - Small improvements to docstrints. - Start introducing checks for physical ($v_\text{wall}, \alpha_n$): check_wall_speed, check_physical_parameters SSMtools - use analytic formula for high-k sin transforms. Should eliminate spurious high-k signal in GWPS from numerical error. - sin_transform now handles array z, simplifying its calling elsewhere - resample_uniform_xi function introduced to simply coding for sin_transform of lam - Allow calls to power spectra and spectral density functions with 2-component params list, i.e. params = [v_wall, alpha_n] (parse_params) exponential nucleation with parameters (1,) assumed. - reduced NQDEFAULT from 2000 to 320, to reduce high-k numerical error when using numerical sin transform Planned changes """"""""""""""" Bubble - Include bubble nucleation calculations of beta (from $V(T,\phi)$) SSMtools - Check default nucleation type for nu function.