Decide which type of particles are to be grouped. This could be
either dark matter particles, gas particles, star particles or gas
and star particles depending on what is in the input tipsy binary
file.

Calculate the densities (same method as used by
smooth)
of these particles (those considered
for grouping only) and keep those which satisfy a certain cut criterion.
Call these particles the moving particles. The cut criterion
depends on the type of particle. For dark matter particles, keep only those
with densities greater than or equal to a minimum density specified
by the user. For gas particles, keep only those satisfying the minimum density
criterion and in addition those satisfying a maximum temperature
criterion (again specified by the user). In effect we keep only the cold
dense gas. For star particles there is no extra criterion, they are
all considered as moving particles.

Now we slide these moving particles along the initial
density gradient toward higher density (hence moving). If particles move less
than a user specified distance (eps) over several iterations they
are no longer moved as they are now oscillating in a high density well.

This process of moving particles continues until all the particles stop
moving and are localized in eps sized, high density regions.

Next we group together these localized particles using the friends-
of-friends method with a linking-length of eps. Note that two high
density regions seperated by less than about 2*eps will be grouped together
by this method. This forms the initial groups of particles.

We reject groups with less than a user specified minimum members
number of particles.

Now particles which are not bound to their group are removed from the
group, by the unbinding procedure (to be discussed in more detail
below).

One more rejection of groups with less than minimum members number
of particles is performed and various group information (to be discussed below)
is written to three different output files.

There are seven possible types of tipsy binary files. The SKID program will
group different types of particles depending on the type of input binary file.
Here is how SKID groups particles for each case:

Dark matter only: density and density gradients are calculated
from all the particles, and the moving particles are those meeting the minimum
density criterion.

Gas only: density and density gradients are calculated from all
the particles, and the moving particles are those meeting both minimum density
and maximum temperature criteria.

Star only: density and density gradients are calculated from all
the particles, and all particles are moved.

Gas and dark matter: density and density gradients are calculated
from the gas particles only, and the moving particles are the gas particles
which meet the density and temperature criteria.

Stars and gas: density and density gradients are calculated from
the star particles only, and the moving particles are all the star particles.

Stars and dark matter: Same as the stars and gas case.

Stars and gas and dark matter: density and density gradients are
calculated from all the star particles and all the gas particles. The moving
particles are then the gas particles meeting the density and temperature
criteria and all the star particles.

Once groups with at least a certain minimum number of members have been
determined, SKID will remove particles which are not bound to the group.
SKID must use the original positions of all the particles to
determine whether or not particles are bound.
This procedure which we call unbinding, is again dependent on the
type of grouping we are dealing with. There are two cases, one for dark
matter only or star particles only (case 1 unbinding), the other for
inputs including gas (also stars in a dark matter environment this is
case 2 unbinding). The following outlines (conceptually) how
unbinding is done for each group that was found:

Case 1 unbinding:

Calculate the potential energies of all the particles in the group
taking into account the redshift of the simulation to get physical distances
(if units of the input file are physical then the redshift is just set
to zero).

The center of mass and center of mass velocity of all particles in
the group are found. The velocity relative to the center of mass velocity is
found for all particles in the group. This relative velocity is converted to
a physical velocity and corrected to include the Hubble flow (again if the
simulation is in physical coordinates this is satisfied by setting redshift
to zero and Hubble's constant to zero). Then the kinetic energy with respect
to the center of mass is found for each particle.

The least bound particle is found. If this particle is in fact
bound then we have completed unbinding this group. If the particle is not
bound then we remove it from the group and go back to step 1.

Note that as particles are removed from the group the center of mass changes,
the center of mass velocity changes (hence also the kinetic energies) and
the potential energies of the particles is reduced.

Case 2 unbinding:

For gas the approach to unbinding has to be slightly different. For example,
a galaxy depends on its dark matter environment for it to be bound. In these
cases we include some of the environment of each group in the calculation of
the potential energies.

Calculate the potential energies of all the particles in the group
in the same way as in case 1 unbinding.

Include the potential contribution of all mass within a 2*eps ball about
the center of the localized (or moved) positions of the particles in the group.
In otherwords we want to include some of the environment about the density
maximum.

The center of mass and center of mass velocity is calculated as in case 1
unbinding and from this the kinetic energies of the particles are determined
(again in the same way as case 1 unbinding).

The least bound particle is found. If this particle is in fact
bound then we have completed unbinding this group. If the particle is not
bound then we remove it from the group and go back to step 3.

Once again the center of mass, center of mass velocity and kinetic energies
of the particles changes each time a particle is removed. However, in this
case the potential energies remain fixed since any particle removed is
considered to also be a part of the environment of the group.

SKID produces three different output files, by default a skid.grp
file, and a skid.gtp file. Optionally a skid.ray file.
Here is what they contain:

skid.grp: This file is in tipsy array format
and contains the
group number to which each particle in the input file belongs. Group number
zero means that the particle does not belong to a group. This file can be
read in by
tipsy
to color each particle by its group number (see
picture
), or to look at only the group
particles, etc. This output could also be used by a subsequent analysis
tool.

skid.ray: This file is in tipsy vector format and
contains a vector for each particle pointing from the initial position to
the final localized (or moved) position. This file can also be read in by
tipsy and can be used to create a
hedgehog
plot. This is very useful for understanding how SKID finds the groups.

skid.gtp: This file is in tipsy binary format (same format
as the input to SKID) and contains onestar particle to
represent each group. Each particle in this file has as its position the
center of the density maximum, as its velocity the center of mass velocity of
the group (all in comoving coordinates if applicable), and as its mass the
total mass of the group. The radius of the group is also recorded in the
star_particle.eps field (also input file's time in the star_particle.tform
field) for each star (group) particle. See the file
tipsydefs.h for the structure of the tipsy
binary format.

Skid version 1.3 is a much improved version of the old denmax-1.1 version.
The new name was given to avoid confusion with the DENMAX program of
Gelb & Bertschinger, and although it is based on the same idea it
represents a substantial evolution in the method. Refer to the man page
to get aquainted with the new features of skid-1.3.

There is also a demo script, which will use a sample file included in
the tar file. The sample tipsy binary file is in the XDR standard binary
format and is converted to a native binary with totipnat, also
included in the tar file.

Use of SKID

For a description of command line arguments and more detailed
information on the use of skid, see the
MAN page.