Anatomy of a Run¶
Everything Galacticus does is a task. The default task, evolveForests, is the galaxy formation pipeline: build or read merger trees, apply any tree operators, evolve every tree with the engine, write the requested outputs, and finalize the on-the-fly analyses. Other tasks build external tools and tabulations, analyze N-body simulations, run Bayesian parameter estimation, or perform radiative transfer, and several tasks can be chained with the multi task. Below is the order of operations for the default task; each box links to the class that controls it.
flowchart LR
Task[<a href='https://galacticus.readthedocs.io/en/latest/physics/task.html' style='text-decoration: none'>Task</a>]
Constructor[<a href='https://galacticus.readthedocs.io/en/latest/physics/mergerTreeConstructor.html' style='text-decoration: none'>Tree Constructor</a>]
Filter[<a href='https://galacticus.readthedocs.io/en/latest/physics/mergerTreeFilter.html' style='text-decoration: none'>Tree Filter</a>]
Operators[<a href='https://galacticus.readthedocs.io/en/latest/physics/mergerTreeOperator.html' style='text-decoration: none'>Tree Operators</a>]
Evolver[<a href='https://galacticus.readthedocs.io/en/latest/physics/mergerTreeEvolver.html' style='text-decoration: none'>Evolver</a>]
Times[<a href='https://galacticus.readthedocs.io/en/latest/physics/outputTimes.html' style='text-decoration: none'>Output Times</a>]
Outputter[<a href='https://galacticus.readthedocs.io/en/latest/physics/mergerTreeOutputter.html' style='text-decoration: none'>Outputter</a>]
Analyses[<a href='https://galacticus.readthedocs.io/en/latest/physics/outputAnalysis.html' style='text-decoration: none'>Analyses</a>]
Task --> Constructor
Constructor --> Filter
Filter --> Operators
Operators --> Evolver
Times --> Evolver
Evolver --> Outputter
Evolver --> Analyses
Operators --> Analyses
Trees that fail the filter are skipped entirely, which is how a run can be restricted to trees whose base node passes a galactic filter (a mass range, say), or to a chosen set of tree indices. Tree operators act on whole trees at four points: before construction, before initialization, before evolution, and after evolution. Examples are pruning branches below a mass, perturbing masses, augmenting trees with unresolved substructure, exporting trees to other formats, and computing tree-level statistics such as conditional mass functions. The output times set both when properties are recorded and where the evolver must stop to record them.