Galacticus is designed to solve the physics involved in the formation of galaxies within the current standard cosmological framework. It is of a type of model known as “semi-analytic” in which the numerous complex non-linear physics involved are solved using a combination of analytic approximations and empirical calibrations from more detailed, numerical solutions. Historically, such models were first contemplated by White & Rees (1978; MNRAS; 183; 341) and have since been developed further, notably by White & Frenk (1991; ApJ; 379; 52), Kauffmann et al. (1993; MNRAS; 264; 201), Cole et al. (2000; MNRAS; 319; 168), Somerville et al. (2008; MNRAS; 391; 481). Models of this type aim to begin with the initial state of the Universe (specified shortly after the Big Bang) and apply physical principles to determine the properties of galaxies in the Universe at later times, including the present day. Typical properties computed include the mass of stars and gas in each galaxy, broad structural properties (e.g. radii, rotation speeds, geometrical shape etc.), dark matter and black hole contents, and observable quantities such as luminosities, chemical composition etc.
The Galacticus code was designed to be highly modular. Every part of it consists of a simple and well-defined interface into which an alternative implementation of a calculation can easily be added. For example, the code is currently designed for the standard cold dark matter cosmological model, but could be adapted to a warm dark matter by simply writing a small module that performs calculations of the warm dark matter mass distribution and including a few directives in the file that specify what this module does. Then it gets automatically identified and compiled into the code. This approach for just about every aspect of the code so that it is very flexible.
Similarly, the physical description of galaxies is extremely flexible. Each galaxy has a set of components which can be created/destroyed as needed, each of which has a set of properties. For example, one component is the dark matter, and it has properties such as mass, spin etc. A new component (e.g. a stellar halo) can then be easily added by writing a module which defines its properties and its interactions with other components (as described below). Also, because of the modular nature, any such module can be trivially replaced by another that performs the calculations differently if required.
The actual formation and evolution of galaxies – the real inner workings of the code – is treated by simply defining a set of differential equations for each galaxy. For example,the module handling the hot gas halo surrounding a galaxy defines an ordinary differential equation (ODE) which includes terms for both cosmological accretion and cooling. The galactic disk module defines an ODE for conversion of gas into stars. Then, these are all just fed in to an ODE solver and it evolves them to a specified accuracy. This removes the need for fixed timesteps adopted in similar models, means that cooling and star formation etc. are all treated simultaneously, and makes the whole approach quite clear. There are a couple of additional features needed - e.g. the modules can define “interrupts” so that the ODE solver stops – this can be useful if they need to create a new component (e.g. the first time gas cools and infalls it needs to create a disk component) or to handle discrete events (e.g. if a merger occurs the ODE solver is interrupted, the merger processed, and then the ODE solver starts up again), and they additionally to handle tasks such as storing the history of star formation (or other properties) of a galaxy if these are need to compute, for example, delayed metal production rates.
All code Code
- Version control system:
- Programming languages:
- Fortran 2003, Perl
All bugs Latest bugs reported
Bug #1130720: in Cooling_Function_Initialize coolingFunctionsMatched=0
Reported on 2013-02-20
Bug #1066052: Crash due to zero-size spheroids
Reported on 2012-10-12
Bug #1053153: Floating exception in tree_node_black_hole_mass_rate_compute_standard
Reported on 2012-09-19
Bug #1011471: Can't open module file 'galacticus_imf_module.mod' for reading at | rev 835
Reported on 2012-06-11
Bug #1007013: OpenMP related random crashes after pulling latest release
Reported on 2012-05-31
All blueprints Latest blueprints
Adding general solvers for excursion set first crossing distributions
Registered on 2011-11-29
Adding intracluster light calculations
Registered on 2011-09-12