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 }