This HTML automatically generated with rman for NEMO
Table of Contents
runbody1, nbody1 - (frontend to) Aarseth N-body code
runbody1 [parameter=value]
nbody1 < nbody1.in
runbody1 is a NEMO frontend to Aarseth’s NBODY1 (fortran) program,
running the code in a run directory where all files are stored. See also
nbody1(1NEMO)
.
The new version 2.x interface tries to mimic to run NBODY1
in virial units with a default input and output. In previous versions the
defaults were more geared towards running the classic interface where data
were scaled and times were measured in crossing times, making comparisons
with other codes in NEMO much harder. This however means it is now more
work to make NBODY1 run in classic mode. Parameters names and meaning have
not changed, except for the introduction of kz(15), to work in code (virial)
units.
The following parameters are recognized in any order if
the keyword is also given:
- in=
- input file (optional, see nbody= to generate
your own input data on the fly). If input data are given, you must also
set KZ(4)
=2 (see below). WARNING: The input snapshot will be mass-weight
centered before the integration started by NBODY1.
Default: not used.
- outdir=
- Output run directory. This directory should not
exist, although can be overriden with NEMO’s standard error= system keyword.
No default.
- nbody=
- ** Total particle number. The maximum value (NMAX) is
compiled into the NBODY1 program. Note that even if input files are supplied,
this parameter is needed.
No default.
- nfix=
- Output frequency of data save (KZ(3)
) or binaries (KZ(6)
).
[Default: 1]
- nrand=
- Random number sequence skip.
[Default: 0]
- nrun=
- Run identification index. Not really used for anything,
just a relic from nameless Aarseth-type files. The outdir now has this function.
[Default: 1]
- eta=
- ** Time-step parameter for force polynomial.
[Default: 0.02]
- deltat=
- Output time interval in units of the crossing time
(M**2.5/(2E)**1.5).
[Default: 0.25]
- tcrit=
- Termination time in units of the crossing time.
[Default: 5]
- qe=
- Energy tolerance (restart if DE/E > 5*QE & KZ(2)
> 1)
[Default: 2e-5]
- eps=
- Potential softening parameter
[Default: 0.01]
- kz=
- ** Non-zero options for alternative paths (see below)
[Default: 1,2,1,2,0,0,0,0,0,1,1,0,0,0,1]
1 COMMON save on unit 1 if TCOMP > CPU or if TIME > TCRIT. [1]
2 COMMON save on unit 2 at output (=1); restart if DE/E > 5*QE (=2).
[2]
3 Basic data written to unit 3 at output time (frequency NFIX). [1]
4 Initial conditions on unit 4 (=1: output; =2: input). [2]
5 Initial conditions (=0: uniform & isotropic; =1: Plummer). [0]
6 Output of significant binaries. [0]
7 Output of movie frames on unit 7. [0]
8 Generation of two subsystems (merger experiment). [0]
9 Individual bodies printed at output time (MIN(5**KZ9,N)). [0]
10 No scaling of initial conditions. [1]
11 Modification of ETA by tolerance QE. [1]
12 Initial parameters for binary orbit. [0]
13 Escaper removal (R > 2*RTIDE; RTIDE = 10*RSCALE). [0]
14 Adjustment of coordinates & velocities to c.m. condition. [0]
15 Use code units for tcrit/deltat [1]
- alphas=
- ** Power-law index for initial mass function (routine DATA)
[Default: 2.3]
- body1=
- Maximum particle mass before scaling
[Default: 5.0]
- bodyn=
- Minimum particle mass before scaling
[Default: 1.0]
- q=
- ** Virial ratio (q=0.5 for virial equilibrium)
[Default: 0]
- vxrot=
- XY-velocity scaling factor (> 0 for solid-body rotation)
[Default: 0]
- vzrot=
- Z-velocity scaling factor (not used if VXROT =
[Default: 0]
- rbar=
- Virial radius in pc (for scaling to physical
[Default: 1]
- zmbar=
- Mean mass in solar units
[Default: 1]
- xcm=
- ** Displacement for subsystem (routine SCALE; KZ(8)
)
- ecc=
- Eccentricity of relative motion for subsystem (ECC =< 1)
- kstart=
- **
Run mode: 1=new >1 restart, with increasing options of resetting variables.
Only new runs are currently supported.
- tcomp=
- not supposed to be used, but
counts max computing time alotted.
- KZ#=
- NEMO indexed keyword (see getparam(3NEMO)
)
to override kz=, for example KZ4=1, while keeping all other kz=’s.
Default: not used
- exe=
- Name of the (fortran) executable to run.
[Default: nbody1]
Scaling can cause output to become out of bounds.
Coding the the input-order logic in the frontend program can be hazardous
to your health. It will depend on how the NBODY1 main program is structured.
Order of input lines in "nbody1.in" for a new run (KSTART=1)
variables condition where
---------------------------- ------------------- ---------
KSTART TCOMP MAIN
Nbody NFIX NRAND NRUN INPUT
ETA DELTAT TCRIT QE EPS INPUT
KZ(1..15) INPUT
ALPHAS BODY1 BODYN KZ(4).NE.2 DATA
SEMI ECC KZ(12).NE.0 DATA
Q VXROT VZROT RBAR ZMBAR SCALE
NFRAME DELTAF KZ(7).GT.0 SCALE
XCM ECC KZ(8).GT.0 SUBSYS
The input snapshot is (mass-weighted) centered before integration
is started. Not clear why kz(14) still gives some different answers.
By decreasing
TCRIT, you observe the integrations at finer details, thus re-syncing all
particles again. This will have an effect on orbits
If you want
to use runnbody1 as a NEMO tool with snapshots in and out, here is an example
with a 128-body plummer sphere:
mkplummer p128 128
runbody1 p128 run1 deltat=0.1 tcrit=10
This will create a run1/OUT3.snap. Code units are now used, not crossing
time units.
If however you want to use the more original NBODY1 flavored
run, pay attention to the kz= vector as the default will not suffice anymore.
runbody1 outdir=run2 nbody=128 deltat=0.1 tcrit=10 kz=1,2,1,1,1
Note that requesting tcript=10 you will see the final snapshot written
at time=28.2843 because the crossing time is about 2.828 and tcrit is measured
in terms of crossing times, as opposed to code times for the default run
with kz(15)=1.
The command
cd $NEMO/src/nbody/evolve/aarseth/nbody1/
make bench
will run a standard 1280 body plummer sphere benchark to T=10, typically
taking 5-10 seconds.
nbody1 still uses the old-style individual time-steps
with force polynomials, not the improved hermite integrater that is embedded
in later versions of the NBODYx series. However, Sverre has made versions
available with a hermite integrator, see for example the micky-mouse version
nbody04h described in nbody0(1NEMO)
.
nbody0(1NEMO)
, runbody2(1NEMO)
,
runbody4(1NEMO)
, runbody6(1NEMO)
, snapshot(5NEMO)
, u3tos(1NEMO)
, stou4(1NEMO)
$NEMO/src/nbody/evolve/aarseth/nbody1 nbody code
$NEMO/src/nbody/evolve/aarseth/tools various tools code
$outdir/fort.1 restart dump (compile time dep. size)
$outdir/fort.2 restart dump (compile time dep. size)
$outdir/fort.4 restart dump (compile time dep. size)
(see stou4(1NEMO) and u4tos(1NEMO))
$outdir/fort.7 formatted frame files (option KZ(7))
$outdir/OUT3 particle dump (see u3tos(1NEMO))
Peter Teuben
4-mar-98 V1.1 documented, and changed out= to outdir=, n= to nbody= PJT
17-mar-04 V1.1a fixed bug when in= was specified
17-mar-06 V1.2 using fullname for in=
7-feb-2019 V2.0 better defaults for snapshot input PJT
14-feb-2019 V2.1 default run now computes nbody= and converts to snapshot PJT
20-jan-2024 formatting PJT
Table of Contents