For a current list of all tools automatically built as part of the current Starlab distribution, click here.

The simplest way to use Starlab is to chain commands via UNIX pipes, redirecting output streams as appropriate. For example, to

- create a W0 = 5 King model of 10000 (unlabeled) particles
- add a Salpeter mass spectrum between 0.2 and 20 solar masses
- scale to standard units
- integrate the motion forward in time for 100 dynamical time units, with log output every 1 time unit, snapshot output every 10 units,

(makeking -w 5 -n 10000 | makemass -l .2 -u 20 -x -2.35 | scale -s | kira -t 100 -d 1 -D 10 > snapshot ) >& log

The Starlab tools (as of 10/98) are listed below. An up-to-date
list may be found in the file `TOOLS` in the Starlab
distribution. For online information on usage, type

"tool-name --help"or

"tool-name --HELP"

*Notes:*

- Most tools are just simple interfaces onto the corresponding library functions, so virtually all of the functionality listed below is accessible in both command-line (piped) and program (compiled) contexts.
- All tools are routinely written in terms of the simplest class
possible. Thus, for example, Starlab's data structure ensures that
tools written for
`node`s will also work with`dyn`s and`hdyn`s. However,`hdyn`tools generally use some specific aspect of the`hdyn`class, and will not work with`node`or`dyn`input snapshots.

Basic Starlab tools (as of January 1999) are as follows. Tools
which create new N-body systems are indicated with an asterisk; other
tools read snapshots from `stdin` and write snapshots to
`stdout`.

**1. TOOLS OPERATING ON nodes.**

`node/util``add_daughter_node`add one extra node to the tree structure in the input snapshot `display_subtrees`output all subtrees in input snapshot(s), neglecting the root and top-level nodes `mass_dist`compute a mass histogram from the input snapshot(s) `m_bar`determine the mean mass of a power-law mass distribution `makemass`add a mass spectrum to an input snapshot `*makenode`create a linked list of equal-mass nodes `makesecondary`create binary secondary components for randomly selected stars in the input snapshot `*make_single_node`create a single node `pretty_print_tree`print out the tree structure of the input snapshot(s) `print_normal`print out the tree structure of the input snapshot(s) in normal form `rmq`remove a quantity from the dyn (or star or hydro) story of the input snapshot(s) `setmass`set the mass of one or more particles in the input snapshot `snapprune`pass through only one out of every k snapshots from the input stream

**2. TOOLS OPERATING ON dyns.**

`node/dyn/init``addplummer`apply a Plummer-model spatial and velocity distribution to an existing snapshot `makebinary`add binary orbits to an existing binary tree `makecube`construct a simple *homogeneous cube `makeheavystar`double the mass of one or more stars in a snapshot `*makeking`construct a King model `*make_aniso_king`construct an anisotropic King model `*makeplummer`construct a Plummer model, with a spatial or mass cut-off `*makepyth`set up a 3-body system corresponding to the Pythagorean problem `*makesphere`construct a simple homogeneous sphere `*makewrite`turn a text file into a snapshot `readatos`create a Starlab snapshot from NEMO ``atos'' format data `readp`create a Starlab snapshot from simple `dumbp`format data`split_particles`split specified particles in input snapshot `node/dyn/util``compute_com`determine the center of mass of an N-body system `compute_density`compute local densities around particles based on k-th nearest neighbors `compute_max_cod`determine the max density center for an N-body system `compute_mean_cod`determine the mean density center for an N-body system `dumbp`dump out an N-body system in a format suitable for input to NBODY1-5 `dyndiff`compute the rms distance in phase space between two N-body systems `dyndist`compute statistics for the separations between corresponding particles in two N-body systems, using both configuration space and velocity data `energy`print out the energy of an N-body system `extract_snap`find and print the last snapshot, or the first snapshot following a specified time `flatten`flatten a dyn tree to a single-level linked list `freeze`set all velocities to zero, leaving positions unchanged `lagrad`compute Lagrangian (mass) radii for an N-body system `lagradplot`compute and plot Lagrangian radii for N-body system(s) `molecules`print a hierarchical decomposition of a (small!) system `reflect_velocities`reverse all velocity components in an N-body system `renumber`renumber all particles sequentially `scale`(re)scale an N-body system to specified M, Q (=T/U), and E `starplot`plot input N-body system(s) on a non-graphics screen `sys_stats`print out various diagnostic statistics on the input system `to_cod`bring all positions and velocities to center-of-density frame `to_com`bring all positions and velocities to center-of-mass frame `node/dyn/evolve``leapfrog`leapfrog integrator for flat N-body dyn systems `node/dyn/xutil``xstarplot`plot an N-body system in an X environment

**3. TOOLS OPERATING ON _dyn_s.**

`node/dyn/_dyn_``flat_hermite`Hermite N-body integrator (flat trees only)

**4. TOOLS OPERATING ON hdyns.**

`node/dyn/hdyn/evolve``kira`Hermite N-body integrator with evolving hierarchical tree structure, stellar and binary evolution, and an external tidal field `node/dyn/util`(use GRAPE if available)`get_densities`compute densities associated with all top-level nodes `hdyn_pp3`detailed output on all nodes `hscale`(re)scale an N-body system to specified M, Q (=T/U), and E `hsys_stats`print out various diagnostic statistics on the input system `node/dyn/hdyn/xutil``hxstarplot`plot an N-body system in an X environment (supercedes dyn version)

**5. TOOLS OPERATING ON sdyn3s.**

`node/dyn/hdyn/sdyn3/scatter3``low_n3_evol`three-body time-symmetrized Hermite integrator `rate3`compute Maxwellian averaged cross-sections for 3-body scattering `scatter3`perform three-body scattering experiments `sigma3`determine cross-sections for 3-body scattering `tree3_evolve`simpler interface to low_n3_evolve `node/dyn/hdyn/sdyn3/xutil``xstarplot3`plot an N-body sdyn3 system in an X environment

**6. TOOLS OPERATING ON stars.**

- To come...

**7. TOOLS OPERATING ON sdyns.**

`node/dyn/hdyn/sdyn/init``makescat`write a general scattering configuration to cout `node/dyn/hdyn/sdyn/util``make_tree`hierarchically decompose a flat tree into substructure `node/dyn/hdyn/sdyn/evolve``low_n_evolve`time symmetrized Hermite integrator for low-N systems `scatter`simple N-body scattering program `tree_evolve`simpler interface to low_n_evolve