To-do

Optimisation

This is a priority for v0.5 of the code prior to wider distribution.

  • Convert push_snap to C. This will require switching to using numpy structured arrays for graphs.

  • Better timing tests needed to determine the efficiency of the code, ideally by comparison with the release version of L-Galaxies.

Major structural development

  • Implement MCMC to optimise parameters

  • Implement multiple metallicities

  • Implement resolved discs

Pre-processing development

  • Write helper routines to convert from other tree formats to py-gal input. A version now exists for Millennium trees (which does, however, still generate a very few broken graphs).

Minor structural development

  • (Possibly) cool from subhalos onto the central galaxy every galaxy timestep (currently done every halo timestep).

  • Option to pre-process merger graph to convert it to a tree:

    • for comparison with other models, specifically L-Galaxies

    • could possibly be a run-time option within L-Galaxies (give everything to main descendant) but should work out of the box with tree as input.

  • Code to locate the central subhalo (if any) in a halo.

  • Need angular momentum of halos from merger graph:

    • follow angular momentum of gas and stellar discs.

    • investigate using shrinking of disc in mergers to trigger starburst.

Galaxy physics modules to import from L-galaxies

  • Reincorporate gas onto halos: Basic version completed

    • implement infall from Ejected phase using new prescription.

  • Hot gas cooling onto galaxy: Basic SIS version completed and tested.

    • need better version of merger graphs so can use angular momentum of halo.

    • implement a beta model for the hot gas distribution.

    • add resolved galactic discs

  • Star formation and feedback: Unresolved version implemented

    • add resolved galactic discs with inflow of gas

  • AGN accretion and feedback: BH growth implemented

    • Add in calculation of quasar luminosity.

    • Implement feedback models

  • Galaxy merging: Basic version with instantaneous merging implemented

    • ideally need a way of determining merger time.

    • triggering starburst (does this need to be explicit, or can it arise naturally from contraction of disc?).

  • Stripping:

    • Need to implement stripping of non-central galaxies (and subhalos).

Plotting developments

  • Generic interface to add observations to plots

  • Galaxy stellar mass function

  • Luminosity functions (requires code to generate SEDs from star formation history)

  • Stellar to halo mass ratio

Documentation

  • Add in API for C code.

  • Check through documentation before public release as some may have become outdated.

Pedagogy

  • Write a galaxy formation primer that gradually switches on the astrophysics, one step at a time, and illustrates the effect on the galaxy population.

Testing

  • Determine the cause of halos with excessively large baryon fractions – should probably wait until we have better input graphs.

Known issues

  • code-helper/Millennium_to_pygal.py

    • produces the very occasional halo that is not in the final snapshot yet has halo.desc_start_gid=-1 (these should have been eliminated). A specific example is Millennium input tree #5, graph_ID = 122 , snap_ID = 47 , halo_gid = 945.

    • produces many halos with baryon fractions exceeding the universal value, including one as large as 15 – review the baryon fraction calculation.