Nicole Drakos

Research Blog

Welcome to my Research Blog.

This is mostly meant to document what I am working on for myself, and to communicate with my colleagues. It is likely filled with errors!

This project is maintained by ndrakos

MUSIC Code Breakdown

As outlined in this post, I am planning to modify MUSIC to contain neutrinos using the method from Banjeree et al. 2018.

In this post I’m going to breakdown the code structure of MUSIC and think about what I need to alter.

Main File

The main function that needs to be altered is scr/main.cc.

What cases are allowed

For now I am just going to code the simplest case for the neutrinos. Once I’ve trouble shooted, I can add more functionality if I want

Breakdown of main function

Here are some important points of the code:

Initialization

1LPT branch

2LPT branch

Finish output and cleanup

Output File

The functions for calculating DM positions, velocities, ect are in the output files. For our case, we want to write them for Gadget2, so the file we will need to alter is output_gadget2.cc.

I’ll include functions for write_nu_mass, write_nu_position and write_nu_velocity.

Note that Gadget2 is not built to consider neutrino particles specifically. They have 6 different particle types. However, from the Gadget2 User Guide:

“The code distinguishes between different particle types. Each type may have a different gravitational softening. As far as gravity is concerned, all the types are treated equivalently by the code, the names ‘Gas’, ‘Halo’, ‘Disk’, ‘Bulge’, ‘Stars’, and ‘Bndry’, are just arbitrary tags, still reflecting GADGET-2’s origin as a tool to study colliding galaxies. However, the particles of the first type (‘Gas’) are indeed treated as SPH particles, i.e. they receive an additional hydrodynamic acceleration, and their internal entropy per unit mass is evolved as independent thermodynamic variable.”

Therefore, I can decide that, e.g. Bndry can be used to mean neutrinos, and set the particles here.

Extra Parameters

Will need to alter the parameter file as described below to take in the extra variables.

[setup]

[cosmology]

Options that I am NOT considering: The non-degenerate case, other methods of discretizing the Fermi-Dirac distribution.

Questions

Here are some questions that came up when reading the paper, and from talking to Bruno.

  1. In B18 they say the “modify a version of N-GenIC that computes displacements and peculiar velocities accounting for the fact that in cosmologies with massive neutrinos the growth factor and growth rate are scale dependent”. I need to look at the papers they referenced here, and make sure I don’t have to change anything with the way, e.g., σ8 is defined.
  2. In B18 the authors turn off the short-range force for neutrinos at early times (they turn it on at z=9). This is because their method for generating initial conditions produces multiple neutrino particles in the same position, and when Gadget constructs its tree, particles at very close positions are randomized to complete the tree construction, leading to artifacts in the simulation. Should I just turn off the tree part of Gadget for now? I think Bruno said he won’t be using a tree algorithm in Cholla.
  3. Do I need to change the transfer function at all when including neutrinos?
  4. Will the fast-moving neutrino particles cause a problem with the time-stepping in Gadget?

« Neutrino Velocity Assignment Test
Neutrino Implementation in C »