Table of Contents


mcluster - make a star cluster


mcluster -[N|M|P|W|R|r|c|g|S|D|T|Q|C|A|O|G|o|f|a|m|B|b|p|s|t|e|Z|X|V|x|u|h|?]


McLuster is a program that can be used to either set up initial conditions for N-body computations or, alternatively, to generate artificial star clusters for direct investigation. There are two different versions of the code, one basic version for generating all kinds of unevolved clusters (in the following called mcluster) and one for setting up evolved stellar populations at a given age. The former is completely contained in the C file main.c and the header file main.h. The latter (here dubbed as mcluster_sse) is more complex and requires additional FORTRAN routines, namely the Single-Star/Binary-Star Evolution SSE/BSE routines by Hurley which are provided with the McLuster code. For a quick introduction read the README file which is also provided with the code. For technical details on how to generate initial conditions for star cluster in general we would like to refer to Kroupa (2008) and referenced literature therein.


-N <number>
The number of stars may vary from 3 to ~10^6. Remember though that some procedures within the code require ~N^2 computational steps which may take incredibly long. Furthermore, processes like mass segregation and fractalization may temporarily need a lot of memory/or may temporarily generate more stars than the required number. The parameter NMAX within the main routine may have to be set to a higher value then.
-M <value>
(mass of cluster; specify either N or M)
-P <0|1|2|3|-1>
density profile; 0= Plummer, 1= King (1966), 2= Subr et al. (2007) mass-segregated, 3= 2-dimensional EFF/Nuker template, -1= no density gradient)
-W <1-12>
W0 parameter for King model
-R <value>
half-mass radius [pc], ignored for P = 3
-r <value>
scale radius of EFF/Nuker template [pc]
-c <value>
cut-off radius of EFF/Nuker template [pc]
-g <value>
power-law slope(s) of EFF/Nuker template; use once for EFF template; use three times for Nuker template (outer slope, inner slope, transition
-S <0.0-1.0>
degree of mass segregation; 0.0= no segregation
-D <1.6-3.0>
fractal dimension; 3.0= no fractality
-T <value>
tcrit in N-body units
-Q <value>
virial ratio
-C <0|1|3|5>
code; 0= Nbody6, 1= Nbody4, 3= table of stars, 5= Nbody6++
-A <value>
dtadj in N-body units
-O <value>
deltat in N-body units
-G <0|1>
GPU usage; 0= no GPU, 1= use GPU
-o <name>
output name of cluster model
-f <0|1|2|3|4>
IMF; 0= no IMF, 1= Kroupa (2001), 2= user defined, 3= Kroupa (2001) with optimal sampling, 4= L3 IMF (Maschberger 2012))
-a <value>
IMF slope; for user defined IMF, may be used multiple times, from low mass to high mass; for L3 IMF use three times for alpha, beta and mu)
-m <value>
IMF mass limits, has to be used multiple times (at least twice), from low mass to high mass [Msun]
-B <number>
number of binary systems
-b <value>
binary fraction, specify either B or b
-p <0|1|2|3>
binary pairing, 0= random, 1= ordered for M>5.0 Msun, 2= random but separate pairing for M>5.0 Msun) 3= random but uniform distribution of mass ratio (0.1<q<1.0) for M>5.0 Msun)
-s <number>
seed for randomization; 0= randomize by timer
-t <0|1|2|3>
tidal field; 0= no tidal field, 1= near-field, 2= point-mass, 3= Milky-Way potential
-e <value>
epoch for stellar evolution [Myr]
-Z <value>
metallicity [0.0001-0.03, 0.02 = solar]
-X <value>
galactocentric radius vector, use 3x, [pc]
-V <value>
cluster velocity vector, use 3x, [km/s]
-x <value>
specify external (gas) Plummer potential, use 4x, 1. gas mass [Msun], 2. Plummer radius [pc] 3. decay time for gas expulsion [Myr], 4. delay time for start of gas expulsion [Myr]
-u <0|1>
output units; 0= Nbody, 1= astrophysical
display this help
display this help


McLuster can be run from the command line by passing arguments to the code which specify the desired cluster, e.g.,
    mcluster -N1000 -R2.0 -P0
would give a cluster with a Plummer profile and a half-mass radius of 2 pc, consisting of 1000 stars. For parameters which are not specified default values are taken, which can be changed within the code.

Examples: mcluster -N 1000 -R 0.8 -P 1 -W 3.0 -f 1 -B 100 -o test1  
          mcluster -f 2 -m 0.08 -a -1.35 -m 0.5 -a -2.7 -m 100.0    
          mcluster -t 3 -X 8500 -X 0 -X 0 -V 0 -V 220 -V 0          
          mcluster -D 1.6 -Q 0.4 -P -1                              
Since units are not virial units, data need to be scaled. The data is in solar-mass, parsec and km/s, thus the mass-scale should be 0.0043032 to make it to virial units (see also units(1NEMO) ). Otherwise auto-scaling can be done via NEMO routines. Here’s an example of setting up a plummer sphere, re-virializing them for hackcode1(1NEMO) and some example plotting of the results:
    mcluster -o plummer1
    tabcomment plummer1.txt - delete=t >
    tabtos plummer1.dat block1=m,pos,vel
    hackforce plummer1.dat plummer1.datf
    snapvirial plummer1.datf plummer1.datv mscale=t rscale=f vscale=f virial=1
    hackcode1 plummer1.datv plummer1.out tstop=10 freqout=100 freq=200
    snapdiagplot plummer1.out
    snapmradii plummer1.out 0.01,0.1:0.9:0.1,0.99 | tabplot - 1 2:11 line=1,1 color=2,3::8,4

See Also


Kuepper A.H.W., Maschberger T., Kroupa P., Baumgardt H., 2011, MNRAS, 417, 2300 "Mass segregation and fractal substructure in young massive clusters: (I) the McLuster code and method calibration"

Kroupa P., 2008, LNP, 760, 181


Andreas H.W. Kuepper SH FILES
~/usr/kuepper/mcluster        source code + manual

Update History

2-dec-2017    man page added to NEMO        PJT

Table of Contents