Central configurations in spatial n-body problem for n = 5, 6 with equal masses
by M. Moczurad and P. Zgliczyński
An installation of the program realizing the numerical part of the proofs in the paper
Requirements
The program is written in C++ and has been tested under Ubuntu Linux 14.04 with gcc version 4.9.2 (Debian 4.9.2-10+deb8u2) compiler and MacOS 10.14 with Apple LLVM version 10.0.1 (clang-1001.0.46.4). The benchmarks in the article were performed on the former configuration. The program uses the CAPD library ver. 5.0.6 (see also the sourceforge download zone). The CAPD library is also available as debian deb package. There are also prebuilt versions for Debian, Ubuntu and OSX.
Compilation
It is possible to compile the CAPD library under MS Windows but we strongly recommend to compile and run the program on linux-like or Mac OS systems. The following commands should be executed from the terminal (or msys environment under MS Windows)
- unzip the archive:
unzip nbodies.zip
- go to the directory of the program:
cd nbodies
- build the program using the makefile provided (ensuring that the
CAPDBINDIR
variable defined in the makefile points to your CAPD's installationbin
directory, for example:~/capd/bin
; this is the directory that contains thecapd-config
file). An executable file is created in the current directory.
Input and output
Filenames
The program operates on the following files:
-
init-3D-n-k.txt
-- reads input data -
undecided-3D-n-k.dat
-- binary file with undecided boxes -
zeros-3D-n-k.dat
-- binary file with all CCs found (before identity and symmetry elimination). -
math-3D-n-k.txt
,math-3D-n-k-list.txt
-- text files with CCs (in different formats) -
math-cycles-3D-n-k-list.txt
-- text file tested-undecide-n-k.dat
,tested-zeros-n-k.dat
-- auxiliary (trash) binary files
n
and k
in the file names correspond to command line parameters
given (see below). Input file has to be in the data
directory; the binary file is also
written there. Sample files for proofs of all central configurations for n = 3, 4, 5, 6 are already in
the data
directory.
Format of a file with input data
1
// 1 -- equal masses, optionally 0/2 -- unequal masses (unfinished mode)
n
// number of bodies
x0L
x0R
y0L
y0R
z0L
z0R
mass0L
mass0R
// q0
x1L
x1R
y1L
y1R
z1L
z1R
mass1L
mass1R
// q1
...
x(n-2)L
x(n-2)R
y(n-2)L
y(n-2)R
z(n-2)L
z(n-2)R
mass(n-2)L
mass(n-2)R
// q(n-2)
Coordinates (xi, yi)
and mass mi
of a
qi
body are given as
intervals xi = (xiL, xiR)
,
yi = (yiL, yiR)
and
mi = (massiL, massiR)
. The coordinates and mass of the
last body are calculated. In the
cases of equal masses, masses intervals are optional and are ignored by the program.
Running the program
The program can be run from the terminal, and the usage is the following:
./cc-nb <st> n k [d]
where the parameters mean the following:
-
s
-- perform a search -
t
-- perform a test (note that this step requires the output generated by the "search" step, but it can be generated by a separate run of the program) -
n
-- the number of bodies -
k
-- suffix of the input data file -
d
-- (optional) maximum call chain depth up to which we launch recursive search functions concurrently. This effectively limits the number of threads the program will be using. The default value is 0, meaning a fully sequential run. In our experiments, values slightly higher than the maximal number of physical threads in the system were producing the best results. For example, on a 6-core (12 thread) Intel i7, the best results are for d between 12 and 16.
We recommend redirecting the standard output of the program to a file, as it is quite verbose and
unreadable in the terminal. For example, to see the proofs of all central configurations for n = 6,
the program should be run as ./cc-nb st 6 1 16 > out-6.txt
.