MatchMaker is a simple MPI-parallel FoF halo finder.
The algorithm is as follows:
- Read particles and separate amongst nodes according to their position along the x-axis in equi-spaced intervals.
- Communicate particles in a small buffer at the beginning of each node's interval to the node on the left.
- Each node runs the FoF starting only with particles within its own interval, but allowing them to be friends with particles from the right node's buffer.
- Resolve redundant halos. A halo found by node A with particles in the buffer of its right node (A+1) has precedence over the one found by the A+1 (because it also contains particles from the node's interval). For this algorithm to succeed the size of the buffer has to be larger than the size of the largest halo in the simulation. For normal runs a buffer of 5-10 Mpc/h should therefore be safe.
- Compute halo properties (see below).
MatchMaker doesn't depend on any external libraries (besides MPI), just type "make". Look at the Makefile in order to tweak compilation flags.
The behavior of MatchMaker is controlled by a param file that is fed to the code as a single command-line argument. A sample param file is provided (param_sample.ini). The comments within it should be sufficient to understand the role of each parameter.
Once compiled just type:
mpirun -np number-of-processors ./MatchMaker param-file
In its current version MatchMaker only reads snapshot files in GADGET-1 format, and assumes periodic boundary conditions. MatchMaker reads off a lot of information from the snapshot's header, so make sure the contents of this header are correct! Furthermore, the code currently assumes that all positions are given in units of Mpc/h, velocities in km/s and masses in 10^10 M_sun/h. The results are also provided in these units.
Three output formats are provided, given by the parameter "output_format" in the parameter file. These are :
- ASCII : normal text file (ASCII).
- FITS : FITS binary table.
- BINARY : MatchMaker's own binary format.
ASCII and FITS will contain a 29 columns, corresponding to the quantities:
- "ID" - Unique Halo ID
- "NP" - Number of particles
- "MASS" - Mass (in units of M_sun/h)
- "PX_CM" - Center of mass position (in units of Mpc/h)
- "PY_CM"
- "PZ_CM"
- "PX_RMS" - Standard deviation of the particle positions
- "PY_RMS" (in units of Mpc/h)
- "PZ_RMS"
- "VX_CM" - Center-of-mass velocity (in km/s)
- "VY_CM"
- "VZ_CM"
- "VX_RMS" - Velocity dispersion (in km/s)
- "VY_RMS"
- "VZ_RMS"
- "LX" - Angular momentum (in units of Mpc/h * km/s)
- "LY"
- "LZ"
- "B" - Ratio between the second and first (largest) eigenvalues of the inertia tensor
- "C" - Ratio between the third (smallest) and first (largest) eigenvalues of the inertia tensor
- "EAX" - Eigenvector for the first (largest)
- "EAY" eigenvalue of the inertia tensor
- "EAZ"
- "EBX" - Eigenvector for the second eigenvalue of the
- "EBY" inertia tensor
- "EBZ"
- "ECX" - Eigenvector for the third (smallest) eigenvalue
- "ECY" of the inertia tensor
- "ECZ"
The halos are ordered by mass (largest to smallest). An example showing how to interpret the MatchMaker binary format is given in sample/test_read_binary.c. The directory "sample" also contains a sample MatchMaker output file for each of the three output formats (.txt -> ASCII, .dat -> BINARY, .fits -> FITS).
MatchMaker is distributed under the GNU Public License v3 (see COPYING for details).
For questions or queries e-mail the author David Alonso:
david dot alonso at astro dot ox dot ac dot uk