Each particle is followed with its own integration step - an essential feature when the dynamical times of different particles vary a lot. A complete description is given in Aarseth (1985).
This version is the formal release of the toy code, as published in Binney & Tremaine (1987)(see also nbody0(1NEMO) ), and was written by Sverre Aarseth.
Example input parameter_file for the standard internal
benchmark (a 25-body problem integrated for 5 crossing times):
1 1.0 KSTART TCOMP 25 1 10 1 N NFIX NRAND NRUN 0.02 1.0 5.0 2.0E-05 0.03 ETA DELTAT TCRIT QE EPS 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 KZ(J), J=1,15 2.5 5.0 1.0 ALPHAS BODY1 BODYN 0.5 0.0 0.0 1.0 1.0 Q VXROT VZROT RBAR ZMBARNote: the order of input lines may change depending on previous ones (KSTART and KZ’s in particular)
Definition of input parameters: (parameters with a * start on a new line; their type is the implicit FORTRAN specification: [I-N] for integers, [A-H,O-Z] for floating point parameters)
Definition of options KZ:
1 COMMON save on unit 1 if TCOMP > CPU or if TIME > TCRIT. 2 COMMON save on unit 2 at output (=1); restart if DE/E > 5*QE <=2). 3 Basic data written to unit 3 at output time (frequency NFIX). File: OUT3 4 Initial conditions on unit 4 (=1: output; =2: input; 3=input+output). 5 Initial conditions (=0: uniform & isotropic; =1: Plummer law). 6 Output of significant binaries on printout. 7 Output of movie frames on unit 7 (read NFRAME, DELTAF). 8 Generation of two subsystems (merger experiment) (read XCM, ECC). 9 Individual bodies printed at output time (MIN(5**KZ9,N)). 10 No scaling of initial conditions to physical units. 11 Modification of ETA by tolerance QE. 12 Initial parameters for binary orbit (read SEMI, ECC). 13 Escaper removal (R > 2*RTIDE; RTIDE = 10*RSCALE). 14 Adjustment of coordinates & velocities to c.m. condition. 15 Code units for tcrit/deltat
read: KSTART, TCOMP if KSTART=1 then new run read: N, NFIX, NRAND, NRUN input.f read: ETA, DELTAT, TCRIT, QE, EPS input.f read: KZ(J),J=1,15 input.f if KZ(4)=2 then read(unit 4) data.f else read: ALPHAS, BODY1, BODYN data.f endif if KZ(12)>0 then read: SEMI, ECC data.f endif read: Q, VXROT, VZROT, RBAR, ZMBAR scale.f if KZ(7)>0 then read: NFRAME, DELTAF scale.f endif if KZ(8)>0 then read: XCM, ECC subsys.f endif else read (unit=1) restart nbody1.f if (KSTART>2) restart with new parameters if KSTART=4 then ... else read: DELTAT, TNEXT, TCRIT, QE, J, KZ(J) modify.f endif if KSTART>=4 then read: ETA modify.f endif endif endif
machine cpu(sec) compiler/options DEC DS3000/400-alpha 1.6 CONVEX C3 1.94 -O0 CONVEX C3 1.72 -O1 CONVEX C3 1.21 -O2 (+vect) CONVEX C3 2.98 -O3 (+paral) Indigo 1 2.3 DEC 5000/240 3.8 SS10/30 4.1 SS2 4/... 9.3 SS1 4/60 20.6 SUN 3/60 71.7
fort.1 common block restart dump file (option 1) fort.2 common block restart dump file (option 2) OUT3 output file (option 3) fort.4 initial conditions input or output file (option 4) fort.7 formatted frame files (option 7)
Website of all codes: https://www.ast.cam.ac.uk/~sverre/web/pages/nbody.htm
Aarseth, S.J. IAU colloquium 16, The Gravitational N-Body Problem, ed. M. Lecar, p.373.
Direct Methods for N-Body Simulations by S.J. Aarseth in: Multiple Time Scales, eds. J.U. Brackbill & B.L. Cohen, Academic Press, p. 377 (1984).
NBODY0 source code in Binney & Tremaine’s Galactic Dynamics (Princeton University Press, 1987). pp.678.
Small-N Systems by S.J. Aarseth in: XXX eds. Benz, Barnes and XXX (to be published, 1994)
6-apr-93 manual page written PJT 9-apr-93 unit.4 I/O now full REAL*4 PJT/SJA 25-may-93 man PJT 26-mar-94 man PJT 18-dec-99 1/2 bug fix in ALPHAS line in define.f PJT/SJA/xxx 9-feb-2017 add kz(15) option