Orekit Changes

Release History

Version Date Description
7.1 2016-02-07 Version 7.1 is a minor release of Orekit. It introduces several new features and bug fixes. The most important features introduced in version 7.1 are a lot of new event detectors (field of view based detectors supporting any FoV shape, either on ground targetting spacecraft or on spacecraft and targetting ground defined zones with any shape, extremum elevation detector, anomaly, latitude argument, or longitude argument crossing detectors, either true, mean or eccentric, latitude and longitude extremum detectors, latitude and longitude crossing detectors), new event filtering capability based on user-provided predicate function, ability to customize DSST interpolation grid for short period elements, ability to retrieve DSS short periodic coefficients, removed some arbitrary limitations in DSST tesseral and zonal contribution, ability to set short period degree/order to smaller values than mean elements in DSST, vastly improved frames transforms efficiency for various Earth frames, three different types of solar radiation pressure coefficients, new tabulated attitudes related to Local Orbital Frame, smooth attitude transitions in attitudes sequences, with derivatives continuity at both endpoint, ground zone sampling either in tiles or grid with fixed or track-based orientation, derivatives handling in geodetic points, parsing of TLE with non-unclassified modifiers, support for officiel WMM coefficients from NOAA, support for tai-utc.dat file from USNO, tropospheric refraction model following Recommendation ITU-R P.834-7, geoid model based on gravity field, and use of the new Apache Commons Math rotation API with either Frame transform convention or vector operator convention. Numerous bugs were also fixed. Version 7.1 depends on version 3.6 of Apache commons math.
7.0 2015-01-11 Version 7.0 is a major release of Orekit. It introduces several new features and bug fixes. New features introduced in version 7.0 are the complete DSST semi-analytical propagator with short-periodics terms (only mean elements were available in previous version), extension to second order derivatives for many models (Cartesian coordinates, angular coordinates, attitude modes, ...), bilinear interpolator in Saastamoinen model, attitude overriding during impulsive maneuvers, general relativity force model, geographic zone detector, and ecliptic frame. Several bugs have been fixed. One noteworthy fix concerns an inconsistency in Eckstein-Hechler propagator velocity, which leads to a change of the generated orbit type.
6.1 2013-12-13 Version 6.1 is a minor release of Orekit. It introduces several new features and bug fixes. The most important features introduced in version 6.1 are solid tides force model, including pole tide at user choice, and following either IERS 1996, IERS 2003 or IERS 2010 conventions ; ocean tides force model, including pole tide at user choice, loading a user provided model ; simultaneous support for IERS 1996, 2003 and 2010 for frames definition, which is very important to support legacy systems and to convert coordinates between older and newer reference systems ; greatly improved accuracy of celestial/terrestrial frames transforms (we are now at sub-micro arcsecond level for IERS 2003/2010, both with equinox based and Non-Rotating Origin, at a sub-milli arcseconds for IERS 1996, both with equinox based and Non-Rotating Origin) ; classical equinox-based paradigm and new non-rotating origin paradigm for inertial and terrestrial frames are now supported with all IERS conventions ; automatic conversion of IERS Earth Orientation Paramters from equinoxial to non-rotating paradigm ; support for CCSDS Orbit Data Message ; improved API for events, allowing separation of event detection and event handling (the older API is still available for compatibility) ; merged all the elevation related events, allowing to use both refraction model and antenna mask at the same time if desired ; new attitude mode based on interpolation on a table. Numerous bugs were also fixed. Version 6.1 depends on version 3.2 of Apache commons math.
6.0 2013-04-23 Version 6.0 is a major release of Orekit. It introduces several new features and bug fixes. Several incompatibilities with respect to previous versions 5.x have been introduced. Users are strongly advised to upgrade to this version. The major features introduced in version 6.0 are the inclusion of the DSST semi-analytical propagator, an improved propagator architecture where all propagators can use events and step handlers, much better and faster gravity field force model, Jacobians availability for all force models, converters between different propagation models (which can be used to convert between mean and osculating elements), thread safety for many parts (mainly frames, but still excluding propagators) while still preserving caching for performances even in multi-threaded environments, time-dependent gravity fields, support for IERS 2010 conventions, support for INPOP and all DExxx ephemerides, new frames, new time scales, support for user-defined states in spacecraft state, availability of additional states in events, interpolators for many components like position-velocity, spacecraft state and attitude allowing to compute high order derivatives if desired, filtering of events, orphan frames, magnetic fields models, SP3 files support, visibility circles, support for Marshall Solar Activity Future Estimation of solar activity. Numerous bugs were also fixed. Version 6.0 now depends on version 3.2 of Apache commons math.
5.0.3 2011-07-12 version 5.0.3 is a bug-fix release.
5.0.2 2011-07-11 version 5.0.2 is an interim release of Orekit with support for IERS Rapid Data and Prediction files.
5.0.1 2011-04-15 version 5.0.1 is a minor release of Orekit without any functional changes. The differences with respect to 5.0 are only related to packaging and deployement to maven central. There are NO bug fixes and NO evolutions.
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.

Release 7.1 – 2016-02-07

