Skip to content

Releases: Space-Systems/OPI

Propagation Recording

11 Oct 04:44
Compare
Choose a tag to compare
  • Add PropagationRecord class for easy recording and plotting of propagations
  • Use OPI Logger in support plugins
  • Fix Fortran interface
  • Various small changes and bugfixes

OPI-2021.0 Release Candidate 0

25 May 05:51
Compare
Choose a tag to compare
Pre-release

OPI-2021 introduces changes to the way Julian Dates are stored, in order to achieve higher accuracy. See updated README.md for details.

Epoch Extension

11 Aug 22:55
Compare
Choose a tag to compare
  • Index Lists can now be copied and added
  • Added "initial_epoch" fiield to Population/Epoch that can be used by the propagator to keep a record of when the propagation started. Epoch now has the following fields:
    • beginning_of_life: The date when the object was launched. Set by the host.
    • end_of_life: The date when the object deorbited. Can be set by the host to mark historic objects, or by the propagator to mark objects that decayed during propagation. Objects with a set EOL date should not be propagated past this date. Population::markedAsDeorbited(int index) checks for this.
    • current_epoch: The date where the object is currently at. Should be updated by the propagator at every step during propagation.
    • original_epoch: The date for which the data set for the object was created. Set by the host and used for reference (e.g. against current_epoch to check whether an object has been propagated from its original state).
    • initial_epoch: The date at which propagation commenced. Set by the propagator at the start of propagation and used for reference during the process.

Logging and Versioning

23 Jun 03:46
Compare
Choose a tag to compare
  • Added the OPI::Logger to handle debug output. Messages now go to a destination (stdout or file) specified by host.logToFile(logFileName) . The host can also set the desired verbose level (0 to 4) using host.setVerboseLevel(v). C++ Propagators (and hosts) can direct output to the logger like this: OPI::Logger::out(v) << "This is a debug message with verbose level " << v << std::endl;. Propagators should make their supportsOPILogger() function return 1 to signal logger support to the host.
  • Version requirements: Propagators should set minimumOPIVersionRequired() and minorOPIVersionRequired() to match the minimum major (e.g. 2019) and minor (e.g. 6) OPI version required.
  • Added a function to the host to retrieve the plugin path.
  • Fixed covariance matrix output in JSON.

Hotfix for OPI-2019.4

11 Jun 03:34
Compare
Choose a tag to compare
Hotfix for OPI-2019.4 Pre-release
Pre-release
  • Fix passing string arguments to Fortran
  • Starting to provide some precompiled binaries again

Binaries are compiled with OpenCL support so you will either need OpenCL headers in your include path or #define OPI_DISABLE_OPENCL before including opi_cpp.h (if you are developing a host or not planning on using OpenCL at all).

Interface Fixes

10 Jun 05:26
Compare
Choose a tag to compare
Interface Fixes Pre-release
Pre-release
  • Fix handling of string parameters in Fortran interface
  • Change Python Population getter functions to "get*ByIndex()"
  • Add support for indexed Population alignment

New Population Features

10 Sep 23:21
Compare
Choose a tag to compare
Pre-release
  • Added original_epoch field to Population/Epoch. It can be used to set the date at which the object's data set was created.
  • Added Population::markedAsDeorbited function to query whether an object has been marked as deorbited by the propagator (current epoch larger than end of life, and both fields set).
  • Added progress output to Propagator::align as well as the option to align to a user-defined date.
  • Python version (2 or 3) can now be selected during the build process.

Population Copying

03 Jul 02:20
Compare
Choose a tag to compare
Population Copying Pre-release
Pre-release
  • Properly implemented copy constructors for Population and Perturbations
  • Populations can be concatenated using the + and += operators
  • Perturbations can be added directly to a Population using the + and += operators

Minor additions and license change

12 Jun 23:35
Compare
Choose a tag to compare
Pre-release
  • Adopt MIT license
  • Propagators and perturbation modules can now read files from resource archives
  • Populations can be exported to JSON files
  • Minor enhancements and fixes

Major Interface Update

16 May 01:04
Compare
Choose a tag to compare
Pre-release

This is the first release of the overhauled interface. Several changes have been made that deprecate the old version and require you to make updates to hosts and propagators:

Combined propagation functions: indexedPropagation and multiTimePropagation have been merged into the main propagate function.
New Epoch field in Population: Beginning of life, end of life and current epoch of each object are now tracked in the Population's epoch field.
New Perturbations class: Perturbation modules return changes to the Population in a new Perturbations class rather than changing the population itself. The Perturbations class works and behaves exactly like Population, just with different fields.
Support for covariance matrices: Covariance matrices have been added to Population and Perturbations classes.
New Population features: Functions have been added to copy and append Populations, to align all objects to the same epoch, and to allow perturbation modules to read config files individually.
Loading Populations: Propagators can now implement a loadPopulation() function to create a Population from a propagator-specific input file.
Increased storage efficiency: Populations are now written to files in a compressed format.