Class GNSSOrbitalElementsFactory<O extends GNSSOrbitalElements<O>>

java.lang.Object
org.orekit.orbits.AbstractOrbitalParameterFactory<O>
org.orekit.propagation.analytical.gnss.data.GNSSOrbitalElementsFactory<O>
Type Parameters:
O - type of the orbital elements
All Implemented Interfaces:
Cloneable, OrbitalParameterFactory<O>
Direct Known Subclasses:
AbstractNavigationMessageFactory, BeidouAlmanacFactory, GalileoAlmanacFactory, GPSAlmanacFactory, NavICAlmanacFactory, QZSSAlmanacFactory

public abstract class GNSSOrbitalElementsFactory<O extends GNSSOrbitalElements<O>> extends AbstractOrbitalParameterFactory<O>
Since:
14.0
  • Field Details

  • Constructor Details

    • GNSSOrbitalElementsFactory

      protected GNSSOrbitalElementsFactory(double angularVelocity, TimeScales timeScales, SatelliteSystem system, String type, Frame inertial, Frame bodyFixed, double mu)
      Simple constructor.
      Parameters:
      angularVelocity - mean angular velocity of the Earth for the GNSS model
      timeScales - known time scales
      system - satellite system to use for interpreting week number
      type - message type (null if not a navigation message)
      inertial - reference inertial frame
      bodyFixed - body fixed frame (will be frozen at date to build the orbital elements
      mu - central attraction coefficient (m³/s²)
  • Method Details

    • getInertial

      public Frame getInertial()
      Get the reference inertial frame.
      Returns:
      reference inertial frame
    • getBodyFixed

      public Frame getBodyFixed()
      Get the body fixed frame.
      Returns:
      body fixed frame
    • getAngularVelocity

      public double getAngularVelocity()
      Get the mean angular velocity of the Earth for the GNSS model.
      Returns:
      mean angular velocity of the Earth for the GNSS model
    • getTimeScales

      public TimeScales getTimeScales()
      Get known time scales.
      Returns:
      known time scales
    • getSystem

      public SatelliteSystem getSystem()
      Get the satellite system to use for interpreting week number.
      Returns:
      satellite system to use for interpreting week number
    • getType

      public String getType()
      Get the message type.
      Returns:
      Get the message type (null if not a navigation message)
    • getPrn

      public int getPrn()
      Get the PRN number of the satellite.
      Returns:
      PRN number of the satellite
    • setPrn

      public void setPrn(int prn)
      Set the PRN number of the satellite.
      Parameters:
      prn - PRN number of the satellite
    • setDate

      public void setDate(AbsoluteDate date)
      Set the date of the orbital parameters.
      Specified by:
      setDate in interface OrbitalParameterFactory<O extends GNSSOrbitalElements<O>>
      Overrides:
      setDate in class AbstractOrbitalParameterFactory<O extends GNSSOrbitalElements<O>>
      Parameters:
      date - date of the orbital parameters
    • setTimeOfEphemeris

      public void setTimeOfEphemeris(GNSSDate timeOfEphemeris)
      Set the time of ephemeris.

      If time of clock was not already set, it will be set to the same value as time of ephemeris as a side effect

      Parameters:
      timeOfEphemeris - time of ephemeris
    • getTimeOfEphemeris

      public GNSSDate getTimeOfEphemeris()
      Get the time of ephemeris.
      Returns:
      time of ephemeris
    • getTimeDriver

      public ParameterDriver getTimeDriver()
      Get driver for reference time of the GNSS orbit as a duration from week start.
      Returns:
      driver for reference time of the GNSS orbit (s)
      See Also:
    • getADotDriver

      public ParameterDriver getADotDriver()
      Get driver for change rate in semi-major axis.
      Returns:
      driver for the change rate in semi-major axis
    • getDeltaN0Driver

      public ParameterDriver getDeltaN0Driver()
      Get driver for the delta of satellite mean motion.
      Returns:
      driver for the delta of satellite mean motion
    • getDeltaN0DotDriver

      public ParameterDriver getDeltaN0DotDriver()
      Get driver for the change rate in Δn₀.
      Returns:
      driver for change rate in Δn₀
    • getIDotDriver

      public ParameterDriver getIDotDriver()
      Get driver for rate of inclination angle.
      Returns:
      driver for rate of inclination angle (rad/s)
    • getOmegaDotDriver

      public ParameterDriver getOmegaDotDriver()
      Get driver for rate of right ascension.
      Returns:
      driver for rate of right ascension (rad/s)
    • getCucDriver

      public ParameterDriver getCucDriver()
      Get driver for amplitude of the cosine harmonic correction term to the argument of latitude.
      Returns:
      driver for amplitude of the cosine harmonic correction term to the argument of latitude (rad)
    • getCusDriver

      public ParameterDriver getCusDriver()
      Get driver for amplitude of the sine harmonic correction term to the argument of latitude.
      Returns:
      driver for amplitude of the sine harmonic correction term to the argument of latitude (rad)
    • getCrcDriver

      public ParameterDriver getCrcDriver()
      Get driver for amplitude of the cosine harmonic correction term to the orbit radius.
      Returns:
      driver for amplitude of the cosine harmonic correction term to the orbit radius (m)
    • getCrsDriver

      public ParameterDriver getCrsDriver()
      Get driver for amplitude of the sine harmonic correction term to the orbit radius.
      Returns:
      driver for amplitude of the sine harmonic correction term to the orbit radius (m)
    • getCicDriver

      public ParameterDriver getCicDriver()
      Get driver for amplitude of the cosine harmonic correction term to the angle of inclination.
      Returns:
      driver for amplitude of the cosine harmonic correction term to the angle of inclination (rad)
    • getCisDriver

      public ParameterDriver getCisDriver()
      Get driver for amplitude of the sine harmonic correction term to the angle of inclination.
      Returns:
      driver for amplitude of the sine harmonic correction term to the angle of inclination (rad)
    • getAf0Driver

      public ParameterDriver getAf0Driver()
      Get driver for SV zero-th order clock correction.
      Returns:
      driver for SV zero-th order clock correction (s)
    • getAf1Driver

      public ParameterDriver getAf1Driver()
      Get driver for SV first order clock correction.
      Returns:
      driver for SV first order clock correction (s/s)
    • getAf2Driver

      public ParameterDriver getAf2Driver()
      Get driver for SV second order clock correction.
      Returns:
      driver for SV second order clock correction (s/s²)
    • setTimeOfClock

      public void setTimeOfClock(GNSSDate timeOfClock)
      Set the time of clock.

      If time of ephemeris was not already set, it will be set to the same value as time of clock as a side effect

      Parameters:
      timeOfClock - time of clock
    • getTimeOfClock

      public GNSSDate getTimeOfClock()
      Get the time of clock.
      Returns:
      time of clock
    • getNonKeplerianParametersDrivers

      public ParameterDriversList getNonKeplerianParametersDrivers()
      Get the drivers for additional drivers for non-Keplerian motion.
      Specified by:
      getNonKeplerianParametersDrivers in interface OrbitalParameterFactory<O extends GNSSOrbitalElements<O>>
      Overrides:
      getNonKeplerianParametersDrivers in class AbstractOrbitalParameterFactory<O extends GNSSOrbitalElements<O>>
      Returns:
      drivers for non-Keplerian motion
    • getTgd

      public double getTgd()
      Get the estimated group delay differential TGD for L1-L2 correction.
      Returns:
      the estimated group delay differential TGD for L1-L2 correction (s)
    • setTgd

      public void setTgd(double tgd)
      Set the estimated group delay differential TGD for L1-L2 correction.
      Parameters:
      tgd - estimated group delay differential TGD for L1-L2 correction (s)
    • toArray

      protected double[] toArray(Orbit orbit)
      Convert an input into an array suitable to feed orbital parameters drivers.
      Specified by:
      toArray in class AbstractOrbitalParameterFactory<O extends GNSSOrbitalElements<O>>
      Parameters:
      orbit - orbit to convert
      Returns:
      arrays corresponding to orbit
    • getJacobianWrtParameters

      public RealMatrix getJacobianWrtParameters()
      Get the Jacobian of the Cartesian coordinates with respect to the orbital parameters.

      The Jacobian is evaluated at the current drivers values, at the factory date and in the factory frame.

      Returns:
      jacobian matrix dC/dB, where C are the Cartesian coordinates and B the orbital parameters this factory is built upon
    • jacobianWrtParameters

      public static <O extends GNSSOrbitalElements<O>> RealMatrix jacobianWrtParameters(O elements, Frame eci, Frame ecef)
      Get the Jacobian of the Cartesian coordinates with respect to the orbital elements.

      The GNSS orbital elements are related to the Cartesian coordinates by the GNSS propagation model itself, which has no closed-form derivatives, so the Jacobian is obtained by automatic differentiation: the six Keplerian-like orbital elements are turned into Gradient variables and the elements are evaluated at their own epoch. The non-Keplerian elements are held constant.

      Type Parameters:
      O - type of the GNSS orbital elements
      Parameters:
      elements - GNSS orbital elements the Jacobian is computed with respect to
      eci - Earth Centered Inertial frame the Cartesian coordinates are expressed in
      ecef - Earth Centered Earth Fixed frame the node longitude refers to
      Returns:
      jacobian matrix dC/dB, at the elements epoch
    • createOrbitFromDrivers

      protected KeplerianOrbit createOrbitFromDrivers()
      Create orbit from Keplerian elements drivers.
      Returns:
      created orbit
    • buildOrbitalDrivers

      public static ParameterDriversList buildOrbitalDrivers()
      Build drivers for orbital elements.
      Returns:
      drivers for orbital elements only