Type Changes By
Add Added tropospheric refraction correction angle following Recommendation ITU-R P.834-7. thierry
Add Added a way to configure max degree/order for short periods separately from the mean elements settings in DSST tutorial. luc
Fix Fixed limitation to degree 12 on zonal short periods, degree/order 8 on tesseral short periods, and degree/order 12 for tesseral m-dailies in DSST. luc
Fix Fixed wrong orbit type in propagator conversion. The type specified by user was ignored when computing variable stepsize integrator tolerances. luc
Add Set up three different implementations of radiation pressure coefficients, using either a single reflection coefficient, or a pair of absorption and specular reflection coefficients using the classical convention about specular reflection, or a pair of absorption and specular reflection coefficients using the legacy convention from the 1995 CNES book. Fixes issue #170 luc
Fix Fixed wrong latitude normalization in FieldGeodeticPoint. luc
Fix Fixed blanks handling in CCSDS ODM files. Fixes issue #232 luc
Fix Fixed FramesFactory.getNonInterpolatingTransform working only in one direction. Fixes issue #231 luc
Add Added Field of View based event detector for ground based sensors. evan
Add Added a getFootprint method to FieldOfView for projecting Field Of View to ground, taking limb of ellipsoid into account (including flatness) if Field Of View skims over horizon. luc
Add Added a pointOnLimb method to Ellipsoid for computing points that lie on the limb as seen from an external observer. luc
Add Added an isInside predicate method to Ellipsoid for checking points location. luc
Fix Support parsing lowercase values in CCSDS orbit data messages. Fixes issue #230 evan
Add Added a generic FieldOfViewDetector that can handle any Field Of View shape. The DihedralFieldOfViewDetector is deprecated, but the CircularFieldOfViewDetector which corresponds to a common case that can be computed more accurately and faster than the new generic detector is preserved. luc
Add Added a FieldOfView class to model Fields Of View with any shape. luc
Add Added a FootprintOverlapDetector which is triggered when a sensor Field Of View (any shape, even split in non-connected parts or containing holes) overlaps a geographic zone, which can be non-convex, split in different sub-zones, have holes, contain the pole... Fixes issue #216 luc
Fix Added a protection against low altitudes in JB2006 model. Fixes issue #214 Thanks to Carlos Casas. luc
Fix Enlarged access to SGP4 and DeepSDP4 propagators. Fixes issue #207 Thanks to Petrus Hyvönen. luc
Fix Fixed covariance matrices units when read from CCSDS ODM files. The data returned at API level are now consistent with SI units, instead of being kilometer-based. Fixes issue #217 luc
Fix Fixed DSST ephemeris generation. Fixes issue #222 luc
Update Vastly improved DSS short period terms interpolation. luc
Fix Use new Rotation API from Apache Commons Math 3.6. This API allows to use both vector operator convention and frames transform convention naturally. This is useful when axis/angles are involved, or when composing rotations. This probably fixes one of the oldest stumbling blocks for Orekit users. luc
Fix Fixed state partial derivatives in drag force model. Fixes issue #229 luc
Fix Fixed incorrect density in DTM2000 when the input position is not in ECI or ECEF. Fixes issue #228 evan
Add Added capability to use a single EventHandler with multiple types of EventDetectors. evan
Add Added a way to customize interpolation grid in DSST, either using a fixed number of points or a maximum time gap between points, for each mean elements integration step. luc
Add Added TabulatedLofOffset for attitudes defined by tabulating rotations between Local Orbital Frame and spacecraft frame. Fixes issue #227 luc
Fix Fixed wrong ephemeris generation for analytical propagators with maneuvers. Fixes issue #224. luc
Fix Fixed date offset by one second for TLE built from their components, if a leap second was introduced earlier in the same year. Fixes issue #225. luc
Fix Allow parsing TLE with non-unclassified modifier. luc
Add As a side effect of fixing issue #223, KeplerianPropagator and Eckstein-Hechler propagator are now serializable. luc
Fix Fixed missing additional states handling in ephemeris propagators created from analytical propagators. luc
Fix Fixed NPE and serialization issues in ephemeris propagators created from analytical propagators. Fixes issue #223. luc
Fix Fixed time scale issues in JPL ephemerides and IAU pole models. The time used for internal computation should be TDB, not TT. luc
Fix Fixed an issue with backward propagation on analytical propagator. During first step, the analytical interpolator wrongly considered the propagation was forward. luc
Add Added a way to retrieve short period coefficients from DSST as spacecraft state additional parameters. This is mainly intended for test and validation purposes. luc
Fix Prevent small overshoots of step limits in event detection. Fixes issue #218. luc
Fix Handle string conversion of dates properly for dates less than 1 millisecond before midnight (they should not appear as second 60.0 of previous minute but should rather wrap around to next minute). Partly fixes issue #218. luc
Fix Enforce Lexicographical order in DirectoryCrawler, to ensure reproducible loading. Before this changes, some tests could fail in one computer while succeeding in another computer as we use a mix of DE-4xx files, some having a different EMRAT (81.30056907419062 for DE-431, 81.30056 for DE-405 and DE-406). luc
Add Added EventEnablingPredicateFilter to filter event based on an user-provided enabling predicate function. This allow for example to dynamically turn some events on and off during propagation or to set up some elaborate logic like triggering on elevation first time derivative (i.e. one elevation maximum) but only when elevation itself is above some threshold. luc
Update Renamed EventFilter into EventSlopeFilter. luc
Add Added elevation extremum event detector. luc
Fix Fixed ellipsoid tessellation with large tolerances. Fixes issue #215. luc
Fix Fixed numerical precision issues for start/end dates of generated ephemerides. Fixes issues #210 evan
Add Added anomaly, latitude argument, or longitude argument crossings detector, either true, mean or eccentric. Fixes issue #213. luc
Add Added latitude and longitude extremum detector. luc
Add Added latitude and longitude crossing detector. luc
Add Added a way to convert between PVA and geodetic points with time derivatives. luc
Add Allow truncation of tiles in ellipsoid tessellation. luc
Add Propagator builders can now be configured to accept any orbit types and any position angle types in the input flat array. Fixes issue #208. luc
Add Added smooth attitude transitions in attitudes sequences, with derivatives continuity at both endpoints of the transition that can be forced to match rotation, rotation rate and rotation acceleration. Fixes issue #6. luc
Fix Fixed attitudes sequence behavior in backward propagation. Fixes issue #206. luc
Add Added factory methods to create AbsoluteDate instances from MJD or JD. Fixes issue #193. luc
Fix Fixed wrong attitude switches when an event occurs but the active attitude mode is not the one it relates to. Fixes issue #190. Thanks to Joris Olympio. luc
Add Added a way to be notified when attitude switches occur. Fixes issue #190. Thanks to Joris Olympio. luc
Fix Ensure Keplerian propagator uses the specified mu and not only the one from the initial orbit. Fixes issue #184. luc
Update Improved frames transforms efficiency for various Earth frames. luc
Fix Specify inertial frame to compute orbital velocity for ground pointing laws. Fixes issue #115. luc
Fix Activated two commented-out tests for DTM2000, after ensuring we get the same results as the original fortran implementation. Fixes issue #204. luc
Fix Fixed resetting of SecularAndHarmonic fitting. Fixes issue #205. Thanks to Javier Martin Avila. luc
Add Added a way to sample a zone on an ellipsoid as grids of inside points. Fixes issue #201. luc
Fix Fixed an event detection problem when two really separate events occur within the event detector convergence threshold. Fixes issue #203. luc
Fix Added protections against TLE parameters too large to fit in the format. Fixes issue #77. luc
Fix Allowed slightly malformed TLE to be parsed. Fixes issue #196. luc
Fix Fixed overlapping issue in ellipsoid tessellation, typically for independent zones (like islands) close together. Fixes issue #195. luc
Add Added support to load WMM coefficients from the official model file provided by NOAA. tn
Fix Fixed javadoc of method "GeoMagneticField#calculateField(...)": the provided altitude is expected to be a height above the WGS84 ellipsoid. tn
Update Added a simpler interface for creating custom UTC-TAI offsets loaders. luc
Add Added support for USNO tai-utc.dat file, enabled by default, in addition to the legacy support for IERS UTC-TAI.history file which is still supported and also enabled by default. luc
Add Added a way to load TAI-UTC data from Bulletin A. Using this feature is however NOT recommended as there are known issues in TAI-UTC data in some bulletin A (for example bulletina-xix-001.txt from 2006-01-05 has a wrong year for last leap second and bulletina-xxi-053.txt from 2008-12-31 has an off by one value for TAI-UTC on MJD 54832). This feature is therefore not enabled by default, and users wishing to rely on it should do it carefully and take their own responsibilities. luc
Add Added ellipsoid tessellation, with tiles either oriented along track (ascending or descending) or at constant azimuth. luc
Fix Added customization of EOP continuity check threshold. Fixes issue #194. luc
Add Added geoid model based on gravity field. Fixes issue #192. evan
Fix Added automatic loading of Marshall Solar Activity Future Estimation data. Fixes issue #191. luc
Update Simplified Cartesian to ellipsoidal coordinates transform and greatly improved its performances. luc
Fix Fixed target point in BodyCenterPointing attitude. Fixes issue #100. luc

