CppTransport is a C++ implementation of the transport framework, capable of integrating the two- and three-point correlation functions generated during an inflationary epoch. The current version is limited to models with canonical kinetic terms, but this is not necessary as a matter of principle. Future versions may allow a non-Euclidean field-space metric as in mTransport. (Note that mTransport does not yet implement integration of three-point functions.)
CppTransport is a complementary alternative to the PyTransport platform. Both CppTransport and PyTransport implement the same numerical scheme. Roughly speaking, PyTransport is more lightweight and is easily scriptable from Python. CppTransport provides a more managed environment that offers structured data storage in SQLite databases and enables immediate parallel deployment over a large number of cores.
- Numerical results including all relevant field-theory effects at tree-level. See the accompanying technical paper for a discussion of what is included in the tree approximation.
- An SQL-based workflow based on the SQLite database engine. This supports the use of GUI tools that allow scientific exploitation and analysis without extensive programming.
- A fully-parallelized MPI-based implementation using adaptive load balancing.
- A transactional design means that it is safe to run multiple jobs against the same database simultaneously, and automated checkpointing and recovery prevent work being lost in the event of a crash.
- Manages the data lifecycle by storing each dataset with rich metadata. This metadata can be accessed within the platform, or alternatively is stored as human-readable JSON documents for long-term archival value.
- Encourages reproducible research by providing an unambiguous means to regenerate each dataset, including any products derived from it. The platform can give a detailed provenance for any data product, formatted as a HTML report (example). Notes can be attached to each record, allowing the report to function as a sort of electronic laboratory notebook.
- Leverages standard libraries including the Boost C++ library. Integration is performed using high-quality steppers taken from Boost.odeint. These steppers are interchangeable, meaning that they can be customized to suit the model being analysed.
Releases are permanently deposited at zenodo.org and are identifiable via DOI. Downloading a zenodo.org release is recommended as the simplest way to install CppTransport. Once downloaded, follow the instructions in the user guide.
- 2016.3 (31 August 2016) source from zenodo.org | source from GitHub | user guide from zenodo.org | user guide from arXiv
- 2016.2 (3 August 2016) source from zenodo.org | source from GitHub | user guide from zenodo.org
- 2016.1 (26 July 2016) source from zenodo.org | source from GitHub | user guide from zenodo.org
CppTransport is distributed under the GPL license. Development occurs on GitHub, and bug reports or feature requests are welcome. In the first instance these should be reported to the GitHub issue tracker. If you want to contribute to development then you may wish to clone or fork the repository.
Continued development of CppTransport depends on demonstrating its usefulness to funding agencies. If you use it to produce numerical results supporting your research then we would appreciate a citation.
Development of CppTransport has been supported by a number of grants and funding sources.
- The grant Precision tests of the inflationary scenario, funded by the European Research Council under the European Union’s Seventh Framework Programme (FP/2007-2013) and ERC Grant Agreement No. 308082
- The UK Science and Technology Facilities Council under grants ST/I000976/1 and ST/L000652/1
- The Leverhulme Trust under a Leverhulme Prize.
- The National Science Foundation Grant No. PHYS-1066293 and the hospitality of the Aspen Center for Physics.
- The hospitality of the Higgs Centre for Theoretical Physics at the University of Edinburgh, and the Centre for Astronomy & Particle Physics at the University of Nottingham.