Particle Unbinding#
Quickstart Guide#
To activate particle unbinding, you need to set two runtime parameters in the &RUN_PARAMS namelist (in addition to whatever you have in there):
&RUN_PARAMS
clumpfind=.true.
unbind=.true.
/
The code will create output_XXXXX/unbinding_XXXXX.outYYYYY files following the same logic as the other particle
output files output_XXXXX/part_XXXXX.outYYYYY files.
They will contain the associated clump ID of each particle.
In only works when particles, i.e. dark matter, is present in your simulation.
Important notes#
You can’t do particle unbinding without doing clump/halo finding.
Some parts of the code (e.g. binning particles in mass profiles of halos) rely on consistent floating-point operations. The (intel) fortran compiler however doesn’t necessarily use value-safe optimisations, which may lead to errors resulting in warnings, but the code doesn’t crash. The error should be small (~1e-16), and you may choose to ignore it. Otherwise, you might want to compile the code with the
-fp-model preciseflag for intel, or the appropriate flag for the compiler you’d like to use.The previously available
unbinding_formatted_outputnamelist parameter has been removed. Make sure you remove it from your namelists if you used it!For anything else regarding particle unbinding, feel free to contact Mladen Ivkovic (mladen.ivkovic [at] hotmail DOT com)
Documentation#
What it does#
The purpose of particle unbinding is to identify unbound particles in clumps as identified by the clumpfinder and pass them on to the parent clumps, until the halo-namegiver clumps are reached (where there are no more parent structures to pass the particles on to.)
It will write unformatted output in output_XXXXX/unbinding_XXXXX.outYYYYY files the same way it is done for
any other backup files in ramses, containing the assigned clump IDs of every particle after unbinding. The
clump IDs correspond to the clump IDs as used in the halo_XXXXX.txtYYYYY and clump_XXXXX.txtYYYYY files.
If a particle has clump ID 0, it wasn’t found to be in any clump.
How it works#
First all particles that are in a clump are gathered and assigned the corresponding clump ID.
Simultaneously, linked lists of these particles are created for each clump that is not a halo-namegiver, i.e.
that is not a clump whose ID will be the halo ID. Such clumps are never merged into another clump, but may have
arbitrarily many clumps merged into them. Then clump properties such as centre of mass, the mass profile and bulk
velocity are acquired using the linked lists. Starting with the lowest clump level, particles are checked if they
are bound to the clump they are assigned to. By default, this unbinding is done iteratively: The clump properties
are recomputed using only the remaining particles, and then all particles checked again. Furthermore, by default
particles are not allowed to leave the boundaries of the clump they’re assigned to in order to be considered
bound; For this, the potential at the closest saddle from the clump’s centre of mass to a neighbouring clump is
subtracted from the particle’s energy. (This default behaviour can however be changed with the namelist
parameters saddle_pot and iter_properties). Also note that the bulk velocity and centre of mass of a clump are
recovered using only the bound particles per iteration, the mass profile however always uses all included particles,
including the substructure particles.
The iteration per clump level stops when the bulk density of each clump of that level has converged, i.e.
v_clump_old/v_clump_new < conv_limit (or when a maximal number of iterations is reached). Particles that are
found to be not bound are passed to the parent structure for examination, provided such a structure exists, and the
iterations repeated for the next clump level, provided there are clumps of a higher level.
There are two possibilities implemented to define the clump’s centre. By default, the centre will be the position of the
associated density peak. However using the -DUNBINDINGCOM preprocessing flag, you can make the centre be the
centre of mass, which will also be determined iteratively like the bulk velocity.
More details can be found here.
Namelist Parameters for unbinding#
Can be set in the UNBINDING_PARAMS block
Name |
default |
type |
function |
|---|---|---|---|
|
|
logical |
write resulting clump properties based on particles after unbinding, not default cell-based properties |
|
|
integer |
Number of bins for the mass binning of the cumulative mass profile. Any integer > 1. |
|
|
logical |
use logarithmic binning distances for cumulative mass profiles (and gravitational potential of clumps). If false, the code will use linear binning distances. |
|
|
logical |
Take neighbouring structures into account; Cut potential off at closest saddle. |
|
|
logical |
whether to unbind multiple times with updated clump properties determined by earlier unbindings |
|
|
real |
convergence limit. If |
|
|
integer |
maximal number of loops per level for iterative unbinding (in case a clump doesn’t converge) (shouldn’t happen) (only used when |