Release 7.0 – 2015-01-11

Type Changes By
Add Added bilinear interpolator and use it on Saastamoinen model. Implements feature #182. hankg
Update Removed old parts that were deprecated in previous versions. luc
Update Updated dependency to Apache Commons Math 3.4, released on 2014-12-26. luc
Fix Fixed null vector normalization when attempting to project to ground a point already on ground. Fixes issue #181. luc
Add Added Romanian localization for error messages. Thanks to Lucian Barbulescu. luc
Fix Fixed velocity inconsistency in orbit generation in Eckstein-Hechler propagator. The Eckstein-Hechler propagator now generated Cartesian orbits, with velocity computed to be fully consistent with model evolution. A side effect is that if users rebuild circular parameters from the generated orbits, they will generally not math exactly the input circular parameters (but position will match exactly). Fixes issue #180. luc
Fix Improved acceleration output in Eckstein-Hechler model. luc
Add Added projection of moving point (i.e. position and derivatives too) to ground surface. luc
Add Added a general 3 axes ellipsoid class, including a feature to compute any plane section (which result in a 2D ellipse). luc
Add Added support for IERS bulletin A (rapid service and prediction) luc
Fix Fixed various issues in geomagnetic fields models: GeoMagneticField.getDecimalYear() returned a slightly wrong result: e.g. for 1/1/2005 returned 2005.0020 instead of 2005.0, GeoMagneticFieldFactory.getModel() returned wrong interpolation near models validity endpoints, GeoMagneticField.transformModel(double) method did not check year validity. Added more unit tests and adapted existing tests for IGRF/WMM with sample values / results as they have changed slightly. Fixes issue #178. tn
Fix Fixed closest TLE search. When filtering first from satellite ID and then extracting closest date, the returned satellite was sometime wrong. Thanks to Patrice Mathieu. luc
Add Allow attitude overriding during impulsive maneuvers. Fixes issue #176. Thanks to Hank Grabowski. luc
Add Added general relativity force model. evan
Add added Greek localization for error messages. Thanks to Ioanna Stypsanelli. luc
Fix Fixed incorrect partial derivatives for force models that depend on satellite velocity. Fixes #174. evan
Fix Fixed incorrect parameters set in NumericalPropagatorBuilder. Fixes #175. evan
Update Significantly reduced size of various serialized objects. luc
Update PVCoordinatesProvider now produces time-stamped position-velocities. luc
Update Tabulated attitude provider can be built directly from time-stamped angular coordinates lists, in addition to attitudes lists. luc
Add Added time-stamped versions of position-velocity and angular coordinates. luc
Fix Fixed wrong rotation interpolation for rotations near π. Fixes issue #173. Thanks to Daniel Aguilar Taboada. luc
Update Updated dependency to Apache Commons Math 3.3. luc
Update Added short periodics for DSST propagation. Thanks to Lucian Barbulescu, Nicolas Bernard. luc
Add Added a GeographicZoneDetector event detector for complex geographic zones traversal. Fixes issue #163. luc
Fix Add Ecliptic frame. Agrees with JPL ephemerides to within 0.5 arcsec. Issue #166. evan
Fix Fix cache exception when propagating backwards with an interpolated gravity force model. Fixes issue #169. evan
Fix Fixed parsing of dates very far in the future. Fixes issue #171. luc
Fix Trigger an exception when attempting to interpolate attitudes without rotation rate using only one data point. luc
Fix Fixed SpacecraftState date mismatch exception with some attitude providers. evan
Fix Fixed wrong scaling in JPL ephemeris when retrieving coordinates in a frame that is not the defining frame of the celestial body. Fixes issue #165. luc
Update Prepare generation of either mean or osculating orbits by DSST propagator. The short periodics terms are not computed yet, but there is ongoing work to add them. Thanks to Lucian Barbulescu. luc
Update Avoid recomputing Chi and Chi^2 in Hansen coefficients for tesseral. Thanks to Lucian Barbulescu. luc
Update Added better handling of Hansen kernel computation through use of PolynomialFunction. Thanks to Nicolas Bernard. luc
Update Compute Hansen coefficients using linear transformation. Thanks to Petre Bazavan. luc
Fix Fixed a non-bracketing exception in event detection, in some rare cases of noisy g function. Fixes issue #160. luc
Fix Fixed a missing reset of resonant tesseral terms in DSST propagation. Fixes issue #159. luc
Fix Improved default max check interval for NodeDetector, so it handles correctly highly eccentric orbits. Fixes issue #158. luc

Release 6.1 – 2013-12-13

