Skip to content
Snippets Groups Projects
changes.xml 89.2 KiB
Newer Older
<?xml version="1.0" encoding="UTF-8" ?>
Luc Maisonobe's avatar
Luc Maisonobe committed
<!-- Copyright 2002-2014 CS Systèmes d'Information
  Licensed to CS Systèmes d'Information (CS) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  CS licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<document>
  <properties>
    <title>Orekit Changes</title>
  </properties>
  <body>
    <release version="7.0" date="2015-01-11"
Luc Maisonobe's avatar
Luc Maisonobe committed
             description="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.">
      <action dev="hankg" type="add">
        Added bilinear interpolator and use it on Saastamoinen model.
        Implements feature #182.
      </action>
      <action dev="luc" type="update">
        Removed old parts that were deprecated in previous versions.
      </action>
      <action dev="luc" type="update">
        Updated dependency to Apache Commons Math 3.4, released on 2014-12-26.
      </action>
      <action dev="luc" type="fix">
        Fixed null vector normalization when attempting to project to ground a point already on ground.
        Fixes issue #181.
      </action>
      <action dev="luc" type="add" due-to="Lucian Barbulescu">
        Added Romanian localization for error messages.
      </action>
      <action dev="luc" type="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.
      </action>
      <action dev="luc" type="fix">
        Improved acceleration output in Eckstein-Hechler model.
      <action dev="luc" type="add">
        Added projection of moving point (i.e. position and derivatives too) to
        ground surface.
      <action dev="luc" type="add">
        Added a general 3 axes ellipsoid class, including a feature to compute
        any plane section (which result in a 2D ellipse).
      <action dev="luc" type="add">
        Added support for IERS bulletin A (rapid service and prediction)
      </action>
      <action dev="tn" type="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.
Luc Maisonobe's avatar
Luc Maisonobe committed
      <action dev="luc" type="fix" due-to="Patrice Mathieu">
        Fixed closest TLE search. When filtering first from satellite ID and
        then extracting closest date, the returned satellite was sometime wrong.
      </action>
      <action dev="luc" type="add" due-to="Hank Grabowski">
        Allow attitude overriding during impulsive maneuvers.
        Fixes issue #176.  
      </action>
      <action dev="evan" type="add">
          Added general relativity force model.
      </action>
      <action dev="luc" type="add" due-to="Ioanna Stypsanelli">
        added Greek localization for error messages.
      </action>
Evan Ward's avatar
Evan Ward committed
      <action dev="evan" type="fix">
          Fixed incorrect partial derivatives for force models that depend on satellite velocity.
          Fixes #174.
      </action>
      <action dev="evan" type="fix">
          Fixed incorrect parameters set in NumericalPropagatorBuilder.
          Fixes #175.
      </action>
      <action dev="luc" type="update" >
        Significantly reduced size of various serialized objects.
      </action>
      <action dev="luc" type="update" >
        PVCoordinatesProvider now produces time-stamped position-velocities.
      </action>
      <action dev="luc" type="update" >
        Tabulated attitude provider can be built directly from time-stamped angular coordinates
        lists, in addition to attitudes lists.
      </action>
      <action dev="luc" type="add" >
        Added time-stamped versions of position-velocity and angular coordinates.
      </action>
      <action dev="luc" type="fix" due-to="Daniel Aguilar Taboada">
        Fixed wrong rotation interpolation for rotations near π.
        Fixes issue #173.
      </action>
      <action dev="luc" type="update" >
        Updated dependency to Apache Commons Math 3.3.
      </action>
      <action dev="luc" type="update" due-to="Lucian Barbulescu, Nicolas Bernard">
        Added short periodics for DSST propagation.
      </action>
      <action dev="luc" type="add" >
        Added a GeographicZoneDetector event detector for complex geographic zones traversal.
        Fixes issue #163.
      </action>
