How Galacticus Evolves Halos and Galaxies - galacticusorg/galacticus GitHub Wiki

Galacticus evolves halos and galaxies using its "evolver engine", which works by applying various "operators" to the "components" which make up a halo/galaxy system. Here's a schematic - click (you may have to middle-click to make this work) on any item for more details.

flowchart LR
  Components([Components])
  Operators
  Functions
  Engine[Engine](/galacticusorg/galacticus/wiki/Engine)
  Engine --> Components
  Components --> Engine
  Operators --> Engine
  Functions --> Operators
  click Components href "https://github.com/galacticusorg/galacticus/wiki/How-Galacticus-Evolves-Halos-and-Galaxies#components" "Things that make up a galaxy (disk, spheroid, etc.)"
  click Engine href "https://github.com/galacticusorg/galacticus/wiki/How-Galacticus-Evolves-Halos-and-Galaxies#engine" "Applies operators to components to evolve them forward in time"
  click Operators href "https://github.com/galacticusorg/galacticus/wiki/How-Galacticus-Evolves-Halos-and-Galaxies#operators" "Processes that act on components"
  click Functions href "https://github.com/galacticusorg/galacticus/wiki/How-Galacticus-Evolves-Halos-and-Galaxies#functions" "Define the functional forms of processes"
 style Operators fill:#ff02ff
 style Components fill:#ff1212
 style Functions fill:#1212ff,color:#ffffff

Consider the following, highly simplified, description of how the process of star formation causes the mass of stars, $M_\star$, to increase with time, while simultaneously decreasing the mass of the ISM, $M_\mathrm{ISM}$:

$$ \frac{\color{magenta}\mathrm{d}\color{red}M_\star}{\color{magenta}\mathrm{d}t} = \color{magenta}+\color{blue}\frac{M_\mathrm{ISM}}{\tau_\star} $$

$$ \frac{\color{magenta}\mathrm{d}\color{red}M_\mathrm{ISM}}{\color{magenta}\mathrm{d}t} = \color{magenta}-\color{blue}\frac{M_\mathrm{ISM}}{\tau_\star} $$

Components

The variables highlighted in red represent physical quantities - in this case the masses of stars and ISM in the galaxy. These are provided by a "component" (e.g. a galactic disk) in Galacticus.

Operators

The operators highlighted in magenta represent a physical process - in this case the process of star formation, which moves mass from the ISM to the stars. Physical processes in Galacticus are implemented by the nodeOperatorClass.

Functions

The function highlighted in blue represents the actual physics of that process - in this case it describes the rate of star formation. Such functions in Galacticus are provided by numerous different functionClass objects - e.g. starFormationRateDisksClass in the case of star formation rates in galaxy disks.

Engine

Galacticus' evolver engine works by applying a set of nodeOperatorClass objects to each node in a merger tree in turn - gradually evolving the components in that node forward in time in accordance with the physical processes described by those nodeOperatorClass objects. The engine consists of the mergerTreeEvolverClass and mergerTreeNodeEvolverClass classes.