Install: Orbfit
Orbfit is one of the available asteroid orbit determiners.
The instructions of installing Orbfit is derived from the Orbfit installation documentation.
Prerequisites
There are a few prerequisites before the software can be installed.
Directory
Enter into a directory which is accessible and usable by programs. In this
documentation, we will call this directory Orbfit/
. You should do the
commands of this section of the installation documentation within this
directory.
Dependencies
The following dependencies should be installed. The installation of these are dependent on the package manager and operating system used.
For APT-based systems:
sudo apt install gcc make curl time
For YUM, DNF, or Zypper based systems:
sudo yum install gcc make curl time
Fortran Compiler
A Fortran compiler is needed to compile the software. Although there are many different compilers available, we document here how to use the Intel Fortran compiler. The method of install is OS dependent, or more specifically, package manager dependent. Other installation method exist, see Intel Fortran compiler install for more information (these instructions were derived from it).
Install
Using package managers to install is the most convenient.
APT Package Managers
Download the Intel repository to the system keyring:
# Downloading key...
wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB \
| gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null
# Adding signed entry...
echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list
# Update the repository list...
sudo apt update
Install the Intel Fortran compiler, the base toolkit is also needed as a requirement:
sudo apt install intel-basekit
sudo apt install intel-hpckit
It is highly suggested to update or install the following toolchains:
sudo apt update
sudo apt install cmake pkg-config build-essential
YUM, DNF, Zypper Package Managers
Download the Intel repository file and add it to the configuration directory:
# Creating repository file...
tee > /tmp/oneAPI.repo << EOF
[oneAPI]
name=Intel® oneAPI repository
baseurl=https://yum.repos.intel.com/oneapi
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://yum.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
EOF
# Moving the file to the directory...
sudo mv /tmp/oneAPI.repo /etc/yum.repos.d
# Update the repository list...
sudo yum update
If you are using Zypper:
# Creating repository file...
sudo zypper addrepo https://yum.repos.intel.com/oneapi oneAPI
rpm --import https://yum.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
# Update the repository list...
sudo zypper update
Install the Intel Fortran compiler, the base toolkit is also needed as a requirement:
sudo yum install intel-basekit
sudo yum install intel-hpckit
It is highly suggested to update or install the following toolchains:
sudo yum update
sudo yum install cmake pkgconfig
sudo yum groupinstall "Development Tools"
For Zypper, both is done via:
sudo zypper install intel-basekit
sudo zypper install intel-hpckit
sudo zypper update
sudo zypper install cmake pkg-config
sudo zypper install pattern devel_C_C++
Environment Variables
Set the environment variables for command-line development. This command sets the variables for the current session only. (For persistent environment variable set up, consider adding it to your startup script.):
. /opt/intel/oneapi/setvars.sh
Download OrbFit
The software needs to be downloaded.
You can likely find the software package on the OrbFit website. Otherwise, the download command should work:
curl -O http://adams.dm.unipi.it/orbfit/OrbFit5.0.7.tar.gz
It can then be extracted using:
tar -xvzf OrbFit5.0.7.tar.gz
Compile
To configure the compilation flags, OrbFit comes with a set of files which describe the flags. Initialize the proper compilation flags via the config script, (flags for an optimized build using the Intel compiler):
./config -O intel
The generated compilation flags, however, needs to be changed. The generated
compilation flags can be found in the file Orbfit/src/make.flags
, as
generated by the config script. The options should be
(see Intel Fortran compiler options for more information):
FFLAGS= -warn nousage -O -mp1 -static-intel -save -assume byterecl -I../include
Note
You make use the default compilation flags as well; the change to the flags just allows the program to run with the Intel Fortran libraries statically compiled with the program rather than linked in. This alleviates the need for always needing to set up the environment variables whenever OrbFit is run. The changing memory model does not seem to affect the orbit determination part of the program.
Finally the program can be compiled using the makefile:
make
The compiled programs should exist in Orbfit/bin/
.
Download JPL Ephemerides File
The OrbFit package uses the JPL ephemerides file for its calculations, it requires the binary ephemerides files. Current OrbFit documentation suggests using the 405 ephemerides set, but more updated sets (DE 407) also exist. For Linux, precomputed binaries can be found at JPL Ephemerides binary files for Linux and the JPL Ephemerides descriptions.
For DE405:
curl -O https://ssd.jpl.nasa.gov/ftp/eph/planets/Linux/de405/lnxp1600p2200.405
For DE440 (used in this documentation):
curl -O https://ssd.jpl.nasa.gov/ftp/eph/planets/Linux/de440/linux_p1550p2650.440
The downloaded binary ephemerides file must be linked so that the OrbFit
program can properly utilize it; using a symbolic link in the
Orbfit/lib/
directory, and assuming the DE440 file was downloaded (the
command below should be changed to fit your file):
cd ./lib/
ln -s ./../linux_p1550p2650.440 jpleph
# Back to the Orbfit/ directory.
cd ..
Testing Suite
The OrbFit software’s test suit can be executed from Orbfit/
via:
make tests
This ensures that the program has been installed correctly.
Executable Path for Configuration File
For this program’s executables to be used, the path that they exist in must
be known to OpihiExarata. Copy the output of the working directory command
and add it to the configuration file’s entries as noted. The path should be
an absolute path; these commands should be run in the Orbfit/
directory:
cd .; echo "ORBFIT_DIRECTORY =="; pwd
cd ./bin; echo "ORBFIT_BINARY_EXECUTABLE_DIRECTORY =="; pwd; cd ..
If your main operating system is Windows and you are installing this via WSL Ubuntu, use the following instead:
cd .; echo "ORBFIT_DIRECTORY =="; echo "\\\\wsl$/Ubuntu"$(pwd)
cd ./bin; echo "ORBFIT_BINARY_EXECUTABLE_DIRECTORY =="; pwd; cd ..
OpihiExarata Template Files
In order for OpihiExarata to properly use the OrbFit program, files which are used by OrbFit must be collected for OpihiExarata to leverage.
Create and enter the directory (starting from Orbfit/
):
mkdir exarata; cd exarata
Within the Orbfit/exarata/
directory, copy over the asteroid propagation
files. This contains ephemerides data for asteroids to better propagations.
Generally, these files can be found in Orbfit/tests/bineph/testout
. For
some reason, the file extensions on these files are not in a form which is
liked by Orbfit, so they are also changed. Namely, the commands below should
work:
# Copying the files...
cp ./../tests/bineph/testout/AST17.* .
cp ./../tests/bineph/testout/CPV.* .
# Extension changes...
mv AST17.bai_431_fcct AST17.bai
mv AST17.bep_431_fcct AST17.bep
mv CPV.bai_431_fcct CPV.bai
mv CPV.bep_431_fcct CPV.bep
mv CPV_iter.bop CPV.bop
Also, create the files which are to be used to input data into Orbfit from
OpihiExarata. The main file that needs to be created is exarata.oop
.
Create it with your favorite text editor and fill the file and save it with
the following:
! First object
object1.
.name = exarata ! Object name
.obs_dir = '.' ! Observations directory
! Elements output
output.
.epoch = CAL 2022/01/01 00:00:00 UTC ! The epoch time of the orbit
.elements = 'KEP' ! Kepler output elements
! Operations: preliminary orbits, differential corrections, identification
operations.
.init_orbdet = 1 ! Initial orbit determination
! (0 = no, 1 = yes)
.diffcor = 1 ! Differential correction
! (0 = no, 1 = yes)
.ident = 0 ! Orbit identification
! (0 = no, 1 = yes)
.ephem = 0 ! Ephemerides
! (0 = no, 1 = yes)
! Error model
error_model.
.name='fcct14' ! Error model
! Propagation
propag.
.iast=17 ! 0=no asteroids with mass, n=no. of massive asteroids (def=0)
.filbe='AST17' ! name of the asteroid ephemerides file (def='CPV')
.npoint=600 ! minimum number of data points for a deep close appr (def=100)
.dmea=0.2d0 ! min. distance for ctrl. of close-app. to Earth only (def=0.1)
.dter=0.05d0 ! min. distance for control of close-app.
! to terrestrial planets (MVM)(def=0.1)
! Additional options
IERS.
.extrapolation=.T. ! extrapolation of Earth rotation
reject.
.rejopp=.FALSE. ! reject entire opposition
The other two files you can create with the following commands:
echo "exarata" > exarata.inp
touch exarata.obs
Note
OpihiExarata will check that these three files exist as a check to see that these steps have been followed correctly. It is also a way to ensure that the configuration paths provided in the configuration are valid and point to the right location.