Evan Ward's avatar
Evan Ward committed
      <action dev="evan" type="fix">
        Add Ecliptic frame. Agrees with JPL ephemerides to within 0.5 arcsec.
        Issue #166.
      </action>
      <action dev="evan" type="fix">
        Fix cache exception when propagating backwards with an interpolated
        gravity force model.
        Fixes issue #169.
      </action>
      <action dev="luc" type="fix">
        Fixed parsing of dates very far in the future.
        Fixes issue #171.
      </action>
      <action dev="luc" type="fix">
        Trigger an exception when attempting to interpolate attitudes without rotation rate
        using only one data point.
      </action>
      <action dev="evan" type="fix">
        Fixed SpacecraftState date mismatch exception with some attitude providers.
      </action>
      <action dev="luc" type="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.
      </action>
      <action dev="luc" type="update" due-to="Lucian Barbulescu">
        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.
      </action>
      <action dev="luc" type="update" due-to="Lucian Barbulescu">
        Avoid recomputing Chi and Chi^2 in Hansen coefficients for tesseral.
      </action>
      <action dev="luc" type="update" due-to="Nicolas Bernard">
        Added better handling of Hansen kernel computation through use of PolynomialFunction.
      </action>
      <action dev="luc" type="update" due-to="Petre Bazavan">
        Compute Hansen coefficients using linear transformation.
      </action>
      <action dev="luc" type="fix" >
        Fixed a non-bracketing exception in event detection, in some rare cases of noisy g function.
        Fixes issue #160.
      </action>
      <action dev="luc" type="fix" >
        Fixed a missing reset of resonant tesseral terms in DSST propagation.
        Fixes issue #159.
      </action>
      <action dev="luc" type="fix" >
        Improved default max check interval for NodeDetector, so it handles correctly
        highly eccentric orbits.
        Fixes issue #158.
      </action>
Luc Maisonobe's avatar
Luc Maisonobe committed
    <release version="6.1" date="2013-12-13"
             description="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.">
      <action dev="luc" type="fix" >
        Reduced number of calls to the g function in event detectors.
        Fixes issue #108.
      </action>
      <action dev="luc" type="fix" >
        Fixed a spurious backward propagation.
        Fixes issue #107.
      </action>
      <action dev="luc" type="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.
      </action>
      <action dev="luc" type="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.
      </action>
      <action dev="luc" type="add" >
        Added high degree ocean load deformation coefficients computed by Pascal
        Gégout (CNRS / UMR5563 - GET).
      </action>
      <action dev="luc" type="add" >
        Time scales are now serializable.
      </action>
      <action dev="luc" type="add" due-to="Nicolas Bernard">
        Improved DSST tesseral computation efficiency by caching Jacobi polynomials.
      </action>
      <action dev="luc" type="fix" due-to="Daniel Aguilar Taboada">
        Fixed yaw steering attitude law, which didn't project spacecraft velocity correctly.
        Fixes issue #156.
      </action>
      <action dev="luc" type="add" >
        Added a way to set the maximum number of iterations for events detection.
        Fixes issue #155.
      </action>
      <action dev="luc" type="add">
        Added an attitude provider from tabulated attitudes.
        Fixes issue #154.
      </action>
