- CosmoLattice - A modern code for lattice simulations of scalar and gauge field dynamics in an expanding universe
This paper describes CosmoLattice, a modern package for lattice simulations of the dynamics of interacting scalar and gauge fields in an expanding universe. CosmoLattice incorporates a series of features that makes it very versatile and powerful: i) it is written in C++ fully exploiting the object oriented programming paradigm, with a modular structure and a clear separation between the physics and the technical details, ii) it is MPI-based and uses a discrete Fourier transform parallelized in multiple spatial dimensions, which makes it specially appropriate for probing scenarios with well-separated scales, running very high resolution simulations, or simply very long ones, iii) it introduces its own symbolic language, defining field variables and operations over them, so that one can introduce differential equations and operators in a manner as close as possible to the continuum, iv) it includes a library of numerical algorithms, ranging from O(δt^2) to O(δt^10) methods, suitable for simulating global and gauge theories in an expanding grid, including the case of ‘self-consistent’ expansion sourced by the fields themselves. Relevant observables are provided for each algorithm (e.g. energy densities, field spectra, lattice snapshots) and we note that, remarkably, all our algorithms for gauge theories (Abelian or non-Abelian) always respect the Gauss constraint to machine precision.