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 }