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. |
Type | Changes | By |
---|---|---|
Added tropospheric refraction correction angle following Recommendation ITU-R P.834-7. | thierry | |
Added a way to configure max degree/order for short periods separately from the mean elements settings in DSST tutorial. | luc | |
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 | |
Fixed wrong orbit type in propagator conversion. The type specified by user was ignored when computing variable stepsize integrator tolerances. | luc | |
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 | |
Fixed wrong latitude normalization in FieldGeodeticPoint. | luc | |
Fixed blanks handling in CCSDS ODM files. Fixes issue #232 | luc | |
Fixed FramesFactory.getNonInterpolatingTransform working only in one direction. Fixes issue #231 | luc | |
Added Field of View based event detector for ground based sensors. | evan | |
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 | |
Added a pointOnLimb method to Ellipsoid for computing points that lie on the limb as seen from an external observer. | luc | |
Added an isInside predicate method to Ellipsoid for checking points location. | luc | |
Support parsing lowercase values in CCSDS orbit data messages. Fixes issue #230 | evan | |
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 | |
Added a FieldOfView class to model Fields Of View with any shape. | luc | |
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 | |
Added a protection against low altitudes in JB2006 model. Fixes issue #214 Thanks to Carlos Casas. | luc | |
Enlarged access to SGP4 and DeepSDP4 propagators. Fixes issue #207 Thanks to Petrus Hyvönen. | luc | |
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 | |
Fixed DSST ephemeris generation. Fixes issue #222 | luc | |
Vastly improved DSS short period terms interpolation. | luc | |
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 | |
Fixed state partial derivatives in drag force model. Fixes issue #229 | luc | |
Fixed incorrect density in DTM2000 when the input position is not in ECI or ECEF. Fixes issue #228 | evan | |
Added capability to use a single EventHandler with multiple types of EventDetectors. | evan | |
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 | |
Added TabulatedLofOffset for attitudes defined by tabulating rotations between Local Orbital Frame and spacecraft frame. Fixes issue #227 | luc | |
Fixed wrong ephemeris generation for analytical propagators with maneuvers. Fixes issue #224. | luc | |
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 | |
Allow parsing TLE with non-unclassified modifier. | luc | |
As a side effect of fixing issue #223, KeplerianPropagator and Eckstein-Hechler propagator are now serializable. | luc | |
Fixed missing additional states handling in ephemeris propagators created from analytical propagators. | luc | |
Fixed NPE and serialization issues in ephemeris propagators created from analytical propagators. Fixes issue #223. | luc | |
Fixed time scale issues in JPL ephemerides and IAU pole models. The time used for internal computation should be TDB, not TT. | luc | |
Fixed an issue with backward propagation on analytical propagator. During first step, the analytical interpolator wrongly considered the propagation was forward. | luc | |
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 | |
Prevent small overshoots of step limits in event detection. Fixes issue #218. | luc | |
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 | |
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 | |
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 | |
Renamed EventFilter into EventSlopeFilter. | luc | |
Added elevation extremum event detector. | luc | |
Fixed ellipsoid tessellation with large tolerances. Fixes issue #215. | luc | |
Fixed numerical precision issues for start/end dates of generated ephemerides. Fixes issues #210 | evan | |
Added anomaly, latitude argument, or longitude argument crossings detector, either true, mean or eccentric. Fixes issue #213. | luc | |
Added latitude and longitude extremum detector. | luc | |
Added latitude and longitude crossing detector. | luc | |
Added a way to convert between PVA and geodetic points with time derivatives. | luc | |
Allow truncation of tiles in ellipsoid tessellation. | luc | |
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 | |
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 | |
Fixed attitudes sequence behavior in backward propagation. Fixes issue #206. | luc | |
Added factory methods to create AbsoluteDate instances from MJD or JD. Fixes issue #193. | luc | |
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 | |
Added a way to be notified when attitude switches occur. Fixes issue #190. Thanks to Joris Olympio. | luc | |
Ensure Keplerian propagator uses the specified mu and not only the one from the initial orbit. Fixes issue #184. | luc | |
Improved frames transforms efficiency for various Earth frames. | luc | |
Specify inertial frame to compute orbital velocity for ground pointing laws. Fixes issue #115. | luc | |
Activated two commented-out tests for DTM2000, after ensuring we get the same results as the original fortran implementation. Fixes issue #204. | luc | |
Fixed resetting of SecularAndHarmonic fitting. Fixes issue #205. Thanks to Javier Martin Avila. | luc | |
Added a way to sample a zone on an ellipsoid as grids of inside points. Fixes issue #201. | luc | |
Fixed an event detection problem when two really separate events occur within the event detector convergence threshold. Fixes issue #203. | luc | |
Added protections against TLE parameters too large to fit in the format. Fixes issue #77. | luc | |
Allowed slightly malformed TLE to be parsed. Fixes issue #196. | luc | |
Fixed overlapping issue in ellipsoid tessellation, typically for independent zones (like islands) close together. Fixes issue #195. | luc | |
Added support to load WMM coefficients from the official model file provided by NOAA. | tn | |
Fixed javadoc of method "GeoMagneticField#calculateField(...)": the provided altitude is expected to be a height above the WGS84 ellipsoid. | tn | |
Added a simpler interface for creating custom UTC-TAI offsets loaders. | luc | |
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 | |
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 | |
Added ellipsoid tessellation, with tiles either oriented along track (ascending or descending) or at constant azimuth. | luc | |
Added customization of EOP continuity check threshold. Fixes issue #194. | luc | |
Added geoid model based on gravity field. Fixes issue #192. | evan | |
Added automatic loading of Marshall Solar Activity Future Estimation data. Fixes issue #191. | luc | |
Simplified Cartesian to ellipsoidal coordinates transform and greatly improved its performances. | luc | |
Fixed target point in BodyCenterPointing attitude. Fixes issue #100. | luc |
Type | Changes | By |
---|---|---|
Added bilinear interpolator and use it on Saastamoinen model. Implements feature #182. | hankg | |
Removed old parts that were deprecated in previous versions. | luc | |
Updated dependency to Apache Commons Math 3.4, released on 2014-12-26. | luc | |
Fixed null vector normalization when attempting to project to ground a point already on ground. Fixes issue #181. | luc | |
Added Romanian localization for error messages. Thanks to Lucian Barbulescu. | luc | |
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 | |
Improved acceleration output in Eckstein-Hechler model. | luc | |
Added projection of moving point (i.e. position and derivatives too) to ground surface. | luc | |
Added a general 3 axes ellipsoid class, including a feature to compute any plane section (which result in a 2D ellipse). | luc | |
Added support for IERS bulletin A (rapid service and prediction) | luc | |
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 | |
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 | |
Allow attitude overriding during impulsive maneuvers. Fixes issue #176. Thanks to Hank Grabowski. | luc | |
Added general relativity force model. | evan | |
added Greek localization for error messages. Thanks to Ioanna Stypsanelli. | luc | |
Fixed incorrect partial derivatives for force models that depend on satellite velocity. Fixes #174. | evan | |
Fixed incorrect parameters set in NumericalPropagatorBuilder. Fixes #175. | evan | |
Significantly reduced size of various serialized objects. | luc | |
PVCoordinatesProvider now produces time-stamped position-velocities. | luc | |
Tabulated attitude provider can be built directly from time-stamped angular coordinates lists, in addition to attitudes lists. | luc | |
Added time-stamped versions of position-velocity and angular coordinates. | luc | |
Fixed wrong rotation interpolation for rotations near π. Fixes issue #173. Thanks to Daniel Aguilar Taboada. | luc | |
Updated dependency to Apache Commons Math 3.3. | luc | |
Added short periodics for DSST propagation. Thanks to Lucian Barbulescu, Nicolas Bernard. | luc | |
Added a GeographicZoneDetector event detector for complex geographic zones traversal. Fixes issue #163. | luc | |
Add Ecliptic frame. Agrees with JPL ephemerides to within 0.5 arcsec. Issue #166. | evan | |
Fix cache exception when propagating backwards with an interpolated gravity force model. Fixes issue #169. | evan | |
Fixed parsing of dates very far in the future. Fixes issue #171. | luc | |
Trigger an exception when attempting to interpolate attitudes without rotation rate using only one data point. | luc | |
Fixed SpacecraftState date mismatch exception with some attitude providers. | evan | |
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 | |
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 | |
Avoid recomputing Chi and Chi^2 in Hansen coefficients for tesseral. Thanks to Lucian Barbulescu. | luc | |
Added better handling of Hansen kernel computation through use of PolynomialFunction. Thanks to Nicolas Bernard. | luc | |
Compute Hansen coefficients using linear transformation. Thanks to Petre Bazavan. | luc | |
Fixed a non-bracketing exception in event detection, in some rare cases of noisy g function. Fixes issue #160. | luc | |
Fixed a missing reset of resonant tesseral terms in DSST propagation. Fixes issue #159. | luc | |
Improved default max check interval for NodeDetector, so it handles correctly highly eccentric orbits. Fixes issue #158. | luc |
Type | Changes | By |
---|---|---|
Reduced number of calls to the g function in event detectors. Fixes issue #108. | luc | |
Fixed a spurious backward propagation. Fixes issue #107. | luc | |
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 | |
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 | |
Added high degree ocean load deformation coefficients computed by Pascal Gégout (CNRS / UMR5563 - GET). | luc | |
Time scales are now serializable. | luc | |
Improved DSST tesseral computation efficiency by caching Jacobi polynomials. Thanks to Nicolas Bernard. | luc | |
Fixed yaw steering attitude law, which didn't project spacecraft velocity correctly. Fixes issue #156. Thanks to Daniel Aguilar Taboada. | luc | |
Added a way to set the maximum number of iterations for events detection. Fixes issue #155. | luc | |
Added an attitude provider from tabulated attitudes. Fixes issue #154. | luc | |
Improved test coverage. Fixes issue #153. Thanks to Hank Grabowski. | luc | |
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 | |
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 | |
Fixed an indexing error in Harris-Priester model. Fixes issue #152. Thanks to Christophe Le Bris. | luc | |
Added a new force model for ocean tides in numerical propagation, including pole tides. Fixes issue #11. | luc | |
Fixed conversion from position-velocity to Keplerian, when the orbit is perfectly equatorial. Fixes issue #151. Thanks to Lucian Barbulescu. | luc | |
Added a new force model for solid tides in numerical propagation, including pole tides. Fixes issue #10. | luc | |
Added a way to select IERS conventions for non-rotating origin based ITRF. | luc | |
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 | |
Fixed missing nutation correction in Equation Of Equinoxes. Fixes issue #150. | luc | |
Fixed rate for TCB time scale. | luc | |
Added new definition of astronomical unit from IAU-2012 resolution B2. | luc | |
Fixed Date/Time split problem when date is a few femto-seconds before the end of the day. Fixes issue #149. | luc | |
Fixed overflow problem in TimeComponents. Fixes issue #148. | luc | |
Separate parsing from using Poisson series. | luc | |
Added support for parsing CCSDS ODM files (OPM, OMM and OEM). Thanks to Steven Ports. | luc | |
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 | |
Fixed azimuth parameter in the TopocentricFrame.pointAtDistance method. Fixes issue #145. | luc | |
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 | |
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 | |
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 | |
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 | |
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 | |
Added IERS 1996 in the list of supported IERS conventions. | luc | |
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 | |
Fixed non-bracketing exception while converting Cartesian points very close to equator into geodetic coordinates. Fixes issue #141. | luc | |
Added getAngularVelocity() to PVCoordinates. | evan | |
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 | |
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 | |
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 | |
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 | |
Fixed GTOD and Veis frame that did apply UT1-UTC correction when they should not (fixes issue #131). | luc | |
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 |
Type | Changes | By |
---|---|---|
Fixed conversion of mean anomaly to hyperbolic eccentric anomaly (fixes issue #135). | pascal | |
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 | |
Fixed event g function correction when starting exactly at 0 with a backward propagation (fixes issue #125). | luc | |
Error messages properties are now loaded directly in UTF-8. | luc | |
Added a way to know which tide system is used in gravity fields (zero-tide, tide-free or unknown). | luc | |
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 | |
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 | |
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 | |
Greatly improved performance of time-stamped caches for data that is read only once (like UTC leap seconds history or EOP). | evan | |
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 | |
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 | |
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 | |
Added a way to retrieve all additional states at once from a step interpolator. | luc | |
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 | |
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 | |
Atmosphere models now provide their central body frame. | luc | |
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 | |
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 | |
Added analytical computation of partial derivatives for third-body attraction. | luc | |
Added analytical computation of partial derivatives for constant thrust maneuvers. | luc | |
Converted Newtonian force model to use the new partial derivatives framework. | luc | |
Converted Holmes-Featherstone force model to use the new partial derivatives framework. | luc | |
Added analytical computation of partial derivatives for surface forces (drag and radiation pressure) for all supported spacecraft body shapes. | luc | |
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 | |
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 | |
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 | |
Updated Orekit to version 3.1.1 of Apache Commons Math. | luc | |
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 | |
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 | |
The EGM gravity field reader did not complain when files with missing coefficients were provided, even when asked to complain. | luc | |
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 | |
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 | |
Removed weak hash maps in frames (fixes bug #122). Thanks to Evan Ward. | luc | |
Improved documentation of interpolation methods (fixes bug #123). Thanks to Bruno Revelin. | luc | |
Make TIRF2000Provider class thread-safe (fixes bug #118). Thanks to Evan Ward. | tn | |
Correct spelling of the inner class QuadratureComputation (fixes bug #120). Thanks to Christophe Le Bris. | tn | |
Remove unnecessary synchronization in UT1Scale (fixes bug #119). Thanks to Evan Ward. | tn | |
Clear caches in CelestialBodyFactory when removing CelestialBodyLoaders (fixes bug #106). Thanks to Carlos Casas. | tn | |
Fix loading of JPL ephemerides files with overlapping periods (fixes bug #113). Thanks to Yannick Tanguy. | tn | |
Prevent initialization exception in UTCScale in case no user-defined offsets are provided. (fixes bug #111). Thanks to Simon Billemont. | tn | |
Improved performance by caching EME2000 frame in AbstractCelestialBody (fixes bug #116). Thanks to Evan Ward. | luc | |
Make TidalCorrections class thread-safe by using the new TimeStampedCache. (fixes bug #117). Thanks to Evan Ward. | tn | |
Convert position entries contained in SP3 files to meters instead of km (fixes bug #112). Thanks to Evan Ward. | tn | |
Added support for version 2011 of ICGEM gravity field format. Orekit still ignore the time-dependent part of these fields, though. | luc | |
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 | |
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 | |
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 | |
Added an AngularCoordinates as an angular counterpart to PVCoordinates. | luc | |
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 | |
Fixed wrong transform for 3D lines (fixes bug #101). | luc | |
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 | |
Added a way to build TLE propagators with attitude providers and mass (fixes bug #84). Thanks to Francesco Rocca. | luc | |
Fixed numerical stability errors for high order gravity field in Cunningham model (fixes bug #97). | luc | |
Fixed an error in radiation pressure for BoxAndSolarArraySpacecraft (fixes bug #92). Thanks to Yannick Tanguy. | luc | |
Added models for tropospheric delay and geomagnetic field. | thomas | |
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 | |
Time scales are not serializable anymore (this induced problems for the UTC scale and its caching feature). | luc | |
Fixed TLE propagation in deep space when inclination is exactly 0 (fixes bug #88). | luc | |
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 | |
Improved testing of error messages. | luc | |
Removed too stringent test on trajectory in TLE propagator (fixes bug #86). | luc | |
Set the initial state for a TLEPropagator (fixes bug #85). | thomas | |
Improved testing of error messages. | luc | |
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 | |
Removed code deprecated before 5.0. | luc | |
Added support for more recent JPL DExxx and INPOP ephemerides files (fixes feature #23). | thomas | |
Fixed formatting of very small values in TLE lines (fixes bug #77). | luc | |
Fixed formatting of TLE epoch (fixes bug #74). | thomas | |
Fixed performance issues when using the singleton UTCScale instance from multiple threads. Use a prototype pattern instead (fixes bug #33). | thomas | |
Added J2 effect on small maneuvers model. | luc | |
Fixed attitudeProvider field masking in IntegratedEphemeris. | luc | |
Added a tutorial to compute Earth phased, Sun synchronous orbits. | luc | |
Added a fitter for osculating parameters, allowing conversion to mean parameters. | luc | |
Made Greenwich mean and apparent sidereal time publicly visible in GTOD frame. | luc | |
Made equation of equinoxes sidereal time publicly visible in TOD frame. | luc | |
Added more german translations for error messages. | thomas | |
Allow ClasspathCrawler and ZipJarCrawler data providers to work in OSGi environments by providing an explicit class loader (fixes bug #54). | luc | |
Improved the small maneuvers analytical model to compute orbit Jacobian with respect to maneuver parameters. | luc | |
Force impulse maneuver to preserve orbit type and orbit frame. | luc | |
Added sp3 file parser. | thomas | |
Added a method to compute frames transforms Jacobians in the Transform class. | luc | |
Fixed a problem with propagation over null or negative ranges. | luc | |
Added a multiplexer for step handlers. | luc | |
Added init methods to step handlers and event handlers. | luc | |
Added an adapter propagator that can add small maneuvers to any propagator, including ephemeris based ones. | luc | |
Added an analytical model for the effect at date t1 of a small maneuver performed at date t0. | luc | |
Fixed a missing reinitialization of start date when state was reset in numerical propagator. | luc | |
Added detection of attempts to create hyperbolic orbits as circular or equinoctial instances. | luc | |
Fixed potential numerical failure in lightning ratio computation. | pascal | |
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 | |
Added Harris-Priester atmosphere model. | pascal | |
Changed the return value of eventOccurred method from an int to an enumerate. | luc | |
Fixed frame for TLEPropagator (fixes bug #31). | pascal | |
Added getters/setters for impulse maneuvers. | luc | |
Added getters/setters for attitude provider in all orbit propagators. | luc | |
Added a method to compute visibility circles in TopocentricFrame. | luc | |
Added an equinox-based version of ITRF. | luc | |
Added getters for thrust, Isp and flow rate in constant thrust maneuvers. | luc | |
Allow use of any supported Local Orbital Frames as the reference frame for LofOffset attitude modes. | luc | |
Added support for LVLH, VVLH and VNC local orbital frames. | luc | |
Fixed a performance bug implying that some frames reloaded all EOP history files each time a transform was computed (fixes bug #26). | luc | |
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 | |
Fixed numerical issue in eccentricity computation (fixes bug #25) | luc | |
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 | |
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 | |
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 | |
Fixed missing partial derivatives data in ephemerides produced by a numerical propagator despite it was set up to computed them (fixes bug #16) | luc | |
Added a new much simpler way to log events occurrences all at once (or only a subset of the events if desired) | luc | |
Added alternative default name for ICGEM files | pascal | |
Fixed EventState reset on propagation direction change (fixes bug #19) | pascal | |
Fixed Jacobianizer so it can handle force models that do change the spacecraft mass, like ConstantThrustManeuver (fixes bug #18) | luc | |
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 | |
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 | |
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 | |
Added support for the Marshall Solar Activity Future Estimation files Thanks to Bruno Revelin. | luc | |
TLEPropagator now implements the Propagator interface, and hence can benefit from all events detection and mode handling features (fixes features request #4) | luc | |
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 | |
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 | |
propagation can now be done between two dates, regardless of the date of the initial state | véronique | |
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 | |
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 | |
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 | |
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 | |
added the ICRF frame at the solar system barycenter | luc | |
added the ITRF93, ITRF97, ITRF2000 and ITRF2008 frames (previously, only the ITRF2005 frame was available) | luc | |
added a getPoint method to TopocentricFrame | luc | |
added the Galileo System Time Scales and the Galileo start epoch. | luc | |
added the UT1, TCB and GMST time scales used in CCSDS Orbit Data Messages | luc | |
fixed an error when parsing a date occurring during a leap second introduction | luc | |
fixed a dut1 interpolation error for the day just before a leap second introduction | luc | |
fixed an error in JPL ephemerides: they are in TDB time scale | luc | |
fixed an error in date creation/parsing for UTC dates which occur during a leap second | luc | |
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 | |
added an enumerate for specifying months in dates and for simplifying parsing of some data files | luc | |
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 | |
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 | |
fixed an out of memory error when lots of temporary frames were created in loops and discarded | luc | |
use the new FastMath class from commons-math instead of the standard java.util.Math class for increased accuracy and speed | luc | |
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 | |
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 | |
Orekit now depends on at least version 3.0 of Apache commons-math | luc | |
added a way to list what data have been loaded through DataProvidersManager | luc | |
PropagationException can now be created directly from OrekitException, thus simplifying wrapping lower Orekit errors in step handlers | luc | |
improved exception propagation from low level java runtime and Apache commons-math libraries preserving initial error stack trace | luc | |
changed exception localization framework to simplify messages handling | luc | |
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 | |
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 | |
fixed an errors in data loading in tutorials when one of the path in the classpath contained a space | luc | |
improved CelestialBodyPointed attitude mode: the spin now correctly includes the coupling effect of the phasing reference | luc | |
fixed an error in SpinStabilized attitude mode: the spin was reversed with respect to the specification | luc | |
added a GroundMaskElevationDetector dealing with local physical mask for visibility | pascal | |
added an ApparentElevationDetector taking refraction into account in a terrestrial environment | pascal | |
enhanced DateDetector behaviour to allow adding new event dates on the fly | pascal | |
fixed an error in FramesFactory when getting ITRF2005 and TIRF2000 frames: ignoreTidalEffects was handled wrong. Thanks to Derek Surka. | pascal | |
removed serialization of some cached data in frames | luc | |
fixed deserialization problems of frame singletons, they were not unique any more | luc | |
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 | |
completely revamped the partial derivatives matrices computation using the additional equations mechanism | véronique | |
added a mechanism to integrate user-supplied additional equations alongside with orbital parameters during numerical propagation | véronique | |
use A. W. Odell and R. H. Gooding (1986) fast and robust solver for Kepler equation | luc | |
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 | |
fixed an error in LofOffset attitude mode: the computed attitude was reversed with respect to the specification | luc | |
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 | |
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 |
Type | Changes | By |
---|---|---|
Fixed a performance bug implying that some frames reloaded all EOP history files each time a transform was computed (fixes bug #26). | luc | |
Fixed a parsing bug in IERS Rapid Data and Prediction files for dates between 2000 and 2009. | luc |
Type | Changes | By |
---|---|---|
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 |
Type | Changes | By |
---|---|---|
updated packaging to allow deployment to maven central. | luc |
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 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 | |
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 |
No changes in this release.