Class JPLEphemeridesLoader

java.lang.Object
org.orekit.data.AbstractSelfFeedingLoader
org.orekit.bodies.JPLEphemeridesLoader
All Implemented Interfaces:
CelestialBodyLoader

public class JPLEphemeridesLoader extends AbstractSelfFeedingLoader implements CelestialBodyLoader
Loader for JPL ephemerides binary files (DE 4xx) and similar formats (INPOP 06/08/10).

JPL ephemerides binary files contain ephemerides for all solar system planets.

The JPL ephemerides binary files are recognized thanks to their base names, which must match the pattern [lu]nx[mp]####.ddd (or [lu]nx[mp]####.ddd.gz for gzip-compressed files) where # stands for a digit character and where ddd is an ephemeris type (typically 405 or 406).

The loader supports files encoded in big-endian as well as in little-endian notation. Usually, big-endian files are named unx[mp]####.ddd, while little-endian files are named lnx[mp]####.ddd.

The IMCCE ephemerides binary files are recognized thanks to their base names, which must match the pattern inpop*.dat (or inpop*.dat.gz for gzip-compressed files) where * stands for any string.

The loader supports files encoded in big-endian as well as in little-endian notation. Usually, big-endian files contain bigendian in their names, while little-endian files contain littleendian in their names.

The loader supports files in TDB or TCB time scales.

Author:
Luc Maisonobe
  • Field Details

    • DEFAULT_DE_SUPPORTED_NAMES

      public static final String DEFAULT_DE_SUPPORTED_NAMES
      Default supported files name pattern for JPL DE files.
      See Also:
    • DEFAULT_DE_2021_SUPPORTED_NAMES

      public static final String DEFAULT_DE_2021_SUPPORTED_NAMES
      Default supported files name pattern for JPL DE files.
      See Also:
    • DEFAULT_INPOP_SUPPORTED_NAMES

      public static final String DEFAULT_INPOP_SUPPORTED_NAMES
      Default supported files name pattern for IMCCE INPOP files.
      See Also:
  • Constructor Details

    • JPLEphemeridesLoader

      @DefaultDataContext public JPLEphemeridesLoader(String supportedNames, JPLEphemeridesLoader.EphemerisType generateType)
      Create a loader for JPL ephemerides binary files. This constructor uses the default data context.
      Parameters:
      supportedNames - regular expression for supported files names
      generateType - ephemeris type to generate
      See Also:
    • JPLEphemeridesLoader

      public JPLEphemeridesLoader(String supportedNames, JPLEphemeridesLoader.EphemerisType generateType, DataProvidersManager dataProvidersManager, TimeScales timeScales, Frame gcrf, CelestialBodies celestialBodies)
      Create a loader for JPL ephemerides binary files.

      Requiring celestialBodies to be passed to this constructor is not a great design when this class is used to load the data for celestialBodies. But this loader needs to know the ICRF and Earth Moon Barycenter frames used by celestialBodies to avoid creating duplicate frames, as was done in Orekit 13 and before.

      Parameters:
      supportedNames - regular expression for supported files names
      generateType - ephemeris type to generate
      dataProvidersManager - provides access to the ephemeris files.
      timeScales - used to access the TCB and TDB time scales while loading data.
      gcrf - Earth centered frame aligned with ICRF.
      celestialBodies - used to load the ICRF and Earth-Moon Barycenter frames.
      Since:
      14.0
  • Method Details

    • loadCelestialBody

      public CelestialBody loadCelestialBody(String name)
      Load celestial body.
      Specified by:
      loadCelestialBody in interface CelestialBodyLoader
      Parameters:
      name - name of the celestial body
      Returns:
      loaded celestial body
    • loadLibration

      public JPLLibration loadLibration()
      Load libration.
      Returns:
      loaded libration
      Since:
      14.0
    • getLoadedAstronomicalUnit

      public double getLoadedAstronomicalUnit()
      Get astronomical unit.
      Returns:
      astronomical unit in meters
    • getLoadedEarthMoonMassRatio

      public double getLoadedEarthMoonMassRatio()
      Get Earth/Moon mass ratio.
      Returns:
      Earth/Moon mass ratio
    • getLoadedGravitationalCoefficient

      public double getLoadedGravitationalCoefficient(JPLEphemeridesLoader.EphemerisType body)
      Get the gravitational coefficient of a body.
      Parameters:
      body - body for which the gravitational coefficient is requested
      Returns:
      gravitational coefficient in m³/s²
    • getLoadedConstant

      public double getLoadedConstant(String... names)
      Get a constant defined in the ephemerides headers.

      Note that since constants are defined in the JPL headers files, they are available as soon as one file is available, even if it doesn't match the desired central date. This is because the header must be parsed before the dates can be checked.

      There are alternate names for constants since for example JPL names are different from INPOP names (Sun gravity: GMS or GM_Sun, Mars gravity: GM4 or GM_Mar...).

      Parameters:
      names - alternate names of the constant
      Returns:
      value of the constant of NaN if the constant is not defined
    • getMaxChunksDuration

      public double getMaxChunksDuration()
      Get the maximal chunks duration.
      Returns:
      chunks maximal duration in seconds