Raw File
TODO tasks. Please put higher priority items higher up, within a

Scientific accuracy

* general
   - Do T^3 r_+ distances throughout, to avoid wasting
      computational area at the faces of the fundamental domain: are there
      any missing?

* init-conditions

   - The mass for a single dark matter particle in a run using Ncroot=128,
      Lbox=80, OmegaM=0.3, OmegaL=0.7 and Hubble0=70 is about 2e10
      M_\odot. Together with the setting of rockstar_min_halo_particles=5,
      this gives a halo mass detection threshold of 1e11 M_\odot. It would
      be reasonable to improve this in the future to get towards the dwarf
      regime. Simulations with higher particle resolution should show the
      effects for lower mass host haloes.

* run-simulation

* detect-haloes

* create-mergertree

* create-galaxies

Contribute back to the community

* Consider uploading some of the hacks as git branches + pull requests
      to the upstream packages, and/or to individual repositories
      (io_gadget/merge_gadget.c, io_gadget/read_gadget.[ch]).

* detect-haloes
   - Email reminder to Peter Behroozi + Manodeep to suggest that they
   handle the rockstar and consistent-trees Issues from 2019 and early

   - Report gcc-10.1.0 -fno-common default upstream to rockstar, with -fcommon
      as temporary hack (as of 2020-08-08, this is still waiting to be
      confirmed if this is the way to fix this bug/feature of gcc-10.1.0).

   - Propose our patch 20200918_rockstar_pid_file.patch for writing out
      pid's to a file, for ease of killing of orphan processes, upstream
      to rockstar.

   - Discuss (same or separate issue) the risks of having
      orphan rockstar main processes running in parallel with a
      minimal working example as evidence that independent sessions in
      independent directories, by the same user on the same machine,
      could have the second server (the one started with -c auto-rockstar.cfg)
      communicate with the wrong first server (the one started
      with -c server.cfg).

* create-galaxies

* paper.mk
   - Contribute the rule 'clean-paper' upstream to Maneage. This avoids
      having to redo the full calculations when you only want to regenerate
      LaTeX macros from calculation/analysis/plotting output files.

Software maintainability/security/convenience

* General

** There are many np.where calls in the python scripts that are not
   protected right and may fail in some cases; the general form
   (np.array(np.where(<some logical test>)))[0] should work in all cases
   where we want a 1D numpy array. Any fixes for this should be properly
   tested, of course.

** Most of the more modular python scripts have unit tests; these should be
   run automatically and checked.

** Most of the long make rules can be made much easier to read and debug
   thanks to .ONESHELL: and .SHELLFLAGS = -ec; see

* init-conditions
   - If/when Simon Prunet updates mpgrafic to fftw3, then update the
   version used here.

* run-simulation
   - Update to a more modern version of RAMSES. Unless
   ramses-scalav/inhomog are going to used sooner or later, these can be
   decoupled from RAMSES itself, reducing the number of dependencies.

* create-mergertree

* detect-voids
   - Update to Revolver commit cbaf2d5 from 2019-08-16 for python3.

   - The Revolver main script revolver.py appears to have a missing 'main'
   part; the main python_tools/*.py scripts appear to be missing these
   too. See
   e.g. https://stackoverflow.com/questions/4041238/why-use-def-main

   - The sharable library io_gadget.so should not have to be copied into
   the working directory.

* analyse-plot
   - The % notation for writing to a string is no longer recommended in
   python - this should be updated in reproduce/analysis/python/*.py .

   - Does recompiling revolver force healpy and healpix to be recompiled?
   If yes, then this should be unnecessary - remove this wrong dependence.

   - Some multiprocess parallelisation of the python analysis/plotting
   routines would make sense - it's ironic to run an N-body simulation on M
   threads reasonably fast and then do the final analysis very slowly on
   just one.

   - Do more checks for the validity of input files, since old undeleted
   files can give infinite loops in the section
   "for sage_infall_file in glob.iglob(sage_outs + '**/infall*.list', recursive=True):"
back to top