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
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.
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:
- go to the directory of the program:
- build the program using the makefile provided (ensuring that the
CAPDBINDIRvariable defined in the makefile points to your CAPD's installation
bindirectory, for example:
~/capd/bin; this is the directory that contains the
capd-configfile). An executable file is created in the current directory.
Input and output
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-list.txt-- text files with CCs (in different formats)
math-cycles-3D-n-k-list.txt-- text file
tested-zeros-n-k.dat-- auxiliary (trash) binary files
kin the file names correspond to command line parameters given (see below). Input file has to be in the
datadirectory; 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
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)
(xi, yi) and mass
mi of a
qi body are given as
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.