Type Changes By
Fix Reduced number of calls to the g function in event detectors. Fixes issue #108. luc
Fix Fixed a spurious backward propagation. Fixes issue #107. luc
Fix Improved error detection for numerical and DSST propagation for cases where user attempts to compute integrator tolerances with an orbit for which Jacobian is singular (for example equatorial orbit while using Keplerian representation). Fixes issue #157. luc
Add Added a method to get the number or calls to getNeighbors in the generic time stamped cache, to allow performing measurements while tuning the cache. luc
Add Added high degree ocean load deformation coefficients computed by Pascal Gégout (CNRS / UMR5563 - GET). luc
Add Time scales are now serializable. luc
Add Improved DSST tesseral computation efficiency by caching Jacobi polynomials. Thanks to Nicolas Bernard. luc
Fix Fixed yaw steering attitude law, which didn't project spacecraft velocity correctly. Fixes issue #156. Thanks to Daniel Aguilar Taboada. luc
Add Added a way to set the maximum number of iterations for events detection. Fixes issue #155. luc
Add Added an attitude provider from tabulated attitudes. Fixes issue #154. luc
Add Improved test coverage. Fixes issue #153. Thanks to Hank Grabowski. luc
Add Merged all elevation detectors into one. The new detector supports all features from the previous (and now deprecated) ApparentElevationDetector and GroundMaskElevationDetector. Fixes issue #144. Thanks to Hank Grabowski. luc
Add Added a DetectorEventHandler interface aimed at handling only the event occurrence part in propagation. This allows to separate the event detection itself (which is declared by the EventDetector interface) from the action to perform once the event has been detected. This also allows to avoid subclassing of events, which was cumbersome. It also allows to share a single handler for several events. The previous behavior with eventOccurred declared at detector level and subclassing is still available but is deprecated and will be removed in the next major release. Thanks to Hank Grabowski. luc
Fix Fixed an indexing error in Harris-Priester model. Fixes issue #152. Thanks to Christophe Le Bris. luc
Add Added a new force model for ocean tides in numerical propagation, including pole tides. Fixes issue #11. luc
Fix Fixed conversion from position-velocity to Keplerian, when the orbit is perfectly equatorial. Fixes issue #151. Thanks to Lucian Barbulescu. luc
Add Added a new force model for solid tides in numerical propagation, including pole tides. Fixes issue #10. luc
Add Added a way to select IERS conventions for non-rotating origin based ITRF. luc
Update Greatly improved accuracy of celestial/terrestrial frames transforms. We are now at sub-micro arcsecond level for IERS 2003/2010, both with equinox based and Non-Rotating Origin, at a sub-milli arcseconds for IERS 1996, both with equinox based and Non-Rotating Origin. luc
Fix Fixed missing nutation correction in Equation Of Equinoxes. Fixes issue #150. luc
Fix Fixed rate for TCB time scale. luc
Add Added new definition of astronomical unit from IAU-2012 resolution B2. luc
Fix Fixed Date/Time split problem when date is a few femto-seconds before the end of the day. Fixes issue #149. luc
Fix Fixed overflow problem in TimeComponents. Fixes issue #148. luc
Update Separate parsing from using Poisson series. luc
Add Added support for parsing CCSDS ODM files (OPM, OMM and OEM). Thanks to Steven Ports. luc
Update Flattened ITRF frames tree so all supported ITRF realizations (2005, 2000, 97, 93) share the same parent ITRF2008. Previously, the tree was 2008 <- 2005 <- 2000 <- {93,97} and the reference dates for Helmert transforms were all different. We now use the parameters provided at epoch 2000.0 and with respect to ITRF2008 at http://itrf.ensg.ign.fr/doc_ITRF/Transfo-ITRF2008_ITRFs.txt. luc
Fix Fixed azimuth parameter in the TopocentricFrame.pointAtDistance method. Fixes issue #145. luc
Fix Fixed location of JAVA_EPOCH. As we now take the linear models between UTC and TAI that were used between 1961 and 1972, we have to consider the offset that was in effect on 1970-01-01 and which was precisely 8.000082s. Fixes issue #142. Thanks to Matt Edwards. luc
Update Vastly improved performances for Poisson series computations. Poisson series are often evaluated several components together (x/y/s in new non-rotating paradigm, ∆ψ/∆ε in old equinox paradigm for example). As the components are built from a common model, they share many nutation terms. We now evaluate these shared terms only once, as we evaluate the components in parallel thanks to a preliminary "compilation" phase performed when the Poisson series are set up. This dramatically improves speed: on a test case based on x/y/s evaluations over a one year time span without any caching, we noticed a more than two-fold speedup: mean computation time reduced from 6.75 seconds (standard deviation 0.49s) to 3.07 seconds (standard deviation 0.04s), so it was a 54.5% reduction in mean computation time. At the same time, accuracy was also improved thanks to the Møller-Knuth TwoSum algorithm without branching now used for summing all series terms. luc
Fix When UT1 time scale is used, it is now possible to choose which Earth Orientation Parameters history to use (formerly, only EOP compatible with IAU-2000/2006 was used, even for systems relying only on older conventions). luc
Add Added Greenwich Mean Sidereal Time and Greenwich Apparent Sidereal Time to all supported IERS conventions (i.e. IERS 1996, IERS 2003 and IERS 2010). luc
Add Classical equinox-based paradigm and new non-rotating origin paradigm for inertial and terrestrial frames are now supported with all IERS conventions. This means it is now possible to use MOD/TOD/GTOD with the recent precession/nutation models from recent conventions, and it is also possible to use CIRF/TIRF/ITRF with the older precession nutation models from ancient conventions. Of course, all these conventions and frames can be used at the same time, which is very important to support legacy systems and to convert coordinates between older and newer reference systems. luc
Add Added IERS 1996 in the list of supported IERS conventions. luc
Add Added factory methods to compute arbitrary Julian Epochs (J1900.0, J2000.0 ...) and Besselian Epochs (B1900.0, B1950.0 ...) that are used as reference dates in some models and frames. luc
Fix Fixed non-bracketing exception while converting Cartesian points very close to equator into geodetic coordinates. Fixes issue #141. luc
Add Added getAngularVelocity() to PVCoordinates. evan
Add Added back serialization for some ephemerides produced by integration-based propagators. The ephemerides produced by NumericalPropagator are always serializable, and the ones produced by DSSTPropagator may be serializable or not depending on the force models used. luc
Fix Fixed missing events detection when two events occurred at exactly the same time using an analytical propagator (like generated ephemerides for example). Fixes issue #138. luc
Fix Fixed data loading from zip/jar. A more streamlined architecture has been set up, and each zip entry now uses its own input stream. Closing the stream triggers the switch to the next entry, and duplicate close are handled gracefully. Fixes issue #139. luc
Fix Improved event bracketing by backporting changes made in Apache Commons Math (may fix issues #110 and #136, but we cannot be sure as neither issues were reproducible even before this change...). luc
Fix Fixed GTOD and Veis frame that did apply UT1-UTC correction when they should not (fixes issue #131). luc
Fix Completely rewrote conversion from Cartesian to geodetic coordinates to improve numerical stability for very far points (typically when computing coordinates of Sun). Fixes issue #137. luc

Release 6.0 – 2013-04-23

Type Changes By
Fix Fixed conversion of mean anomaly to hyperbolic eccentric anomaly (fixes issue #135). pascal
Add Extracted fundamental nutation arguments from CIRF frame. This allows both reuse of the arguments for other computations (typically tides), and also allows to use convention-dependent arguments (they are similar for IERS conventions 2003 and 2010, but have changed before and may change in the future). luc
Fix Fixed event g function correction when starting exactly at 0 with a backward propagation (fixes issue #125). luc
Update Error messages properties are now loaded directly in UTF-8. luc
Add Added a way to know which tide system is used in gravity fields (zero-tide, tide-free or unknown). luc
Add Added orphan frame, i.e. trees that are not yet connected to the main frame tree but attached later on. This allows building frame trees from leaf to root. This change fixes feature request #98. luc
Add Added a way to filter only increasing or decreasing events. The filtering occurs a priori, i.e. the filtered out events do not trigger a search. Only the interesting events are searched for and contribute to computation time. This change fixes feature request #104. luc
Add Added a semianalytical propagator based on the Draper Semianalytic Satellite Theory. The DSST accounts for all significant perturbations (central body including tesseral harmonics, third-body, drag, solar radiation pressure) and is applicable to all orbit classes. To begin with, only mean elements propagation is available. pascal
Update Greatly improved performance of time-stamped caches for data that is read only once (like UTC leap seconds history or EOP). evan
Add Additional states can now be used in events. Note that waiting for the fix for issue MATH-965 in Apache Commons Math to be been officially published, a workaround has been used in Orekit. This workaround implies that events that should be triggered based on additional equations for integration-based propagator will be less accurate on the first step (full accuracy is recovered once the first step is accepted). So in these corner cases, users are advised to start propagation at least one step before the first event (or to use a version of Apache Commons Math that includes the fix, which has been added to the development version as of r1465654). This change fixes feature request #134. luc
Add AdditionalStateProviders can now be used for all propagators, not only analytical ones. Note that when both state providers and additional differential equations are used in an integration-based propagator, they must used different states names. A state can only be handled by one type at a time, either already integrated or integrated by the propagator (fixes feature request #133). luc
Add Added a way to store user data into SpacecraftState. User data are simply double arrays associated to a name. They are handled properly by interpolation, event handlers, ephemerides and adapter propagators. Note that since SpacecraftState instances are immutable, adding states generates a new instance, using a fluent API principle (fixes feature request #132). luc
Add Added a way to retrieve all additional states at once from a step interpolator. luc
Fix Fixed wrong orientation for ICRF and all IAU pole and prime meridians (a few tens milli-arcseconds). This error mainly induced an error in celestial bodies directions, including the Sun which is used in many places in Orekit (fixes bug #130). luc
Add Added support for IERS conventions 2010. Note that Orekit still also support conventions 2003 in addition to conventions 2010. However, as IERS does not provide anymore data to link TIRF 2003 with ITRF, ITRF based on 2003 convention is not available. ITRF can only be based on either 2010 conventions for CIO-based paradigm or on 1996 conventions for equinox-based paradigm. luc
Add Atmosphere models now provide their central body frame. luc
Add Added versions of angular coordinates and position-velocity that use any field instead of double (classes FieldAngularCoordinates and FieldPVCoordinates). This allows to compute derivatives of these quantities with respect to any number of variables and to any order (using DerivativeStructure for the field elements), or to compute at arbitrary precision (using Dfp for the field elements). Regular transforms as produced by frames handle these objects properly and compute partial derivatives for them. luc
Update Converted Cunningham and Droziner force models to use the API of the new partial derivatives framework, despite they STILL USE finite differences. These two force models are now considered obsolete, they have been largely superseded by the Holmes-Featherstone model, which can be used for much larger degrees (Cunnigham and Droziner use un-normalized equations and coefficients which underflow at about degree 90), which already provides analytical derivatives, and which is twice faster. It was therefore considered a waste of time to develop analytical derivatives for them. As a consequence, they use finite differences to compute their derivatives, which adds another huge slow down factor when derivatives are requested. So users are strongly recommended to avoid these models when partial derivatives are desired... luc
Add Added analytical computation of partial derivatives for third-body attraction. luc
Add Added analytical computation of partial derivatives for constant thrust maneuvers. luc
Update Converted Newtonian force model to use the new partial derivatives framework. luc
Update Converted Holmes-Featherstone force model to use the new partial derivatives framework. luc
Add Added analytical computation of partial derivatives for surface forces (drag and radiation pressure) for all supported spacecraft body shapes. luc
Update Streamlined the force models partial derivatives computation for numerical propagation. It is now far simpler to compute analytically the derivatives with respect to state and with respect to force models specific parameters, thanks to the new Apache Commons Math differentiation framework. luc
Add Added a new force model for central body gravity field, based on Holmes and Featherstone algorithms. This model is a great improvement over Cunningham and Droziner models. It allows much higher degrees (it uses normalized coefficients and carefully crafted recursions to avoid overflows and underflows). It computes analytically all partial derivatives and hence can be used to compute accurate state transition matrices. It is also much faster than the other models (for example a 10 days propagation of a low Earth orbit with a 1cm tolerance setting and a 69x69 gravity field was about 45% faster with Holmes and Featherstone than with Cunningham). luc
Fix Improved gravity field un-normalization to allow higher degrees/order with Cunningham and Droziner models. Formerly, the coefficients computation underflowed for square fields degree = order = 85, and for non-square fields at degree = 130 for order = 40. Now square fields can go slightly higher (degree = order = 89) and non-square fields can go much higher (degree = 393 for order = 63 for example). Attempts to use un-normalization past the underflow limit now raises an exception. luc
Update Updated Orekit to version 3.1.1 of Apache Commons Math. luc
Add Added support for time-dependent gravity fields. All recent gravity fields include time-dependent coefficients (linear trends and pulsations at several different periods). They are now properly handled by Orekit. For comparison purposes, it is still possible to retrieve only the constant part of a field even if the file contains time-dependent coefficients too. luc
Update Added a way to speed up parsing and reduce memory consumption when loading gravity fields. Now the user can specify the maximal degree and order before reading the file. luc
Fix The EGM gravity field reader did not complain when files with missing coefficients were provided, even when asked to complain. luc
Fix Fixed serialization of all predefined frames. This fix implied also fixing serialization of celestial bodies as the predefined ICRF frame relies on them. Note for both types of objects, only some meta-data are really serialized in such a way that at deserialization time we retrieve singletons. So the serialized data are small (less than 500 bytes) and exchanging many time these objects in a distributed application does not imply anymore lots of duplication. luc
Fix Throw an exception if the conversion of mean anomaly to hyperbolic eccentric anomaly does not converge in KeplerianOrbit (fixes bug #114). Thanks to Yannick Tanguy. tn
Fix Removed weak hash maps in frames (fixes bug #122). Thanks to Evan Ward. luc
Fix Improved documentation of interpolation methods (fixes bug #123). Thanks to Bruno Revelin. luc
Fix Make TIRF2000Provider class thread-safe (fixes bug #118). Thanks to Evan Ward. tn
Fix Correct spelling of the inner class QuadratureComputation (fixes bug #120). Thanks to Christophe Le Bris. tn
Fix Remove unnecessary synchronization in UT1Scale (fixes bug #119). Thanks to Evan Ward. tn
Fix Clear caches in CelestialBodyFactory when removing CelestialBodyLoaders (fixes bug #106). Thanks to Carlos Casas. tn
Fix Fix loading of JPL ephemerides files with overlapping periods (fixes bug #113). Thanks to Yannick Tanguy. tn
Fix Prevent initialization exception in UTCScale in case no user-defined offsets are provided. (fixes bug #111). Thanks to Simon Billemont. tn
Fix Improved performance by caching EME2000 frame in AbstractCelestialBody (fixes bug #116). Thanks to Evan Ward. luc
Fix Make TidalCorrections class thread-safe by using the new TimeStampedCache. (fixes bug #117). Thanks to Evan Ward. tn
Fix Convert position entries contained in SP3 files to meters instead of km (fixes bug #112). Thanks to Evan Ward. tn
Add Added support for version 2011 of ICGEM gravity field format. Orekit still ignore the time-dependent part of these fields, though. luc
Update Greatly simplified CelestialBodyLoader interface, now it is not related to DataLoader anymore (which implies users can more easily provide analytical models instead of the JPL/IMCCE ephemerides if they want) luc
Fix Use the new thread-safe caches and the new Hermite interpolation feature on Transform, Earth Orientation Parameters, JPL/IMCCE ephemerides, UTC-TAI history and Ephemeris to remove thread-safety issues in all classes using cache (fixes #3). luc
Add Added Hermite interpolation features for position-velocity coordinates, angular coordinates, orbits, attitudes, spacecraft states and transforms. Hermite interpolation matches sample points value and optionally first derivative. luc
Add Added an AngularCoordinates as an angular counterpart to PVCoordinates. luc
Add Transform now implements both TimeStamped and TimeShiftable. Note that this change implied adding an AbsoluteDate parameter to all transform constructors, so this is a backward incompatible change. luc
Fix Fixed wrong transform for 3D lines (fixes bug #101). luc
Add Upgraded support of CCSDS Unsegmented Time Code (CUC) to version 4 of the standard published in November 2010 (fixes bug #91), this includes support for an extended preamble field and longer time codes. luc
Add Added a way to build TLE propagators with attitude providers and mass (fixes bug #84). Thanks to Francesco Rocca. luc
Fix Fixed numerical stability errors for high order gravity field in Cunningham model (fixes bug #97). luc
Fix Fixed an error in radiation pressure for BoxAndSolarArraySpacecraft (fixes bug #92). Thanks to Yannick Tanguy. luc
Add Added models for tropospheric delay and geomagnetic field. thomas
Update The existing general mechanism for shifting objects in time has been formalized as a parameterized interface implemented by AbsoluteDate, Attitude, Orbit, PVCoordinates and SpacecraftState. luc
Update Time scales are not serializable anymore (this induced problems for the UTC scale and its caching feature). luc
Fix Fixed TLE propagation in deep space when inclination is exactly 0 (fixes bug #88). luc
Add Added a package for spacecraft states to propagators conversion extending an original contribution for TLE (Orbit Converter for Two-Lines Elements) to all propagators. Thanks to Francesco Rocca. pascal
Fix Improved testing of error messages. luc
Fix Removed too stringent test on trajectory in TLE propagator (fixes bug #86). luc
Fix Set the initial state for a TLEPropagator (fixes bug #85). thomas
Update Improved testing of error messages. luc
Update Updated IAU poles for celestial bodies according to the 2009 report and the 2011 erratum from the IAU/IAG Working Group on Cartographic Coordinates and Rotational Elements of the Planets and Satellites (WGCCRE). luc
Update Removed code deprecated before 5.0. luc
Add Added support for more recent JPL DExxx and INPOP ephemerides files (fixes feature #23). thomas
Fix Fixed formatting of very small values in TLE lines (fixes bug #77). luc
Fix Fixed formatting of TLE epoch (fixes bug #74). thomas
Fix Fixed performance issues when using the singleton UTCScale instance from multiple threads. Use a prototype pattern instead (fixes bug #33). thomas
Add Added J2 effect on small maneuvers model. luc
Fix Fixed attitudeProvider field masking in IntegratedEphemeris. luc
Add Added a tutorial to compute Earth phased, Sun synchronous orbits. luc
Add Added a fitter for osculating parameters, allowing conversion to mean parameters. luc
Update Made Greenwich mean and apparent sidereal time publicly visible in GTOD frame. luc
Update Made equation of equinoxes sidereal time publicly visible in TOD frame. luc
Update Added more german translations for error messages. thomas
Fix Allow ClasspathCrawler and ZipJarCrawler data providers to work in OSGi environments by providing an explicit class loader (fixes bug #54). luc
Update Improved the small maneuvers analytical model to compute orbit Jacobian with respect to maneuver parameters. luc
Fix Force impulse maneuver to preserve orbit type and orbit frame. luc
Add Added sp3 file parser. thomas
Add Added a method to compute frames transforms Jacobians in the Transform class. luc
Fix Fixed a problem with propagation over null or negative ranges. luc
Add Added a multiplexer for step handlers. luc
Add Added init methods to step handlers and event handlers. luc
Add Added an adapter propagator that can add small maneuvers to any propagator, including ephemeris based ones. luc
Add Added an analytical model for the effect at date t1 of a small maneuver performed at date t0. luc
Fix Fixed a missing reinitialization of start date when state was reset in numerical propagator. luc
Update Added detection of attempts to create hyperbolic orbits as circular or equinoctial instances. luc
Fix Fixed potential numerical failure in lightning ratio computation. pascal
Update Simplified construction of atmosphere models, the Earth fixed frame is already present in the body shape, there was no need to pass a separate argument for it. luc
Add Added Harris-Priester atmosphere model. pascal
Update Changed the return value of eventOccurred method from an int to an enumerate. luc
Fix Fixed frame for TLEPropagator (fixes bug #31). pascal
Add Added getters/setters for impulse maneuvers. luc
Add Added getters/setters for attitude provider in all orbit propagators. luc
Add Added a method to compute visibility circles in TopocentricFrame. luc
Add Added an equinox-based version of ITRF. luc
Add Added getters for thrust, Isp and flow rate in constant thrust maneuvers. luc
Add Allow use of any supported Local Orbital Frames as the reference frame for LofOffset attitude modes. luc
Add Added support for LVLH, VVLH and VNC local orbital frames. luc
Fix Fixed a performance bug implying that some frames reloaded all EOP history files each time a transform was computed (fixes bug #26). luc
Add Added support for columns-based IERS Rapid Data and Prediction files (finals.daily, finals.data and finals.all), the XML version was already supported since a few months luc
Fix Fixed numerical issue in eccentricity computation (fixes bug #25) luc
Update Changed step handling of abstract propagators, now they use a single step equal to the duration of the propagation in all cases except when a fixed step is requested in master mode. Previously, they arbitrarily used on hundredth of the Keplerian period as the step size, hence performing many steps even if not strictly required luc
Add Added propagation of Jacobians matrices in circular, Keplerian and equinoctial parameters, using either true, eccentric or mean position angles. Formerly, propagation of Jacobians matrices was possible only in Cartesian parameters luc
Add Added a way to propagate additional state along with orbit in abstract propagators, as an analytical counterpart to the additional equations that can be integrated by numerical propagators luc
Fix Fixed missing partial derivatives data in ephemerides produced by a numerical propagator despite it was set up to computed them (fixes bug #16) luc
Fix Added a new much simpler way to log events occurrences all at once (or only a subset of the events if desired) luc
Add Added alternative default name for ICGEM files pascal
Fix Fixed EventState reset on propagation direction change (fixes bug #19) pascal
Fix Fixed Jacobianizer so it can handle force models that do change the spacecraft mass, like ConstantThrustManeuver (fixes bug #18) luc
Add Added Jacobians between orbital parameters and Cartesian parameters for all orbits types (including hyperbolic orbits), all angles types (mean, eccentric, true) and in both directions luc
Update Replaced the integers parameters used in orbit constructors (MEAN_ANOMALY, ECCENTRIC_ANOMALY ...) by a new PositionAngle enumerate for better value safety. The old public constants and the corresponding constructors are still available but are deprecated luc
Fix Fixed ephemeris generation in numerical propagation. After getEphemeris has been called, later calls to the numerical propagator did reset the already computed and returned ephemeris (fixes bug #14) luc
Add Added support for the Marshall Solar Activity Future Estimation files Thanks to Bruno Revelin. luc
Fix TLEPropagator now implements the Propagator interface, and hence can benefit from all events detection and mode handling features (fixes features request #4) luc
Update improved events detection robustness, by decoupling events handling from adaptive step sizes in numerical integrators and (fix contributed to Apache Commons Math) and from classical propagation in analytical and tabulated propagators. This implies the events will NOT reduce integration step sizes anymore, thus also increasing speed and in corner cases reducing local precision at event occurrence, reducing max step size is often sufficient to compensate for this drawback luc
Add all propagators, including analytical ones or tabulated ones can now be used for event detection. Of course for tabulated propagators, setting up an event that would try to reset the state triggers an error when the event occurs véronique
Add propagation can now be done between two dates, regardless of the date of the initial state véronique
Add attitude can be specified either using a date only thanks to a new AttitudeLaw interface or using a date, a position-velocity provider and a frame (which can be any frame) thanks to a new AttitudeProvider interface, wrappers have been added to convert between the two interfaces. A side effect of this change is that LofOffset constructor now needs a reference to an inertial reference frame, otherwise the attitude woud be wrong if a non-inertial frame were passed to getAttitude, due to velocity composition (the computed LOF would not really be a LOF) véronique
Update the notion of quasi-inertial frames has been renamed as pseudo-inertial because quasi-inertial has a precise relativistic meaning that is not considered here. We only consider these frames to be suitable for Newtonian mechanics. luc
Update the equinox based frames have been renamed to more standard names (MOD, and GTOD instead of MEME, and PEF). The implementation of TEME was also wrong (it was really a TOD), so now there are both a TOD with a proper name and a TEME with a proper implementation. luc
Update celestial bodies now provide both an inertially oriented body centered frame and a body oriented body centered frame, the bodies managed by CelestialBodyFactory use the IAU poles and prime meridian definitions to build the two frames luc
Add added the ICRF frame at the solar system barycenter luc
Add added the ITRF93, ITRF97, ITRF2000 and ITRF2008 frames (previously, only the ITRF2005 frame was available) luc
Add added a getPoint method to TopocentricFrame luc
Add added the Galileo System Time Scales and the Galileo start epoch. luc
Add added the UT1, TCB and GMST time scales used in CCSDS Orbit Data Messages luc
Fix fixed an error when parsing a date occurring during a leap second introduction luc
Fix fixed a dut1 interpolation error for the day just before a leap second introduction luc
Fix fixed an error in JPL ephemerides: they are in TDB time scale luc
Fix fixed an error in date creation/parsing for UTC dates which occur during a leap second luc
Fix fixed UTC time scale between 1961-01-01 and 1971-12-31 ; in this time range the offset between UTC and TAI was piecewise linear luc
Add added an enumerate for specifying months in dates and for simplifying parsing of some data files luc
Add completed support for CCSDS Time Code Format (CCSDS 301.0-B-3) ; now in addition to ASCII Calendar Segmented Time Code which has been supported for a while, Orekit also supports CCSDS Unsegmented Time Code (CUC), CCSDS Day Segmented Time Code (CDS) and CCSDS Calendar Segmented Time Code (CCS) luc
Add added a freeze method to the Frame and Transform classes, in order to build fixed frames from moving ones, this is useful for example to build a launch frame at launcher inertial navigation system reset time, or to build an equinox-based frame at a specific epoch luc
Fix fixed an out of memory error when lots of temporary frames were created in loops and discarded luc
Update use the new FastMath class from commons-math instead of the standard java.util.Math class for increased accuracy and speed luc
Add added support for the new bulletinB data published by Paris-Meudon observatory for IAU-1980 precession-nutation model (IERS has ceased publishing bulletinB files for both IAU-1980 precession-nutation model and IAU-2000 precession-nutation model as of early 2010). luc
Add added support for the new XML files containing both bulletinA and bulletinB data published by IERS (both the finals and daily files are supported). luc
Update Orekit now depends on at least version 3.0 of Apache commons-math luc
Add added a way to list what data have been loaded through DataProvidersManager luc
Add PropagationException can now be created directly from OrekitException, thus simplifying wrapping lower Orekit errors in step handlers luc
Update improved exception propagation from low level java runtime and Apache commons-math libraries preserving initial error stack trace luc
Update changed exception localization framework to simplify messages handling luc
Fix greatly improved AbsoluteDate accuracy by shifting epoch when needed and separating long/double computations to avoid too large offsets and numerical cancellations, it is now possible to still have an absolute date accurate to about 1.0e-13s after shifting it 10000 times by 0.1s steps luc
Fix fixed an error in TopocentricFrame.getPVCoordinates: the coordinates returned were not the coordinates of the topocentric frame origin with respect to the specified frame, but were the coordinates of the specified frame origin with respect to the topocentric frame. luc
Fix fixed an errors in data loading in tutorials when one of the path in the classpath contained a space luc
Fix improved CelestialBodyPointed attitude mode: the spin now correctly includes the coupling effect of the phasing reference luc
Fix fixed an error in SpinStabilized attitude mode: the spin was reversed with respect to the specification luc
Add added a GroundMaskElevationDetector dealing with local physical mask for visibility pascal
Add added an ApparentElevationDetector taking refraction into account in a terrestrial environment pascal
Update enhanced DateDetector behaviour to allow adding new event dates on the fly pascal
Fix fixed an error in FramesFactory when getting ITRF2005 and TIRF2000 frames: ignoreTidalEffects was handled wrong. Thanks to Derek Surka. pascal
Update removed serialization of some cached data in frames luc
Fix fixed deserialization problems of frame singletons, they were not unique any more luc
Add numerical propagation can now be done either using Cartesian parameters, circular parameters, equinoctial parameters, or Keplerian parameters (elliptical or hyperbolic) and using mean, eccentric or true position angles for the parameters where it is relevant. So there are now 10 possible configurations for state vector. This allows propagation of any kind of trajectories, including hyperbolic orbits used for interplanetary missions, or atmospheric re-entry trajectories véronique
Update completely revamped the partial derivatives matrices computation using the additional equations mechanism véronique
Add added a mechanism to integrate user-supplied additional equations alongside with orbital parameters during numerical propagation véronique
Update use A. W. Odell and R. H. Gooding (1986) fast and robust solver for Kepler equation luc
Add keplerian and cartesian orbits now support hyperbolic orbits (i.e. eccentricity greater than 1, and in this case negative semi major axis by convention) luc
Fix fixed an error in LofOffset attitude mode: the computed attitude was reversed with respect to the specification luc
Add added an AttitudesSequence class which can handle several laws, only one of which being active at any time. The active law changes as switch events are triggered. This can be used for example to alternate between daylight attitude mode and eclipse attitude mode, or between normal observing mode and special modes for ground contact or maneuvers. luc
Fix fixed an error when crawling a classpath or a directory a zip file was found. This might lead to select an inappropriate data provider. Thanks to Bruno Revelin. pascal

Release 5.0.3 – 2011-07-12

Type Changes By
Fix Fixed a performance bug implying that some frames reloaded all EOP history files each time a transform was computed (fixes bug #26). luc
Fix Fixed a parsing bug in IERS Rapid Data and Prediction files for dates between 2000 and 2009. luc

Release 5.0.2 – 2011-07-11

Type Changes By
Update Added support for IERS Rapid Data and Prediction files finals.all, finals.data and finals.daily, for both IAU-1980 and IAU-2000 and with both columns and XML formats. luc

Release 5.0.1 – 2011-04-15

Type Changes By
Update updated packaging to allow deployment to maven central. luc

Release 5.0 – 2010-05-06

Type Changes By
Add 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
Add 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
Add frames can now be flagged as quasi-inertial or not; only quasi-inertial frames are suitable for defining orbits luc
Add the Topocentric frame now provides a way to retrieve the body shape on which the frame is defined luc
Update changed the way Veis 1950 frame is constructed. Now, its parent is the PEF frame with no EOP corrections applied. pascal
Fix 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
Add 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
Fix improved thread safety (however, Orekit is still NOT completely thread-safe). luc
Add 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
Fix 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
Add added support for the GRGS gravity field files formats. luc
Add added a way to list the available satellite numbers in TLE files. luc
Update 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
Add 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
Fix 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
Add added a reset feature in all propagators, allowing to reuse an already configured propagator for several different orbits luc
Fix 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
Fix fixed an interpolation error for orbits crossing the -PI/+PI singularity between entries in the Ephemeris class luc
Update KeplerianPropagator now preserve orbits types luc
Add 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
Fix 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
Fix fixed spin rate computation errors in almost all attitude modes luc
Add added a new simple linear attitude mode: FixedRate luc
Fix 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
Fix 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
Add 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
Add added a new AlignmentDetector. pascal
Add added a new EclipseDetector handling either umbra or penumbra entry and exit events. pascal
Add added new CircularFieldOfViewDetector and DihedralFieldOfViewDetector handling field of view entry and exit events for any type of target. véronique
Add 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
Update 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
Fix fixed denormalization of gravity field coefficients, the last coefficient was not initialized Thanks to Christelle Blandin. luc
Add added a relative constructor and a getMomentum method to PVCoordinates luc
Add added a special implementation improving performances for the frequent case of identity transform luc
Fix fixed forgotten radians to degrees conversions for inclination and RAAN in CircularOrbit.toString() luc
Add added a Constants interface including a few useful physical constants. luc
Add added a way to build date components from week components (this can be used for scheduled operations with week-related periods) luc
Add added string parsing features for dates and times components supporting ISO-8601 formats luc
Add Orekit is now packaged as an OSGi bundle luc
Add added some pieces of an UML model for the library (available in the source distribution) pascal
Update 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

Release 4.1 – 2009-08-18

Type Changes By
Add added TDB time scale aude
Update 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
Add added german localization for error messages Thanks to James Housden. luc
Update 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
Update set up a custom ant build independent from the maven 2 build luc
Update changed all tests from Junit 3 to Junit 4 luc
Fix fixed accuracy of PEF frame thierry
Fix fixed configuration problems on Windows systems Thanks to Aude Privat. luc
Fix fixed a reversed sign in solar radiation pressure Thanks to Sébastien Herbinière. luc
Update 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
Update 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
Update 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
Add 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
Update the ChronologicalComparator class is not a singleton anymore, this didn't really make sense luc
Fix fixed a state reset error: orbital state changed by event detectors like ImpulseManeuver were overwritten by other event detectors luc
Fix fixed stop date of abstract 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
Fix the gravity coefficients for solar system bodies are now extracted from JPL files headers luc
Update 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
Fix fixed an error occurring when DE406 JPL ephemerides were loaded before DE405 ones Thanks to Christophe Pipo. luc
Fix fixed an error in EGM potential file loader Thanks to Sébastien Herbinière. luc
Update trigger exceptions when no data can be loaded luc
Update 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
Add added support for the ICGEM format for gravity fields luc
Update load gravity potential data using the same mechanism already used for Earth Orientation Parameters, UTC-TAI history and JPL ephemerides files luc
Add re-activated a way to load data from the classpath using a data provider plugin. Thanks to quinput and Kai Ruhl. luc
Add added a way to load data directly from network (either locally or through a proxy server) using a data provider plugin. luc
Add added a small plugin-like mechanism to delegate data loading to a user-provided mechanism, thus enabling smooth integration in existing systems. luc
Update updated to latest version of commons-math. luc
Add added galician localization for error messages. Thanks to Silvia Ríos Bergantiños. luc
Fix improved javadoc comments in orbit classes. Thanks to Guylaine Prat. luc
Add 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

Release 4.0 – 2008-10-13

Type Changes By
Fix The ephemeris produced by numerical propagator now checks date validity in propagate method. pascal
Fix 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
Fix Dates in UTC within leap seconds are now displayed correctly (i.e. a 61st second is added to the minute). luc
Fix 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
Fix Changed test configuration to always use a new JVM for each test. This prevents some false positive to be generated. luc
Update The GeodeticPoint constructor arguments has been reordered to reflect more traditional usage, latitude coming before longitude. luc
Update 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
Update The ThirdBody abstract class has been removed and its specific method getMu has been moved up into CelestialBody interface and renamed getGM. luc
Update 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
Update 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
Update 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
Update 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
Update 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
Update Changed TimeScale from base abstract class to interface only. luc
Update 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
Add Added new tutorials. pascal
Add Added predefined local orbital frames: the (t, n, w) frame aligned with velocity and the (q, s, w) frame aligned with position. luc
Add Added a predefined detector for altitude crossing events. luc
Add Added methods to get zenith, nadir, north, south, east and west direction for any GeodeticPoint. luc
Add Added spanish localization for error messages. Thanks to Silvia Ríos Bergantiños. luc
Add Added norse localization for error messages. Thanks to Espen Bjørntvedt. luc
Add Added italian localization for error messages. Thanks to Francesco Coccoluto. luc
Add Added support for mean motion first and second derivatives fields in TLE. Thanks to Derek Surka. luc
Add Added a way to rebuild the two lines of TLE instances. luc
Add Added constructor from already parsed elements for TLE. Thanks to Derek Surka. luc
Add 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
Add 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
Add The CelestialBody interface now provides velocity as well as position. luc
Add 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
Add A lot more classes and interfaces are now serializable, to help users embed instance in their own serializable classes. luc
Add 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
Add Improved user-friendliness of the time-scales by changing methods parameters types to more easily understandable ones. luc
Add 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
Add 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
Add 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
Add Added a new time scale: GPSScale. luc
Add Added the changes page to the generated site. luc

Release 3.1 – 2008-07-16

No changes in this release.