GLONASSOrbitalElements.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.gnss.GLONASSAlmanac;
  19. import org.orekit.gnss.GLONASSEphemeris;
  20. import org.orekit.propagation.numerical.GLONASSNumericalPropagator;
  21. import org.orekit.time.TimeStamped;

  22. /** This interface provides the minimal set of orbital elements needed by the {@link GLONASSAnalyticalPropagator} and
  23.  * the {@link GLONASSNumericalPropagator}.
  24.  * <p>
  25.  * Because input data are different between numerical and analytical GLONASS propagators the
  26.  * methods present in this interface are implemented by default.
  27.  * Depending if the user wants to use a {@link GLONASSNumericalPropagator} or a {@link GLONASSAnalyticalPropagator}
  28.  * he can create an instance of a {@link GLONASSEphemeris} or {@link GLONASSAlmanac}.
  29.  * </p>
  30.  *
  31.  * @see <a href="http://russianspacesystems.ru/wp-content/uploads/2016/08/ICD-GLONASS-CDMA-General.-Edition-1.0-2016.pdf">
  32.  *       GLONASS Interface Control Document</a>
  33.  *
  34.  * @author Bryan Cazabonne
  35.  * @since 10.0
  36.  *
  37.  */
  38. public interface GLONASSOrbitalElements extends TimeStamped {

  39.     // Constants
  40.     /** Value of the Earth's universal gravitational parameter for GLONASS user in m³/s². */
  41.     double GLONASS_MU = 3.986004418e+14;

  42.     /** Value of Pi for conversion from semicircles to radian. */
  43.     double GLONASS_PI = 3.14159265358979;

  44.     /**
  45.      * Get the number of the current day in a four year interval.
  46.      *
  47.      * @return the number of the current day in a four year interval
  48.      */
  49.     default int getNa() {
  50.         return 0;
  51.     }

  52.     /**
  53.      * Get the number of the current four year interval.
  54.      *
  55.      * @return the number of the current four year interval
  56.      */
  57.     default int getN4() {
  58.         return 0;
  59.     }

  60.     /**
  61.      * Get the Reference Time.
  62.      *
  63.      * @return the Reference Time (s)
  64.      */
  65.     default double getTime() {
  66.         return 0.0;
  67.     }

  68.     /**
  69.      * Get the longitude of ascending node of orbit.
  70.      *
  71.      * @return the longitude of ascending node of orbit (rad)
  72.      */
  73.     default double getLambda() {
  74.         return 0.0;
  75.     }

  76.     /**
  77.      * Get the Eccentricity.
  78.      *
  79.      * @return the Eccentricity
  80.      */
  81.     default double getE() {
  82.         return 0.0;
  83.     }

  84.     /**
  85.      * Get the Argument of Perigee.
  86.      *
  87.      * @return the Argument of Perigee (rad)
  88.      */
  89.     default double getPa() {
  90.         return 0.0;
  91.     }

  92.     /**
  93.      * Get the correction to the mean value of inlination.
  94.      *
  95.      * @return the correction to the mean value of inlination (rad)
  96.      */
  97.     default double getDeltaI() {
  98.         return 0.0;
  99.     }

  100.     /**
  101.      * Get the correction to the mean value of Draconian period.
  102.      *
  103.      * @return the correction to the mean value of Draconian period (s)
  104.      */
  105.     default double getDeltaT() {
  106.         return 0.0;
  107.     }

  108.     /**
  109.      * Get the rate of change of Draconian period.
  110.      *
  111.      * @return the rate of change of Draconian period
  112.      */
  113.     default double getDeltaTDot() {
  114.         return 0.0;
  115.     }

  116.     /**
  117.      * Get the relative deviation of predicted satellite carrier frequency from nominal value.
  118.      *
  119.      * @return the relative deviation of predicted satellite carrier frequency from nominal value
  120.      */
  121.     default double getGammaN() {
  122.         return 0.0;
  123.     }

  124.     /**
  125.      * Get the correction to the satellite time relative to GLONASS system time.
  126.      *
  127.      * @return the correction to the satellite time relative to GLONASS system time (s)
  128.      *
  129.      */
  130.     default double getTN() {
  131.         return 0.0;
  132.     }

  133.     /**
  134.      * Get the ECEF-X component of satellite velocity vector in PZ-90 datum.
  135.      *
  136.      * @return the the ECEF-X component of satellite velocity vector in PZ-90 datum (m/s)
  137.      */
  138.     default double getXDot() {
  139.         return 0.0;
  140.     }

  141.     /**
  142.      * Get the ECEF-X component of satellite coordinates in PZ-90 datum.
  143.      *
  144.      * @return the ECEF-X component of satellite coordinates in PZ-90 datum (m)
  145.      */
  146.     default double getX() {
  147.         return 0.0;
  148.     }

  149.     /**
  150.      * Get the GLONASS ECEF-X component of satellite acceleration vector in PZ-90 datum.
  151.      *
  152.      * @return the GLONASS ECEF-X component of satellite acceleration vector in PZ-90 datum (m/s²)
  153.      */
  154.     default double getXDotDot() {
  155.         return 0.0;
  156.     }

  157.     /**
  158.      * Get the ECEF-Y component of satellite velocity vector in PZ-90 datum.
  159.      *
  160.      * @return the ECEF-Y component of satellite velocity vector in PZ-90 datum (m/s)
  161.      */
  162.     default double getYDot() {
  163.         return 0.0;
  164.     }

  165.     /**
  166.      * Get the ECEF-Y component of satellite coordinates in PZ-90 datum.
  167.      *
  168.      * @return the ECEF-Y component of satellite coordinates in PZ-90 datum (m)
  169.      */
  170.     default double getY() {
  171.         return 0.0;
  172.     }

  173.     /**
  174.      * Get the GLONASS ECEF-Y component of satellite acceleration vector in PZ-90 datum.
  175.      *
  176.      * @return the GLONASS ECEF-Y component of satellite acceleration vector in PZ-90 datum (m/s²)
  177.      */
  178.     default double getYDotDot() {
  179.         return 0.0;
  180.     }

  181.     /**
  182.      * Get the ECEF-Z component of satellite velocity vector in PZ-90 datum.
  183.      *
  184.      * @return the the ECEF-Z component of satellite velocity vector in PZ-90 datum (m/s)
  185.      */
  186.     default double getZDot() {
  187.         return 0.0;
  188.     }

  189.     /**
  190.      * Get the ECEF-Z component of satellite coordinates in PZ-90 datum.
  191.      *
  192.      * @return the ECEF-Z component of satellite coordinates in PZ-90 datum (m)
  193.      */
  194.     default double getZ() {
  195.         return 0.0;
  196.     }

  197.     /**
  198.      * Get the GLONASS ECEF-Z component of satellite acceleration vector in PZ-90 datum.
  199.      *
  200.      * @return the GLONASS ECEF-Z component of satellite acceleration vector in PZ-90 datum (m/s²)
  201.      */
  202.     default double getZDotDot() {
  203.         return 0.0;
  204.     }

  205.     /**
  206.      * Gets the GLONASS Issue Of Data (IOD).
  207.      *
  208.      * @return the IOD
  209.      */
  210.     default int getIOD() {
  211.         return 0;
  212.     }

  213. }