Friends-Of-Friends Parameters

The FOF section of the parameter file contains all the options related to the group finder. Some parameters only make sense in the stand-alone version and some only in the on-the-fly version of the module.

The main parameter is the linking length that will be used. The easiest way to define it is to set the ratio of the linking length to the mean dark matter inter-particle separation (irrespective of whether there are other kinds of particles present in the run). This is done using the parameter linking_length_ratio and the typical value used is 0.2. Users can optionally overwrite the linking length by imposing an absolute value using the parameter absolute_linking_length. This is expressed in internal units. This value will be ignored (and the ratio of the mean inter-particle separation will be used) when set to -1.

The categories of particles are specified using the linking_types and attaching_types arrays. They are of the length of the number of particle types in SWIFT (currently 7) and specify for each type using 1 or 0 whether or not the given particle type is in this category. Types not present in either category are ignored entirely.

The second important parameter is the minimal size of groups to retain in the catalogues. This is given in terms of number of particles (of all types) via the parameter min_group_size. When analysing simulations, to identify haloes, the common practice is to set this to 32 in order to not plague the catalogue with too many small, likely unbound, structures. When using the FOF code on-the-fly for black hole seeding, larger values are recommended as there is no need to store groups much smaller than the minimal halo mass (see below).


In the case of black holes seeding, we run the FOF module on-the-fly during a cosmological simulation. Black hole seeding is enabled with the following parameter:

  • Enable seeding of black holes in FOF groups: seed_black_holes_enabled

This should be set to 1 to enable or 0 to disable black hole seeding. The time of the first FOF call for seeding is controlled by the following two options:

  • Time of the first FOF call (non-cosmological runs): time_first,

  • Scale-factor of the first FOF call (cosmological runs): scale_factor_first.

One of those two parameters has to be provided depending on the type of run. In the case of non-cosmological runs, the time of the first FOF call is expressed in the internal units of time. Users also have to provide the difference in time (or scale-factor) between consecutive outputs:

  • Time difference between consecutive outputs: delta_time.

The last parameter relevant to the on-the-fly FOF module is the minimal halo (group) mass considered for seeding black holes. This is specified by the parameter black_hole_seed_halo_mass_Msun which is expressed in solar masses.

There are two ways to invoke FOF on the fly for purposes other than black hole seeding:

Firstly, one can switch on the invoke_fof parameter in the Snapshots section of the parameter file. This will produce a catalogue every time the code writes a snapshot.

The second option is to set dump_catalogue_when_seeding in the FOF section. This will force the code to write a catalogue every time the BH seeding code is run.


In the case of the stand-alone module, the five seeding parameters described above are ignored but an additional one needs to be specified. This is the name of the file in which the catalogue of groups will be written. This is specified by the parameter fof_output. The linking length and minimal group to keep are set in the way described above.

There are two additional optional parameters that can be used to modify details of the stand-alone FOF code. The GroupID of the particles that do not belong to any groups is by default set to 2147483647 (i.e. \(2^{31}-1\)). A different value can be specified by changing the optional parameter group_id_default. Similarly, the first group in the catalogue (i.e. the largest group) carries the GroupID 1. This can be changed by tweaking the optional parameter group_id_offset.


A full FOF section of the YAML parameter file looks like:

# Parameters of the Friends-Of-Friends module
FOF:
   basename:                        fof_output  # Filename for the FOF outputs.
   scale_factor_first:              0.91        # Scale-factor of first FoF black hole seeding calls.
   time_first:                      0.2         # Time of first FoF black hole seeding calls.
   delta_time:                      1.005       # Time between consecutive FoF black hole seeding calls.
   min_group_size:                  256         # The minimum no. of particles required for a group.
   linking_types:                   [0, 1, 0, 0, 0, 0, 0]  # Which particle types to consider for linking    (here only DM)
   attaching_types:                 [1, 0, 0, 0, 1, 1, 0]  # Which particle types to consider for attaching  (here gas, stars, and BHs)
   linking_length_ratio:            0.2         # Linking length in units of the main inter-particle separation.
   seed_black_holes_enabled:        0           # Do not seed black holes when running FOF
   black_hole_seed_halo_mass_Msun:  1.5e10      # Minimal halo mass in which to seed a black hole (in solar masses).
   dump_catalogue_when_seeding:     0           # (Optional) Write a FOF catalogue when seeding black holes. Defaults to 0 if unspecified.
   absolute_linking_length:         -1.         # (Optional) Absolute linking length (in internal units).
   group_id_default:                2147483647  # (Optional) Sets the group ID of particles in groups below the minimum size.
   group_id_offset:                 1           # (Optional) Sets the offset of group ID labelling. Defaults to 1 if unspecified.