1   /* Copyright 2002-2025 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.data;
18  
19  import org.orekit.propagation.analytical.gnss.GLONASSAnalyticalPropagator;
20  import org.orekit.propagation.numerical.GLONASSNumericalPropagator;
21  import org.orekit.time.TimeStamped;
22  
23  /** This interface provides the minimal set of orbital elements needed by the {@link GLONASSAnalyticalPropagator} and
24   * the {@link GLONASSNumericalPropagator}.
25   * <p>
26   * Because input data are different between numerical and analytical GLONASS propagators the
27   * methods present in this interface are implemented by default.
28   * Depending if the user wants to use a {@link GLONASSNumericalPropagator} or a {@link GLONASSAnalyticalPropagator}
29   * he can create an instance of a {@link GLONASSEphemeris} or {@link GLONASSAlmanac}.
30   * </p>
31   *
32   * @see <a href="http://russianspacesystems.ru/wp-content/uploads/2016/08/ICD-GLONASS-CDMA-General.-Edition-1.0-2016.pdf">
33   *       GLONASS Interface Control Document</a>
34   *
35   * @author Bryan Cazabonne
36   * @since 10.0
37   *
38   */
39  public interface GLONASSOrbitalElements extends TimeStamped {
40  
41      /**
42       * Get the number of the current day in a four year interval.
43       *
44       * @return the number of the current day in a four year interval
45       */
46      default int getNa() {
47          return 0;
48      }
49  
50      /**
51       * Get the number of the current four year interval.
52       *
53       * @return the number of the current four year interval
54       */
55      default int getN4() {
56          return 0;
57      }
58  
59      /**
60       * Get the Reference Time.
61       *
62       * @return the Reference Time (s)
63       */
64      default double getTime() {
65          return 0.0;
66      }
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      /**
78       * Get the Eccentricity.
79       *
80       * @return the Eccentricity
81       */
82      default double getE() {
83          return 0.0;
84      }
85  
86      /**
87       * Get the Argument of Perigee.
88       *
89       * @return the Argument of Perigee (rad)
90       */
91      default double getPa() {
92          return 0.0;
93      }
94  
95      /**
96       * Get the correction to the mean value of inclination.
97       *
98       * @return the correction to the mean value of inclination (rad)
99       */
100     default double getDeltaI() {
101         return 0.0;
102     }
103 
104     /**
105      * Get the correction to the mean value of Draconian period.
106      *
107      * @return the correction to the mean value of Draconian period (s)
108      */
109     default double getDeltaT() {
110         return 0.0;
111     }
112 
113     /**
114      * Get the rate of change of Draconian period.
115      *
116      * @return the rate of change of Draconian period
117      */
118     default double getDeltaTDot() {
119         return 0.0;
120     }
121 
122     /**
123      * Get the relative deviation of predicted satellite carrier frequency from nominal value.
124      *
125      * @return the relative deviation of predicted satellite carrier frequency from nominal value
126      */
127     default double getGammaN() {
128         return 0.0;
129     }
130 
131     /**
132      * Get the correction to the satellite time relative to GLONASS system time.
133      *
134      * @return the correction to the satellite time relative to GLONASS system time (s)
135      *
136      */
137     default double getTN() {
138         return 0.0;
139     }
140 
141     /**
142      * Get the ECEF-X component of satellite velocity vector in PZ-90 datum.
143      *
144      * @return the the ECEF-X component of satellite velocity vector in PZ-90 datum (m/s)
145      */
146     default double getXDot() {
147         return 0.0;
148     }
149 
150     /**
151      * Get the ECEF-X component of satellite coordinates in PZ-90 datum.
152      *
153      * @return the ECEF-X component of satellite coordinates in PZ-90 datum (m)
154      */
155     default double getX() {
156         return 0.0;
157     }
158 
159     /**
160      * Get the GLONASS ECEF-X component of satellite acceleration vector in PZ-90 datum.
161      *
162      * @return the GLONASS ECEF-X component of satellite acceleration vector in PZ-90 datum (m/s²)
163      */
164     default double getXDotDot() {
165         return 0.0;
166     }
167 
168     /**
169      * Get the ECEF-Y component of satellite velocity vector in PZ-90 datum.
170      *
171      * @return the ECEF-Y component of satellite velocity vector in PZ-90 datum (m/s)
172      */
173     default double getYDot() {
174         return 0.0;
175     }
176 
177     /**
178      * Get the ECEF-Y component of satellite coordinates in PZ-90 datum.
179      *
180      * @return the ECEF-Y component of satellite coordinates in PZ-90 datum (m)
181      */
182     default double getY() {
183         return 0.0;
184     }
185 
186     /**
187      * Get the GLONASS ECEF-Y component of satellite acceleration vector in PZ-90 datum.
188      *
189      * @return the GLONASS ECEF-Y component of satellite acceleration vector in PZ-90 datum (m/s²)
190      */
191     default double getYDotDot() {
192         return 0.0;
193     }
194 
195     /**
196      * Get the ECEF-Z component of satellite velocity vector in PZ-90 datum.
197      *
198      * @return the the ECEF-Z component of satellite velocity vector in PZ-90 datum (m/s)
199      */
200     default double getZDot() {
201         return 0.0;
202     }
203 
204     /**
205      * Get the ECEF-Z component of satellite coordinates in PZ-90 datum.
206      *
207      * @return the ECEF-Z component of satellite coordinates in PZ-90 datum (m)
208      */
209     default double getZ() {
210         return 0.0;
211     }
212 
213     /**
214      * Get the GLONASS ECEF-Z component of satellite acceleration vector in PZ-90 datum.
215      *
216      * @return the GLONASS ECEF-Z component of satellite acceleration vector in PZ-90 datum (m/s²)
217      */
218     default double getZDotDot() {
219         return 0.0;
220     }
221 
222     /**
223      * Gets the GLONASS Issue Of Data (IOD).
224      *
225      * @return the IOD
226      */
227     default int getIOD() {
228         return 0;
229     }
230 
231 }