HTML automatically generated with rman
Table of Contents
hackcode1, hackcode1_qp - hierarchical N-body code
hackcode1
[parameter=value] ...
hackcode1 is an equal-timestep implementation
of a hierarchical N-body code (J. Barnes and P. Hut, Nature 324, 446). It uses
an adaptave Eulerian tree to reduce the number of interactions per time-step
to O(NlogN). hackcode1_qp is similar, but includes quadrupole corrections
to body-cell interactions (L. Hernquist, App. J. Suppl., 64, 715, 1987).
Particles
with zero mass will not be included in building the tree structure, and
hence in effect produce a restricted N-body code.
A special program, snapdiagplot(1NEMO)
can be used to monitor conservation of energy and momentum.
The
following parameters are recognized; they may be given in any order.
- in=in-file
- If given, initial conditions will be read from in-file in snapshot format.
At most one of in, restart, or continue may be specified.
- out=out-file
- If
given, results are written to out-file in snapshot format.
- restart=state-file
- If given, the system state will be read from state-file. New values are accepted
for the following parameters: out, save, eps, tol, options, fcells, tstop,
freqout, minor_freqout, and debug. At most one of in, restart, or continue
may be specified.
- continue=state-file
- If given, the system state will be
read from state-file. New values are accepted for the following parameters:
out, save, and debug. At most one of in, restart, or continue may be specified.
- save=state-file
- If given, the system state will be saved in state-file after
each timestep.
- nbody=nbody-value
- Number of bodies for test data, generated
only if none of in, restart, or continue are specified. Default is 128.
- seed=random-seed
- Random number seed used in generating initial conditions. Default is 123.
- cencon=cencon-flag
- If true, generate centrally concentrated test system.
Default is false.
- freq=integ-freq
- Inverse time-step, to be used with a leap-frog
integrator. Default is 32.0 (32 steps per unit time).
- eps=soft-length
- Force
softening parameter. Default is 0.05.
- tol=theta-value
- Opening-angle tolerence
parameter. Default is 1.0.
- fcells=fcells-value
- Ratio of cells to bodies, used
when allocating cells. Default is 0.75.
- options=option-string
- Miscellaneous
control options, specified as a comma-separated list of keywords. Currently
recognized keywords are: reset_time: when reading initial data, set tnow
to zero; new_tout: when restarting, set new output times; mass, phi, acc:
output mass, potential, acceleration data with major data outputs. The phase
space coordinates are always output. It also seems that the reset_time
and new_tout options have not been implemented yet. Default: mass,phase.
- tstop=stop-time
- Time to stop integration in N-body model units. Default is
2.0.
- freqout=out-freq
- Frequency of major N-body data outputs. Default is 4.0
(4 frames per unit time).
- minor_freqout=out-freq
- Frequency of minor diagnostic
outputs. If this frequency is not a simple fraction of freq (see above),
the program can waiste significant amounts of time. Default is 32.0 (32 diagnostic
measurements per unit time).
- log=logfile
- Output filename for log. Default
is standard output (-). Can also use log=. to make it disappear in case your
out=- needs to be part of a pipe.
treecode(1NEMO)
, newton0(1NEMO)
,
directcode(1NEMO)
, gyrfalcON(1NEMO)
, snapdiagplot(1NEMO)
https://ui.adsabs.harvard.edu/abs/1986Natur.324..446B
Appel, A. SIAM J. Sei. statist. Comput. 6, 85-103 (1985) https://doi.org/10.1137/0906008
@ads 1986Natur.324..446B
This code is the very original 1986 (NEMO)
version of the Barnes & Hut treecode and only kept in NEMO for that reason.
It is not the most efficient treecode (see e.g. treecode(1NEMO)
and gyrfalcON(1NEMO)
for improved versions), and also suffers from the Warren & Salmon imploding
galaxy bug.
When a restart is specified, values must be given for ALL legal
parameters which do not take default values.
continue= does not seem to
work. Use restart=
Running hackcode1 with all default parameters
will integrate a 128 body plummer sphere for 64 timesteps to time 2 with
softening 0.05 and critical opening angle 1 and a seed of 123. Assuming the
standard portable ’ran3’ from NumRec is being used in xrandom(3NEMO)
, we
get the following initial and final printout:
tnow T+U T/U nttot nbavg ncavg cputime
0.000 -0.2675 -0.5434 3864 9 20 0.00
cm pos -0.0000 0.0000 0.0000
cm vel -0.0000 0.0000 -0.0000
tnow T+U T/U nttot nbavg ncavg cputime
2.000 -0.2647 -0.4857 4899 17 20 0.00
cm pos 0.0002 -0.0018 0.0007
cm vel 0.0003 -0.0019 0.0009
Particles cannot occupy the same position, since building the treestructure
is done in integerized coordinates.
Joshua E. Barnes.
src/nbody/evolve/hackcode/hackcode1/ original NEMOized 1986 code
usr/josh/treecode updated 1990s version
1-jul-87 V1.0 man written JEB
11-jul-89 V1.2 using getparam()’s debug keyword + doc impr. PJT
8-jun-90 V1.2 corrected error in man page PJT
13-may-91 added undocumented feature of restricted Nbody PJT
6-mar-94 added link to export version PJT
29-mar-04 V1.4 major code cleanup for MacOS and prototypes PJT
27-jul-11 V1.5 removed debug=, added log= PJT
Table of Contents