Galacticus: A Semi-Analytic Model of Galaxy Formation

Registered 2010-02-11 by Andrew Benson

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.

Project information

Team Galacticus
Team Galacticus
Development focus:

v0.9.2 series 

Browse the code

Programming Languages:
Fortran 2003, Perl
( The California Institute of Technology shall allow RECIPIENT to use and distribute this software subject to the terms of the included license agreement with the understanding that: THIS SOFTWARE AND ANY RELATED MATERIALS WERE CREATED BY THE CALIFORNIA INSTITUTE OF TECHNOLOGY (CALTECH). THE SOFTWARE IS PROVIDED "AS-IS" TO THE RECIPIENT WITHOUT WARRANTY OF ANY KIND, INCLUDING ANY WARRANTIES OF PERFORMANCE OR MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE OR PURPOSE (AS SET FORTH IN UNITED STATES UCC §2312-§2313) OR FOR ANY PURPOSE WHATSOEVER, FOR THE SOFTWARE AND RELATED MATERIALS, HOWEVER USED. IN NO EVENT SHALL CALTECH BE LIABLE FOR ANY DAMAGES AND/OR COSTS, INCLUDING, BUT NOT LIMITED TO, INCIDENTAL OR CONSEQUENTIAL DAMAGES OF ANY KIND, INCLUDING ECONOMIC DAMAGE OR INJURY TO PROPERTY AND LOST PROFITS, REGARDLESS OF WHETHER CALTECH BE ADVISED, HAVE REASON TO KNOW, OR, IN FACT, SHALL KNOW OF THE POSSIBILITY. RECIPIENT BEARS ALL RISK RELATING TO QUALITY AND PERFORMANCE OF THE SOFTWARE AND ANY RELATED MATERIALS, AND AGREES TO INDEMNIFY CALTECH FOR ALL THIRD-PARTY CLAIMS RESULTING FROM THE ACTIONS OF RECIPIENT IN THE USE OF THE SOFTWARE. In addition, RECIPIENT also agrees that Caltech is under no obligation to provide technical support for the Software. Finally, Caltech places no restrictions on RECIPIENT's use, preparation of Derivative Works, public display or redistribution of the Software other than those specified in the included license and the requirement that all copies of the Software released be marked with the language provided in this notice. This software is separately available under negotiable license terms from: California Institute of Technology Office of Technology Transfer 1200 E. California Blvd. Pasadena, California 91125 )

RDF metadata

View full history Series and milestones

Galacticus v0.9.2 series is the current focus of development

Get Involved


Galacticus does not have any download files registered with Launchpad.