GNSSOrbitalElements.java

  1. /* Copyright 2002-2020 CS GROUP
  2.  * Licensed to CS GROUP (CS) under one or more
  3.  * contributor license agreements.  See the NOTICE file distributed with
  4.  * this work for additional information regarding copyright ownership.
  5.  * CS licenses this file to You under the Apache License, Version 2.0
  6.  * (the "License"); you may not use this file except in compliance with
  7.  * the License.  You may obtain a copy of the License at
  8.  *
  9.  *   http://www.apache.org/licenses/LICENSE-2.0
  10.  *
  11.  * Unless required by applicable law or agreed to in writing, software
  12.  * distributed under the License is distributed on an "AS IS" BASIS,
  13.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14.  * See the License for the specific language governing permissions and
  15.  * limitations under the License.
  16.  */
  17. package org.orekit.propagation.analytical.gnss;

  18. import org.orekit.time.TimeStamped;

  19. /** This interface provides the minimal set of orbital elements needed by the {@link AbstractGNSSPropagator}.
  20. *
  21. * @author Pascal Parraud
  22. *
  23. */
  24. public interface GNSSOrbitalElements extends TimeStamped {

  25.     /**
  26.      * Gets the PRN number of the GNSS satellite.
  27.      *
  28.      * @return the PRN number of the GNSS satellite
  29.      */
  30.     int getPRN();

  31.     /**
  32.      * Gets the Reference Week of the GNSS orbit.
  33.      *
  34.      * @return the Reference Week of the GNSS orbit within [0, 1024[
  35.      */
  36.     int getWeek();

  37.     /**
  38.      * Gets the Reference Time of the GNSS orbit as a duration from week start.
  39.      *
  40.      * @return the Reference Time of the GNSS orbit (s)
  41.      */
  42.     double getTime();

  43.     /**
  44.      * Gets the Semi-Major Axis.
  45.      *
  46.      * @return the Semi-Major Axis (m)
  47.      */
  48.     double getSma();

  49.     /**
  50.      * Gets the Mean Motion.
  51.      *
  52.      * @return the Mean Motion (rad/s)
  53.      */
  54.     double getMeanMotion();

  55.     /**
  56.      * Gets the Eccentricity.
  57.      *
  58.      * @return the Eccentricity
  59.      */
  60.     double getE();

  61.     /**
  62.      * Gets the Inclination Angle at Reference Time.
  63.      *
  64.      * @return the Inclination Angle at Reference Time (rad)
  65.      */
  66.     double getI0();

  67.     /**
  68.      * Gets the Rate of Inclination Angle.
  69.      *
  70.      * @return the Rate of Inclination Angle (rad/s)
  71.      */
  72.     double getIDot();

  73.     /**
  74.      * Gets the Longitude of Ascending Node of Orbit Plane at Weekly Epoch.
  75.      *
  76.      * @return the Longitude of Ascending Node of Orbit Plane at Weekly Epoch (rad)
  77.      */
  78.     double getOmega0();

  79.     /**
  80.      * Gets the Rate of Right Ascension.
  81.      *
  82.      * @return the Rate of Right Ascension (rad/s)
  83.      */
  84.     double getOmegaDot();

  85.     /**
  86.      * Gets the Argument of Perigee.
  87.      *
  88.      * @return the Argument of Perigee (rad)
  89.      */
  90.     double getPa();

  91.     /**
  92.      * Gets the Mean Anomaly at Reference Time.
  93.      *
  94.      * @return the Mean Anomaly at Reference Time (rad)
  95.      */
  96.     double getM0();

  97.     /**
  98.      * Gets the Amplitude of the Cosine Harmonic Correction Term to the Argument of Latitude.
  99.      *
  100.      * @return the Amplitude of the Cosine Harmonic Correction Term to the Argument of Latitude (rad)
  101.      */
  102.     double getCuc();

  103.     /**
  104.      * Gets the Amplitude of the Sine Harmonic Correction Term to the Argument of Latitude.
  105.      *
  106.      * @return the Amplitude of the Sine Harmonic Correction Term to the Argument of Latitude (rad)
  107.      */
  108.     double getCus();

  109.     /**
  110.      * Gets the Amplitude of the Cosine Harmonic Correction Term to the Orbit Radius.
  111.      *
  112.      * @return the Amplitude of the Cosine Harmonic Correction Term to the Orbit Radius (m)
  113.      */
  114.     double getCrc();

  115.     /**
  116.      * Gets the Amplitude of the Sine Harmonic Correction Term to the Orbit Radius.
  117.      *
  118.      * @return the Amplitude of the Sine Harmonic Correction Term to the Orbit Radius (m)
  119.      */
  120.     double getCrs();

  121.     /**
  122.      * Gets the Amplitude of the Cosine Harmonic Correction Term to the Angle of Inclination.
  123.      *
  124.      * @return the Amplitude of the Cosine Harmonic Correction Term to the Angle of Inclination (rad)
  125.      */
  126.     double getCic();

  127.     /**
  128.      * Gets the Amplitude of the Sine Harmonic Correction Term to the Angle of Inclination.
  129.      *
  130.      * @return the Amplitude of the Sine Harmonic Correction Term to the Angle of Inclination (rad)
  131.      */
  132.     double getCis();

  133.     /**
  134.      * Gets the Zeroth Order Clock Correction.
  135.      *
  136.      * @return the Zeroth Order Clock Correction (s)
  137.      * @see #getAf1()
  138.      * @see #getAf2()
  139.      * @see #getToc()
  140.      * @since 9.3
  141.      */
  142.     default double getAf0() {
  143.         return 0.0;
  144.     }

  145.     /**
  146.      * Gets the First Order Clock Correction.
  147.      *
  148.      * @return the First Order Clock Correction (s/s)
  149.      * @see #getAf0()
  150.      * @see #getAf2()
  151.      * @see #getToc()
  152.      * @since 9.3
  153.      */
  154.     default double getAf1() {
  155.         return 0.0;
  156.     }

  157.     /**
  158.      * Gets the Second Order Clock Correction.
  159.      *
  160.      * @return the Second Order Clock Correction (s/s²)
  161.      * @see #getAf0()
  162.      * @see #getAf1()
  163.      * @see #getToc()
  164.      * @since 9.3
  165.      */
  166.     default double getAf2() {
  167.         return 0.0;
  168.     }

  169.     /**
  170.      * Gets the clock correction reference time toc.
  171.      *
  172.      * @return the clock correction reference time (s)
  173.      * @see #getAf0()
  174.      * @see #getAf1()
  175.      * @see #getAf2()
  176.      * @since 9.3
  177.      */
  178.     default double getToc() {
  179.         return 0.0;
  180.     }

  181. }