| Version | Date | Description |
|---|---|---|
| 5.0 | 2010-05-06 | version 5.0 is a major release of Orekit. It introduces several new features and bug fixes. Some slight incompatibilities with respect to previous versions have been introduced, but they should be easy to overcome to users. Users are strongly advised to upgrade to this version. The major points introduced in version 5.0 are a very general PVCoordinatesProvider interface, a new shiftedBy method allowing many time-dependent instances (AbsoluteDate, Orbit, PVCoordinates, Attitude and SpacecraftState) to be slightly shifted in time using simple evolution models (keplerian for orbit, fixed angular rate for attitude, fixed translation for position/velocity), a redesign of the attitude interfaces and an experimental (read subject to change) numerical propagator able to compute jacobians of the state with respect to both initial state and force models parameters. Version 5.0 now depends on version 2.1 of Apache commons math. |
| 4.1 | 2009-08-18 | version 4.1 is an upgrade bringing some new features and fixing a few bugs. The equinox-based frames family with IAU1980 precession-nutation models that are still used by many legacy systems are now supported. This simplifies interoperability with legacy systems and helps migrating from this old frames family to the new CIO-based ones that is supported by orekit since its first versions. The data loading mechanism used to retrieve IERS data (Earth Orientation Parameters, UTC-TAI history) and JPL ephemerides is now also used to retrieve gravity potential files. This mechanism has also been vastly improved to support new use cases (loading from disk, from classpath, from network delegating loading to an external library ...). Another change is the addition of the TDB time scale. Some minor incompatibilities have been introduced but they are easy to solve for users, the explanations are provided in detailed changes report. |
| 4.0 | 2008-10-13 | major upgrade with new features (GCRF and ITRF2005 frames, DE 405 and DE 406 ephemerides support, improved and greatly simplified date/time support, vastly improved data configuration with zip files support, new tutorials, improved performances, more tests and all identified bugs fixed, new translation files for italian, spanish and norse. |
| 3.1 | 2008-07-16 | This release is the first public release of Orekit. |
| Type | Changes | By |
|---|---|---|
![]() |
a new experimental numerical propagator has been added, in addition to computing the spacecraft state at target time, it also computes the partial derivatives of this state with respect to the initial state (one jacobian) and with respect to models parameters (another jacobian). The jacobians are integrated alongside with the state, using variational equations for better accuracy and numerical robustness. This will help further implementation of orbit determination or optimization algorithms. This code is still considered to be experimental as of 5.0 and the API could change in the future. | pascal |
![]() |
a new SpacecraftFrame class has been added, taking into account orbit and attitude thanks to an underlying propagator. This allows to see the spacecraft just as another known geometrical object automatically handled and connected to all other frames. For an instantaneous view, Transform instances can also be built directly by SpacecraftState instances. | luc |
![]() |
frames can now be flagged as quasi-inertial or not; only quasi-inertial frames are suitable for defining orbits | luc |
![]() |
the Topocentric frame now provides a way to retrieve the body shape on which the frame is defined | luc |
![]() |
changed the way Veis 1950 frame is constructed. Now, its parent is the PEF frame with no EOP corrections applied. | pascal |
![]() |
fixed a parameters inversion in Earth Orientation Parameters for IAU-1980 models. The error could introduce up to a few meters error in position during transformations between TEME and MEME Thanks to John Pritchard. | luc |
![]() |
factories have been introduced for handling all data formats. Their default configuration correspond to the legacy formats used in previous versions (IERS format for UTC-TAI, EOPC04 and bulletins B for Earth Orientation Parameters, JPL format for celestial bodies ...). Users can now add support for their own formats if they want (for example if they prefer using bulletins A instead of EOPC04 and bulletins B, or if they have their own gravity field format ...). Consequences of these changes are that the SolarSystemBody and the PotentialReaderFactory classes have been deprecated (replaced by CelestialBodyFactory and GravityFieldFactory) and that TimeScalesFactory and FramesFactory have been extended. All these factories follow the same generic pattern. | luc |
![]() |
improved thread safety (however, Orekit is still NOT completely thread-safe). | luc |
![]() |
the loaders for gravity fields now can optionally allow missing coefficients (they will be replaced by 0.0 except c[0][0] which will be replaced by 1.0). | luc |
![]() |
the loader for gravity fields in the ICGEM format now support empty lines in the file (there is for example one blank line at the end of the file in the orekit-data zip archive). | luc |
![]() |
added support for the GRGS gravity field files formats. | luc |
![]() |
added a way to list the available satellite numbers in TLE files. | luc |
![]() |
improved TLE elements loading. Now TLE lines are loaded using the standard data loading mechanism (thus allowing loading from disk files, network, classpath ...), they can contain TLE for several objects in one file, and they may contain some non-TLE lines if desired. | luc |
![]() |
a new PVCoordinatesProvider interface has been created on top of several existing classes and interfaces (orbit propagator, celestial bodies, some moving frames ...). This is a major generalization that allows to use either satellites or celestial bodies in many algorithms (attitude pointing target, eclipses and field of view events ...) | véronique |
![]() |
improved numerical propagator efficiency when used from an outside loop: the initial state is automatically set to the last state at propagation end, thus allowing to restart from here without recomputing everything | luc |
![]() |
added a reset feature in all propagators, allowing to reuse an already configured propagator for several different orbits | luc |
![]() |
fixed a mode handling error in NumericalPropagator: when a propagator was reused with a new mode setting, the previous step handlers were still used in addition to the new ones instead of replacing them | luc |
![]() |
fixed an interpolation error for orbits crossing the -PI/+PI singularity between entries in the Ephemeris class | luc |
![]() |
KeplerianPropagator now preserve orbits types | luc |
![]() |
AbsoluteDate, Orbit, PVCoordinates, Attitude and SpacecraftState instances can now all be slightly shifted in time using simple evolution models (keplerian for orbit, fixed angular rate for attitude, fixed translation for position/velocity). This is not a replacement for proper propagation but is useful for known simple motions or small time shifts or when coarse accuracy is sufficient | luc |
![]() |
changed AttitudeLaw.getState signature to use complete orbit. This is an incompatible change introduced to fix a major bug in spin computation for some attitude laws. The laws for which orientation depends on satellite velocity have a spin vector that depends on acceleration. This can be computed only if complete orbit is available. This change should be simple to handle from a users point of view, as the caller generally already has the orbit available and attitude laws implementations can retrieve all the former parameters (date, position/velocity, frame) directly from orbit. | luc |
![]() |
fixed spin rate computation errors in almost all attitude modes | luc |
![]() |
added a new simple linear attitude mode: FixedRate | luc |
![]() |
fixed an error in event detection: when two events were very close (for example a very short ground station visibility), the second one may be ignored despite the first one was detected. | luc |
![]() |
fixed corner cases in event detection during orbit propagation, sometimes an already detected and handled event prevented the propagator to go further in time. | luc |
![]() |
added an EventShifter wrapper allowing to slightly shift raw events in time. This is useful for example to switch an attitude mode from solar pointing to something else a few minutes before eclipse entry and going back to solar pointing mode a few minutes after eclipse exit. | luc |
![]() |
added a new AlignmentDetector. | pascal |
![]() |
added a new EclipseDetector handling either umbra or penumbra entry and exit events. | pascal |
![]() |
added new CircularFieldOfViewDetector and DihedralFieldOfViewDetector handling field of view entry and exit events for any type of target. | véronique |
![]() |
added an experimental implementation of a BoxAndSolarArray spacecraft model considering a convex body (either parallelepipedic or defined by a set of facets) and a rotating solar array, for accurate modeling of surface forces with attitude. Beware that this class is still considered experimental, so use it with care! | luc |
![]() |
completely changed the RadiationSensitive and DragSensitive interfaces to be more comprehensive and handle properly lift and side force effects when used with non-symmetric spacecrafts/flux geometry | luc |
![]() |
fixed denormalization of gravity field coefficients, the last coefficient was not initialized Thanks to Christelle Blandin. | luc |
![]() |
added a relative constructor and a getMomentum method to PVCoordinates | luc |
![]() |
added a special implementation improving performances for the frequent case of identity transform | luc |
![]() |
fixed forgotten radians to degrees conversions for inclination and RAAN in CircularOrbit.toString() | luc |
![]() |
added a Constants interface including a few useful physical constants. | luc |
![]() |
added a way to build date components from week components (this can be used for scheduled operations with week-related periods) | luc |
![]() |
added string parsing features for dates and times components supporting ISO-8601 formats | luc |
![]() |
Orekit is now packaged as an OSGi bundle | luc |
![]() |
added some pieces of an UML model for the library (available in the source distribution) | pascal |
![]() |
updated error message localization to be more consistent with Java exception. Now getMessage returns a non-localized message and only getLocalizedMessage returns a message localized for the platform default locale. A new getMessage(Locale) method has also been added to retrieve the message in any desired locale, not only the platform default one. The messages are also built and translated only when needed, so if an exception is triggered and never displayed, the message will never be built. | luc |
| Type | Changes | By |
|---|---|---|
![]() |
added TDB time scale | aude |
![]() |
the RadiationSensitive and DragForce interfaces now have an additional SpacecraftState parameter in all their get methods. This allows to implement models that take into account solar arrays rotation. Note that this changes breaks compatibility for users that did add their own implementations, but it is simple to deal with (simply add one parameter in the signature and ignore it) so its was considered acceptable. | luc |
![]() |
added german localization for error messages Thanks to James Housden. | luc |
![]() |
added a feature allowing all tests to clear the already built reference objects (frames, time scales, solar system bodies ...) between each tests, thus removing the need to launch tests in separate JVMS. This allows to launch all tests directly from eclipse, and this speeds up maven tests by a factor 4 at least | luc |
![]() |
set up a custom ant build independent from the maven 2 build | luc |
![]() |
changed all tests from Junit 3 to Junit 4 | luc |
![]() |
fixed accuracy of PEF frame | thierry |
![]() |
fixed configuration problems on Windows systems Thanks to Aude Privat. | luc |
![]() |
fixed a reversed sign in solar radiation pressure Thanks to Sébastien Herbinière. | luc |
![]() |
Orekit supports the two different naming patterns for bulletins B provided by IERS on http://www.iers.org/ and http://hpiers.obspm.fr/eop-pc/. | pascal |
![]() |
the predefined times scales (TAI, UTC ...) are now built using a factory. The various XXXScale.getInstance() methods defined in each predefined time scales classes are still available, but have been deprecated and will be removed in the future, they are replaced by TimeScalesFactory.getXXX(). | luc |
![]() |
the Frame class was split into a FramesFactory class, dealing with the predefined reference frames, and a Frame class for the creation of new frames and the navigation through any frames tree. The Frame.getXXX() methods for the predefined reference frames are still available, but have been deprecated and will be removed in the future, they are replaced by FramesFactory.getXXX(). | pascal |
![]() |
3 new predefined reference frames have been added in Orekit : MEME, TEME and PEF. They implement the classical paradigm of equinox-based transformations including the IAU-76 precession model, the IAU-80 nutation model and the IAU-82 sidereal time model, with the capability to apply the nutation corrections provided by IERS through the EOP data files for better agreement with the IAU 2000 precession-nutation model. | pascal |
![]() |
the ChronologicalComparator class is not a singleton anymore, this didn't really make sense | luc |
![]() |
fixed a state reset error: orbital state changed by event detectors like ImpulseManeuver were overwritten by other event detectors | luc |
![]() |
fixed stop date of analytical propagators (Keplerian and Eckstein-Heschler). They used to stop at the first event after target date when an event detector was set up, instead of stopping at the target date | luc |
![]() |
the gravity coefficients for solar system bodies are now extracted from JPL files headers | luc |
![]() |
the eventOccurred method in EventDetector interface and its various implementations has an additional parameter specifying if the switching function increases or decreases at event time. This allows simpler events identification has many switching functions have two switches (start/end, raising/setting, entry/exit ...). Note that this changes breaks compatibility for users that did implement their own events, but it is simple to deal with (simply add one parameter in the signature and ignore it) so its was considered acceptable. | luc |
![]() |
fixed an error occurring when DE406 JPL ephemerides were loaded before DE405 ones Thanks to Christophe Pipo. | luc |
![]() |
fixed an error in EGM potential file loader Thanks to Sébastien Herbinière. | luc |
![]() |
trigger exceptions when no data can be loaded | luc |
![]() |
remove predefined leap seconds, they are not useful anymore since other parts of the library do need configuration data (solar system bodies) and since data configuration has been vastly improved | luc |
![]() |
added support for the ICGEM format for gravity fields | luc |
![]() |
load gravity potential data using the same mechanism already used for Earth Orientation Parameters, UTC-TAI history and JPL ephemerides files | luc |
![]() |
re-activated a way to load data from the classpath using a data provider plugin. Thanks to quinput and Kai Ruhl. | luc |
![]() |
added a way to load data directly from network (either locally or through a proxy server) using a data provider plugin. | luc |
![]() |
added a small plugin-like mechanism to delegate data loading to a user-provided mechanism, thus enabling smooth integration in existing systems. | luc |
![]() |
updated to latest version of commons-math. | luc |
![]() |
added galician localization for error messages. Thanks to Silvia Ríos Bergantiños. | luc |
![]() |
improved javadoc comments in orbit classes. Thanks to Guylaine Prat. | luc |
![]() |
tidal corrections are now available for ITRF and TIRF frames. Both frames are provided in two versions, the standard one with tidal corrections and a stripped down one without tidal corrections. A cache/interpolation mechanism is used to keep the computation cost of tidal correction to a minimum. With this mechanism, the penalty to use tidal correction is slightly above 20% in run time for a transformation between GCRF and ITRF. A raw implementation without this mechanism would lead to a 550% penalty, or even a 1100% penalty if TIRF and ITRF parts were computed independently. | pascal |
| Type | Changes | By |
|---|---|---|
![]() |
The ephemeris produced by numerical propagator now checks date validity in propagate method. | pascal |
![]() |
The EME2000/J2000 frame was slightly mis-oriented (about 20 milli arcseconds). It really was the GCRF frame. This has been fixed and now both the GCRF and the EME2000/J2000 are available. | luc |
![]() |
Dates in UTC within leap seconds are now displayed correctly (i.e. a 61st second is added to the minute). | luc |
![]() |
Fixed an overflow error in AbsoluteDate that generated an exception when any attempts was made to print dates far away like AbsoluteDate.JULIAN_EPOCH or AbsoluteDate.MODIFIED_JULIAN_EPOCH. Thanks to quinput. | luc |
![]() |
Changed test configuration to always use a new JVM for each test. This prevents some false positive to be generated. | luc |
![]() |
The GeodeticPoint constructor arguments has been reordered to reflect more traditional usage, latitude coming before longitude. | luc |
![]() |
The low accuracy Sun model based on Newcomb theory and the Moon model based on Brown theory have been withdrawn as they are superseded by the support of JPL DE 405 binary ephemerides files. | luc |
![]() |
The ThirdBody abstract class has been removed and its specific method getMu has been moved up into CelestialBody interface and renamed getGM. | luc |
![]() |
Improved external data configuration. The java property is now called orekit.data.path and is a colon or semicolon separated path containing directories or zip archives, themselves containing embedded directories or zip archives and data files. This allows easy roll-out of system-wide configuration data that individual users can override by prepending their own data trees in front of the path. This also allows simple configuration since many data files can be stored in easy to handle zip archives. | luc |
![]() |
Renamed the iers package into data, as it is not IERS specific anymore. Some classes where also moved out of the package and into the frame and time package and their visibility reduced to package only. This improves decoupling and reduces clutter on users by limiting the number of visible classes. | luc |
![]() |
The performance of IAU-2000 precession-nutation model computation has been tremendously improved, using a combined caching and interpolation approach. The simplified model (which was quite inaccurate in version 3.1) has therefore been removed as it was not needed anymore. | luc |
![]() |
The ITRF 2005 frame is now supported instead of the older ITRF 2000 frame. The Earth Orientation Parameters data handling classes have been updated to match this change and read the new file format provided by IERS. | luc |
![]() |
The J2000 frame has been renamed as EME2000 as this name seems to be more widely accepted and reduces confusion with the J2000.0 epoch. The Frame.getJ2000() method is still available, but has been deprecated and will be removed in the future. | luc |
![]() |
Changed TimeScale from base abstract class to interface only. | luc |
![]() |
Renamed some classes for better understanding: ChunkedDate is now DateComponents, ChunkedTime is now TimeComponents, ChunksPair is now DateTimeComponents. The getChunks method from AbsoluteDate as also been renamed into getComponents accordingly. | luc |
![]() |
Added new tutorials. | pascal |
![]() |
Added predefined local orbital frames: the (t, n, w) frame aligned with velocity and the (q, s, w) frame aligned with position. | luc |
![]() |
Added a predefined detector for altitude crossing events. | luc |
![]() |
Added methods to get zenith, nadir, north, south, east and west direction for any GeodeticPoint. | luc |
![]() |
Added spanish localization for error messages. Thanks to Silvia Ríos Bergantiños. | luc |
![]() |
Added norse localization for error messages. Thanks to Espen Bjørntvedt. | luc |
![]() |
Added italian localization for error messages. Thanks to Francesco Coccoluto. | luc |
![]() |
Added support for mean motion first and second derivatives fields in TLE. Thanks to Derek Surka. | luc |
![]() |
Added a way to rebuild the two lines of TLE instances. | luc |
![]() |
Added constructor from already parsed elements for TLE. Thanks to Derek Surka. | luc |
![]() |
Added a method to retrieve a body-centered inertial frame to the CelestialBody interface. As a consequence, thirteen new frames are predefined: Sun, Moon, planets and barycenters provided by JPL binary ephemerides. | luc |
![]() |
Support for the JPL DE 405 and DE 406 binary ephemerides files has been added and a factory class SolarSystemBody uses these files to provide implementations of the CelestialBody interface for Sun, Moon, the eight solar system planets,the Pluto dwarf planet as well as the solar system barycenter and Earth-Moon barycenter points. | luc |
![]() |
The CelestialBody interface now provides velocity as well as position. | luc |
![]() |
A getCalls() method has been added to the NumericalPropagator class to count the number of calls to the differential equations computation method. This helps tuning the underlying integrator settings in order to improve performances. | luc |
![]() |
A lot more classes and interfaces are now serializable, to help users embed instance in their own serializable classes. | luc |
![]() |
Added predefined leap seconds to allow proper turn-key use of the library even without an already configured environment. All known leap seconds at time of writing (2008) are predefined, from 1972-01-01 to 2009-01-01 (the last one has been announced in Bulletin C 36 on 2008-07-04 and is not yet present in the UTC-TAI.history published file) | luc |
![]() |
Improved user-friendliness of the time-scales by changing methods parameters types to more easily understandable ones. | luc |
![]() |
Improved user-friendliness of the AbsoluteDate class by adding several new constructors and methods for common cases. It is in particular now possible to use offsets within a time scale, for example to build a date given as a fractional number of days since a reference date in UTC, explicitly ignoring intermediate leap seconds. | luc |
![]() |
Improved the class handling date/time components: added a constructor to allow building from an offset with respect to a reference epoch, implemented Comparable interface and added equals and hashCode methods. | luc |
![]() |
Improved the class handling date components: added a constructor to allow building from any reference epoch, not only J2000.0 (thus simplifying use of modified julian day), added getMJD() method, added several constants JULIAN_EPOCH, MODIFIED_JULIAN_EPOCH, FIFTIES_EPOCH, GPS_EPOCH, J2000_EPOCH and JAVA_EPOCH. | luc |
![]() |
Added a new time scale: GPSScale. | luc |
![]() |
Added the changes page to the generated site. | luc |