Main differences between V4.15 and V4.14

De Wiki
Aller à : navigation, rechercher

PATRIUS V4.15 is a major release adding some new features and correcting some bugs.

New functionalities

  • A method LLHCoordinatesSystem.ELLIPSODETIC.computeLLHRates() allows the calculation of the temporal variation rates of LLH coordinates (longitude, latitude, height). Two variants are available: an analytical calculation for revolution ellipsoids (OneAxisEllipsoid), derived from the SIRIUS FDS, and a numerical calculation by finite differences for other types of ellipsoids (ThreeAxisEllipsoid). The choice of algorithm is automatic according to the type of body passed as a parameter.
  • The QR matrix decomposition algorithms (class QRDecomposition) are optimized to account for the handling of sparse matrices. With the use of new algorithms in the context of the GPS constellation, the gain factor ranges from 1 (meaning no improvement for small full matrices) to 4 (for large sparse matrices), depending on the structure and size of the matrices. These figures were observed on a machine with 12 cores.
  • The MSIS000Adapter class has been removed and replaced by MSISE2000. This removal is justified notably by the fact that the getVelocity() method of the MSIS00Adapter class is erroneous. It systematically returns a speed of 0 because the derivative of the ERA is reported as a rotation and not as an angular velocity in the Transform.
  • The 6th order linear Runge Kutta interpolator present in Patrius up to and including version 4.14 has been replaced by a more precise nonlinear interpolator, identical to the one used in STELA. The existing code in STELA has been ported to Patrius in the RungeKutta6Integrator and RungeKutta6StepInterpolator classes.
  • An enumeration has been added to the AbstractLyddanePropagator class to better calculate average orbits with the analytical Lyddane propagator, even for orbits with an eccentricity close to 0.05 for which this model presents a discontinuity.
  • The uses of the CelestialBody and CelestialPoint classes have been reduced to the strict necessary, with replacements by a PVCoordinatesProvider instead.
  • The SensorModel class now includes a maxIter parameter to control the maximum number of iterations. By default, this parameter is set to VacuumSignalPropagationModel.DEFAULT_MAX_ITER (100).
  • Some unit tests have been modified to use a configuration of the type PatriusConfiguration.NEW_MODELS.
  • Update of the PATRIUS training and creation of a specific GitLab repository for the associated documentation and for the training modules.
  • The slew duration computation method IsisSpinBiasSlewComputer#computeDuration now returns a warning message when the maximum number of iterations is reached.
  • A method BSPEphemerisLoader#manageSpecialSegments allows filtering of special segments (e.g. TT-TDB time correction segments) from BSP files that simultaneously present:
    • an observerID = 1000000000;
    • targetID = 1000000001.

Bugs fixes

  • Renaming of a test method related to the renaming of the PredefinedFrame class.
  • Addition of further clarifications (javadoc) regarding the existing limitations of an eclipse detector when used to detect ground visibility.
  • The BodyCenterPointing class now uses the closest pseudo-inertial ancestor of the PVCoordinatesProvider provided as a parameter instead of forcing the use of EME2000 as before. Additionally, the calculation of the Keplerian jerk is now disabled in the case of undefined or zero acceleration.
  • The error messages returned by AbsoluteDateInterval are now more explicit and maintain the same type of exception as before.
  • The method Ellipsoid.runNewtonAlgorithmLine() has been modified to improve the starting point of the algorithm for calculating the closest point on an ellipsoid along a line.
  • The method Ellipsoid.runNewtonAlgorithm() has been modified to improve the starting point of the algorithm for calculating the closest point to another on the surface of the ellipsoid, especially in cases where the point of interest is inside the ellipsoid.
  • The epoch used in the method PrecessionNutationInterpolation.generateMeshDate(date) now takes into account the date offset, strengthening the conversion to the CIRF reference frame.
  • Some messages returned by DimensionMismatchException have been made more precise.
  • The SerializablePredicate class has been moved to the package src/main/java/fr/cnes/sirius/patrius/utils/serializablefunction/SerializablePredicate.java.
  • The method Vector2D.angle() has been made more robust to avoid calculating the arccosine of a value less than -1 or greater than 1.
  • Further corrections regarding the consideration of inertial velocity in certain detectors and throwing an exception when this is unlikely.
  • Consideration of the activation of the centralTermContribution boolean in ThirdBodyAttraction#computeAcceleration.
  • Correction in the inversion of columns regarding DDEPS_FIELD and DDPSI_FIELD in the reading of EOP IAU 1980 files.
  • Correction in the execution of a test on Jenkins regarding the class EclipticJ2000Provider.
  • Consideration of errors and omissions in classes derived from IGeometricFieldOfView.
  • Additional corrections in the PATRIUS Wiki documentation.