Luc Maisonobe's avatar
Luc Maisonobe committed
      <action dev="luc" type="add" due-to="Hank Grabowski">
        Improved test coverage.
        Fixes issue #153.
      </action>
      <action dev="luc" type="add" due-to="Hank Grabowski">
        Merged all elevation detectors into one. The new detector supports all
        features from the previous (and now deprecated) ApparentElevationDetector
        and GroundMaskElevationDetector.
        Fixes issue #144.  
      </action>
      <action dev="luc" type="add" due-to="Hank Grabowski">
        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.
      </action>
      <action dev="luc" type="fix" due-to="Christophe Le Bris">
        Fixed an indexing error in Harris-Priester model.
        Fixes issue #152.
      </action>
      <action dev="luc" type="add">
        Added a new force model for ocean tides in numerical propagation, including pole tides.
        Fixes issue #11.
      </action>
      <action dev="luc" type="fix" due-to="Lucian Barbulescu">
        Fixed conversion from position-velocity to Keplerian, when the orbit is
        perfectly equatorial.
        Fixes issue #151.
      </action>
      <action dev="luc" type="add">
        Added a new force model for solid tides in numerical propagation, including pole tides.
      <action dev="luc" type="add">
        Added a way to select IERS conventions for non-rotating origin
        based ITRF.
      </action>
      <action dev="luc" type="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.
      <action dev="luc" type="fix">
        Fixed missing nutation correction in Equation Of Equinoxes.
        Fixes issue #150.
      </action>
      <action dev="luc" type="fix">
        Fixed rate for TCB time scale.
      </action>
      <action dev="luc" type="add">
        Added new definition of astronomical unit from IAU-2012 resolution B2.
      </action>
      <action dev="luc" type="fix">
        Fixed Date/Time split problem when date is a few femto-seconds before the end of the day.
        Fixes issue #149.
      </action>
      <action dev="luc" type="fix">
        Fixed overflow problem in TimeComponents.
        Fixes issue #148.
      </action>
      <action dev="luc" type="update">
        Separate parsing from using Poisson series.
      </action>
      <action dev="luc" type="add" due-to="Steven Ports">
        Added support for parsing CCSDS ODM files (OPM, OMM and OEM).
      </action>
      <action dev="luc" type="update">
        Flattened ITRF frames tree so all supported ITRF realizations (2005, 2000, 97, 93) share the same
        parent ITRF2008. Previously, the tree was 2008 &lt;- 2005 &lt;- 2000 &lt;- {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.
      </action>
      <action dev="luc" type="fix">
        Fixed azimuth parameter in the TopocentricFrame.pointAtDistance method.
        Fixes issue #145.
      </action>
      <action dev="luc" type="fix"  due-to="Matt Edwards">
        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.
      </action>
      <action dev="luc" type="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.
      </action>
      <action dev="luc" type="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).
      </action>
      <action dev="luc" type="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).
      </action>
      <action dev="luc" type="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.
      </action>
      <action dev="luc" type="add" >
        Added IERS 1996 in the list of supported IERS conventions.
      </action>
      <action dev="luc" type="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.
      </action>
      <action dev="luc" type="fix" >
        Fixed non-bracketing exception while converting Cartesian points very close to equator into geodetic
        coordinates. Fixes issue #141.
      </action>
Luc Maisonobe's avatar
Luc Maisonobe committed
      <action dev="evan" type="add" >
        Added getAngularVelocity() to PVCoordinates.
      </action>
      <action dev="luc" type="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.
      </action>
      <action dev="luc" type="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.
      </action>
      <action dev="luc" type="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.
      </action>
      <action dev="luc" type="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...).
      </action>
      <action dev="luc" type="fix" >
        Fixed GTOD and Veis frame that did apply UT1-UTC correction when they should not (fixes issue #131).
      </action>
      <action dev="luc" type="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.
      </action>
    <release version="6.0" date="2013-04-23"
             description="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.">
Pascal Parraud's avatar
Pascal Parraud committed
      <action dev="pascal" type="fix" >
        Fixed conversion of mean anomaly to hyperbolic eccentric anomaly (fixes issue #135).
      </action>
        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).
      </action>
      <action dev="luc" type="fix" >
        Fixed event g function correction when starting exactly at 0 with a backward
        propagation (fixes issue #125).
      </action>
      <action dev="luc" type="update" >
        Error messages properties are now loaded directly in UTF-8.
      </action>
      <action dev="luc" type="add" >
        Added a way to know which tide system is used in gravity fields (zero-tide,
        tide-free or unknown).
      </action>
Luc Maisonobe's avatar
Luc Maisonobe committed
      <action dev="luc" type="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.
      </action>
      <action dev="luc" type="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.
      </action>
      <action dev="pascal" type="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.
      </action>
      <action dev="evan" type="update" >
        Greatly improved performance of time-stamped caches for data that is
        read only once (like UTC leap seconds history or EOP).
      </action>
      <action dev="luc" type="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.
      </action>
      <action dev="luc" type="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).
      </action>
      <action dev="luc" type="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).
      <action dev="luc" type="add" >
        Added a way to retrieve all additional states at once from a step interpolator.
      </action>
      <action dev="luc" type="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).
      </action>
      <action dev="luc" type="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. 
      </action>
      <action dev="luc" type="add" >
        Atmosphere models now provide their central body frame.
      </action>
      <action dev="luc" type="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.
      </action>
      <action dev="luc" type="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...
      </action>
      <action dev="luc" type="add" >
        Added analytical computation of partial derivatives for third-body
        attraction.
      </action>
      <action dev="luc" type="add" >
        Added analytical computation of partial derivatives for constant
        thrust maneuvers.
      </action>
      <action dev="luc" type="update" >
        Converted Newtonian force model to use the new partial derivatives
        framework.
      </action>
      <action dev="luc" type="update" >
        Converted Holmes-Featherstone force model to use the new partial derivatives
        framework.
      </action>
      <action dev="luc" type="add" >
        Added analytical computation of partial derivatives for surface forces
        (drag and radiation pressure) for all supported spacecraft body shapes.
      </action>
      <action dev="luc" type="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. 
      </action>
      <action dev="luc" type="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).
      </action>
      <action dev="luc" type="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.
      </action>
      <action dev="luc" type="update" >
        Updated Orekit to version 3.1.1 of Apache Commons Math.
      </action>
      <action dev="luc" type="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.
      </action>
      <action dev="luc" type="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.
      </action>
      <action dev="luc" type="fix" >
        The EGM gravity field reader did not complain when files with missing
        coefficients were provided, even when asked to complain.
      </action>
      <action dev="luc" type="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.
      </action>
      <action dev="tn" type="fix" due-to="Yannick Tanguy">
        Throw an exception if the conversion of mean anomaly to hyperbolic
        eccentric anomaly does not converge in KeplerianOrbit (fixes bug #114).
      </action>
      <action dev="luc" type="fix" due-to="Evan Ward">
        Removed weak hash maps in frames (fixes bug #122).
      </action>
        <action dev="luc" type="fix" due-to="Bruno Revelin">
        Improved documentation of interpolation methods (fixes bug #123).
      </action>
      <action dev="tn" type="fix" due-to="Evan Ward">
        Make TIRF2000Provider class thread-safe (fixes bug #118).
      </action>
      <action dev="tn" type="fix" due-to="Christophe Le Bris">
        Correct spelling of the inner class QuadratureComputation (fixes bug #120).
      </action>
      <action dev="tn" type="fix" due-to="Evan Ward">
        Remove unnecessary synchronization in UT1Scale (fixes bug #119).
      </action>
      <action dev="tn" type="fix" due-to="Carlos Casas">
        Clear caches in CelestialBodyFactory when removing CelestialBodyLoaders
        (fixes bug #106).
      </action>
      <action dev="tn" type="fix" due-to="Yannick Tanguy">
        Fix loading of JPL ephemerides files with overlapping periods
        (fixes bug #113).
      </action>
      <action dev="tn" type="fix" due-to="Simon Billemont">
        Prevent initialization exception in UTCScale in case no user-defined
        offsets are provided. (fixes bug #111).
      <action dev="luc" type="fix" due-to="Evan Ward">
        Improved performance by caching EME2000 frame in AbstractCelestialBody
        (fixes bug #116).
      </action>
      <action dev="tn" type="fix" due-to="Evan Ward">
        Make TidalCorrections class thread-safe by using the new TimeStampedCache. 
        (fixes bug #117).
      </action>
      <action dev="tn" type="fix" due-to="Evan Ward">
        Convert position entries contained in SP3 files to meters instead of km
        (fixes bug #112).
      </action>
      <action dev="luc" type="add" >
        Added support for version 2011 of ICGEM gravity field format. Orekit
        still ignore the time-dependent part of these fields, though.
      </action>
      <action dev="luc" type="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)
      </action>
      <action dev="luc" type="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).
        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.
      </action>
      <action dev="luc" type="add" >
        Added an AngularCoordinates as an angular counterpart to PVCoordinates.
      <action dev="luc" type="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.
      </action>
      <action dev="luc" type="fix" >
        Fixed wrong transform for 3D lines (fixes bug #101).
      </action>
      <action dev="luc" type="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.
      </action>
      <action dev="luc" type="add" due-to="Francesco Rocca">
        Added a way to build TLE propagators with attitude providers and mass (fixes bug #84).
      </action>
      <action dev="luc" type="fix" >
        Fixed numerical stability errors for high order gravity field in Cunningham model (fixes bug #97).
      </action>
      <action dev="luc" type="fix" due-to="Yannick Tanguy">
        Fixed an error in radiation pressure for BoxAndSolarArraySpacecraft (fixes bug #92).
      </action>
      <action dev="thomas" type="add">
        Added models for tropospheric delay and geomagnetic field.
      </action>
      <action dev="luc" type="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.
      </action>
      <action dev="luc" type="update">
        Time scales are not serializable anymore (this induced problems for the UTC scale
        and its caching feature).
      </action>
      <action dev="luc" type="fix">
        Fixed TLE propagation in deep space when inclination is exactly 0 (fixes bug #88).
      </action>
      <action dev="pascal" type="add" due-to="Francesco Rocca">
        Added a package for spacecraft states to propagators conversion extending an
        original contribution for TLE (Orbit Converter for Two-Lines Elements) to all
        propagators.
      <action dev="luc" type="fix">
        Improved testing of error messages.
      </action>
      <action dev="luc" type="fix">
        Removed too stringent test on trajectory in TLE propagator (fixes bug #86).
      </action>      
      <action dev="thomas" type="fix">
      	Set the initial state for a TLEPropagator (fixes bug #85).
      <action dev="luc" type="update">
        Improved testing of error messages.
      </action>
      <action dev="luc" type="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).
      </action>
      <action dev="luc" type="update">
        Removed code deprecated before 5.0.
      </action>
      <action dev="thomas" type="add">
        Added support for more recent JPL DExxx and INPOP ephemerides files (fixes feature #23).
      </action>
      <action dev="luc" type="fix">
        Fixed formatting of very small values in TLE lines (fixes bug #77).
      </action>
      <action dev="thomas" type="fix">
        Fixed formatting of TLE epoch (fixes bug #74).
      </action>
      <action dev="thomas" type="fix">
        Fixed performance issues when using the singleton UTCScale instance from
        multiple threads. Use a prototype pattern instead (fixes bug #33).
      </action>
      <action dev="luc" type="add">
        Added J2 effect on small maneuvers model.
      </action>
      <action dev="luc" type="fix">
        Fixed attitudeProvider field masking in IntegratedEphemeris.
      </action>
      <action dev="luc" type="add">
        Added a tutorial to compute Earth phased, Sun synchronous orbits.
      </action>
      <action dev="luc" type="add">
        Added a fitter for osculating parameters, allowing conversion to mean parameters.
      </action>
      <action dev="luc" type="update">
        Made Greenwich mean and apparent sidereal time publicly visible in GTOD frame.
      </action>
      <action dev="luc" type="update">
        Made equation of equinoxes sidereal time publicly visible in TOD frame.
      </action>
      <action dev="thomas" type="update">
        Added more german translations for error messages.
      </action>
      <action dev="luc" type="fix">
        Allow ClasspathCrawler and ZipJarCrawler data providers to work in
        OSGi environments by providing an explicit class loader (fixes bug #54).
      </action>
      <action dev="luc" type="update">
        Improved the small maneuvers analytical model to compute orbit Jacobian
        with respect to maneuver parameters.
      </action>
      <action dev="luc" type="fix">
        Force impulse maneuver to preserve orbit type and orbit frame.
      </action>
      <action dev="thomas" type="add">
        Added sp3 file parser.
      </action>
      <action dev="luc" type="add">
        Added a method to compute frames transforms Jacobians in the Transform class.
      </action>
      <action dev="luc" type="fix">
        Fixed a problem with propagation over null or negative ranges.
      </action>
      <action dev="luc" type="add">
        Added a multiplexer for step handlers.
      </action>
      <action dev="luc" type="add">
        Added init methods to step handlers and event handlers.
      </action>
      <action dev="luc" type="add">
        Added an adapter propagator that can add small maneuvers to any propagator, including
        ephemeris based ones.
      </action>
      <action dev="luc" type="add">
        Added an analytical model for the effect at date t1 of a small maneuver performed at date t0.
      </action>
      <action dev="luc" type="fix">
        Fixed a missing reinitialization of start date when state was reset in numerical propagator.
      </action>
      <action dev="luc" type="update">
        Added detection of attempts to create hyperbolic orbits as circular or equinoctial
        instances.
      </action>
Pascal Parraud's avatar
Pascal Parraud committed
      <action dev="pascal" type="fix">
        Fixed potential numerical failure in lightning ratio computation.
      </action>
      <action dev="luc" type="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.
      </action>
      <action dev="pascal" type="add">
        Added Harris-Priester atmosphere model.
      </action>
      <action dev="luc" type="update">
        Changed the return value of eventOccurred method from an int to an enumerate.
      </action>
      <action dev="pascal" type="fix">
        Fixed frame for TLEPropagator (fixes bug #31).
      </action>
        Added getters/setters for impulse maneuvers.
      </action>
      <action dev="luc" type="add">
        Added getters/setters for attitude provider in all orbit propagators.
      </action>
      <action dev="luc" type="add">
        Added a method to compute visibility circles in TopocentricFrame.
      </action>
      <action dev="luc" type="add">
        Added an equinox-based version of ITRF.
      </action>
      <action dev="luc" type="add">
        Added getters for thrust, Isp and flow rate in constant thrust maneuvers.
      </action>
      <action dev="luc" type="add">
        Allow use of any supported Local Orbital Frames as the reference frame
        for LofOffset attitude modes.
      </action>
      <action dev="luc" type="add">
        Added support for LVLH, VVLH and VNC local orbital frames.
      </action>
      <action dev="luc" type="fix">
        Fixed a performance bug implying that some frames reloaded all EOP history files
        each time a transform was computed (fixes bug #26).
      </action>
      <action dev="luc" type="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
      </action>
      <action dev="luc" type="fix" >
        Fixed numerical issue in eccentricity computation (fixes bug #25)
      </action>
      <action dev="luc" type="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
      </action>
      <action dev="luc" type="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
      </action>
        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
      </action>
      <action dev="luc" type="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 Maisonobe's avatar
Luc Maisonobe committed
      <action dev="luc" type="fix" >
        Added a new much simpler way to log events occurrences all at once (or
        only a subset of the events if desired)
      </action>
      <action dev="pascal" type="add" >
        Added alternative default name for ICGEM files
      <action dev="pascal" type="fix" >
        Fixed EventState reset on propagation direction change (fixes bug #19)
      </action>
      <action dev="luc" type="fix" >
        Fixed Jacobianizer so it can handle force models that do change the spacecraft mass,
        like ConstantThrustManeuver (fixes bug #18)
      </action>
      <action dev="luc" type="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
      <action dev="luc" type="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
      </action>
      <action dev="luc" type="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)
      </action>
      <action dev="luc" type="add" due-to="Bruno Revelin">
        Added support for the Marshall Solar Activity Future Estimation files
      </action>
      <action dev="luc" type="fix">
        TLEPropagator now implements the Propagator interface, and hence can benefit from all
        events detection and mode handling features (fixes features request #4)
      </action>
      <action dev="luc" type="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
      </action>
      <action dev="v&#233;ronique" type="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
      </action>
Luc Maisonobe's avatar
Luc Maisonobe committed
      <action dev="v&#233;ronique" type="add" >
        propagation can now be done between two dates, regardless of the date of the initial state
      </action>
      <action dev="v&#233;ronique" type="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)
        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.
      </action>
      <action dev="luc" type="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.
        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
      </action>
      <action dev="luc" type="add">
        added the ICRF frame at the solar system barycenter
      <action dev="luc" type="add">
        added the ITRF93, ITRF97, ITRF2000 and ITRF2008 frames (previously, only
        the ITRF2005 frame was available)
      </action>
      <action dev="luc" type="add">
        added a getPoint method to TopocentricFrame
      <action dev="luc" type="add">
        added the Galileo System Time Scales and the Galileo start epoch.
      </action>
      <action dev="luc" type="add">
        added the UT1, TCB and GMST time scales used in CCSDS Orbit Data Messages
      </action>
      <action dev="luc" type="fix">
        fixed an error when parsing a date occurring during a leap second introduction
      <action dev="luc" type="fix">
        fixed a dut1 interpolation error for the day just before a leap second introduction
      </action>
      <action dev="luc" type="fix">
        fixed an error in JPL ephemerides: they are in TDB time scale
      </action>
      <action dev="luc" type="fix">
        fixed an error in date creation/parsing for UTC dates which occur during a
        leap second
      </action>
      <action dev="luc" type="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
      </action>
      <action dev="luc" type="add">
        added an enumerate for specifying months in dates and for simplifying parsing
        of some data files
      </action>
      <action dev="luc" type="add">