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
19 import org.orekit.time.TimeStamped;
20
21 /** This interface provides the minimal set of orbital elements needed by the {@link AbstractGNSSPropagator}.
22 *
23 * @author Pascal Parraud
24 *
25 */
26 public interface GNSSOrbitalElements extends TimeStamped {
27
28 /**
29 * Gets the PRN number of the GNSS satellite.
30 *
31 * @return the PRN number of the GNSS satellite
32 */
33 int getPRN();
34
35 /**
36 * Gets the Reference Week of the GNSS orbit.
37 *
38 * @return the Reference Week of the GNSS orbit within [0, 1024[
39 */
40 int getWeek();
41
42 /**
43 * Gets the Reference Time of the GNSS orbit as a duration from week start.
44 *
45 * @return the Reference Time of the GNSS orbit (s)
46 */
47 double getTime();
48
49 /**
50 * Gets the Semi-Major Axis.
51 *
52 * @return the Semi-Major Axis (m)
53 */
54 double getSma();
55
56 /**
57 * Gets the Mean Motion.
58 *
59 * @return the Mean Motion (rad/s)
60 */
61 double getMeanMotion();
62
63 /**
64 * Gets the Eccentricity.
65 *
66 * @return the Eccentricity
67 */
68 double getE();
69
70 /**
71 * Gets the Inclination Angle at Reference Time.
72 *
73 * @return the Inclination Angle at Reference Time (rad)
74 */
75 double getI0();
76
77 /**
78 * Gets the Rate of Inclination Angle.
79 *
80 * @return the Rate of Inclination Angle (rad/s)
81 */
82 double getIDot();
83
84 /**
85 * Gets the Longitude of Ascending Node of Orbit Plane at Weekly Epoch.
86 *
87 * @return the Longitude of Ascending Node of Orbit Plane at Weekly Epoch (rad)
88 */
89 double getOmega0();
90
91 /**
92 * Gets the Rate of Right Ascension.
93 *
94 * @return the Rate of Right Ascension (rad/s)
95 */
96 double getOmegaDot();
97
98 /**
99 * Gets the Argument of Perigee.
100 *
101 * @return the Argument of Perigee (rad)
102 */
103 double getPa();
104
105 /**
106 * Gets the Mean Anomaly at Reference Time.
107 *
108 * @return the Mean Anomaly at Reference Time (rad)
109 */
110 double getM0();
111
112 /**
113 * Gets the Amplitude of the Cosine Harmonic Correction Term to the Argument of Latitude.
114 *
115 * @return the Amplitude of the Cosine Harmonic Correction Term to the Argument of Latitude (rad)
116 */
117 double getCuc();
118
119 /**
120 * Gets the Amplitude of the Sine Harmonic Correction Term to the Argument of Latitude.
121 *
122 * @return the Amplitude of the Sine Harmonic Correction Term to the Argument of Latitude (rad)
123 */
124 double getCus();
125
126 /**
127 * Gets the Amplitude of the Cosine Harmonic Correction Term to the Orbit Radius.
128 *
129 * @return the Amplitude of the Cosine Harmonic Correction Term to the Orbit Radius (m)
130 */
131 double getCrc();
132
133 /**
134 * Gets the Amplitude of the Sine Harmonic Correction Term to the Orbit Radius.
135 *
136 * @return the Amplitude of the Sine Harmonic Correction Term to the Orbit Radius (m)
137 */
138 double getCrs();
139
140 /**
141 * Gets the Amplitude of the Cosine Harmonic Correction Term to the Angle of Inclination.
142 *
143 * @return the Amplitude of the Cosine Harmonic Correction Term to the Angle of Inclination (rad)
144 */
145 double getCic();
146
147 /**
148 * Gets the Amplitude of the Sine Harmonic Correction Term to the Angle of Inclination.
149 *
150 * @return the Amplitude of the Sine Harmonic Correction Term to the Angle of Inclination (rad)
151 */
152 double getCis();
153
154 /**
155 * Gets the Zeroth Order Clock Correction.
156 *
157 * @return the Zeroth Order Clock Correction (s)
158 * @see #getAf1()
159 * @see #getAf2()
160 * @see #getToc()
161 * @since 9.3
162 */
163 default double getAf0() {
164 return 0.0;
165 }
166
167 /**
168 * Gets the First Order Clock Correction.
169 *
170 * @return the First Order Clock Correction (s/s)
171 * @see #getAf0()
172 * @see #getAf2()
173 * @see #getToc()
174 * @since 9.3
175 */
176 default double getAf1() {
177 return 0.0;
178 }
179
180 /**
181 * Gets the Second Order Clock Correction.
182 *
183 * @return the Second Order Clock Correction (s/s²)
184 * @see #getAf0()
185 * @see #getAf1()
186 * @see #getToc()
187 * @since 9.3
188 */
189 default double getAf2() {
190 return 0.0;
191 }
192
193 /**
194 * Gets the clock correction reference time toc.
195 *
196 * @return the clock correction reference time (s)
197 * @see #getAf0()
198 * @see #getAf1()
199 * @see #getAf2()
200 * @since 9.3
201 */
202 default double getToc() {
203 return 0.0;
204 }
205
206 }