1   /* Copyright 2002-2021 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.GNSSPropagator;
20  import org.orekit.time.TimeStamped;
21  
22  /** This interface provides the minimal set of orbital elements needed by the {@link GNSSPropagator}.
23  *
24  * @author Pascal Parraud
25  *
26  */
27  public interface GNSSOrbitalElements extends TimeStamped {
28  
29      /**
30       * Gets the PRN number of the GNSS satellite.
31       *
32       * @return the PRN number of the GNSS satellite
33       */
34      int getPRN();
35  
36      /**
37       * Gets the Reference Week of the GNSS orbit.
38       *
39       * @return the Reference Week of the GNSS orbit within [0, 1024[
40       */
41      int getWeek();
42  
43      /**
44       * Gets the Reference Time of the GNSS orbit as a duration from week start.
45       *
46       * @return the Reference Time of the GNSS orbit (s)
47       */
48      double getTime();
49  
50      /**
51       * Gets the Semi-Major Axis.
52       *
53       * @return the Semi-Major Axis (m)
54       */
55      double getSma();
56  
57      /**
58       * Gets the Mean Motion.
59       *
60       * @return the Mean Motion (rad/s)
61       */
62      double getMeanMotion();
63  
64      /**
65       * Gets the Eccentricity.
66       *
67       * @return the Eccentricity
68       */
69      double getE();
70  
71      /**
72       * Gets the Inclination Angle at Reference Time.
73       *
74       * @return the Inclination Angle at Reference Time (rad)
75       */
76      double getI0();
77  
78      /**
79       * Gets the Rate of Inclination Angle.
80       *
81       * @return the Rate of Inclination Angle (rad/s)
82       */
83      double getIDot();
84  
85      /**
86       * Gets the Longitude of Ascending Node of Orbit Plane at Weekly Epoch.
87       *
88       * @return the Longitude of Ascending Node of Orbit Plane at Weekly Epoch (rad)
89       */
90      double getOmega0();
91  
92      /**
93       * Gets the Rate of Right Ascension.
94       *
95       * @return the Rate of Right Ascension (rad/s)
96       */
97      double getOmegaDot();
98  
99      /**
100      * Gets the Argument of Perigee.
101      *
102      * @return the Argument of Perigee (rad)
103      */
104     double getPa();
105 
106     /**
107      * Gets the Mean Anomaly at Reference Time.
108      *
109      * @return the Mean Anomaly at Reference Time (rad)
110      */
111     double getM0();
112 
113     /**
114      * Gets the Amplitude of the Cosine Harmonic Correction Term to the Argument of Latitude.
115      *
116      * @return the Amplitude of the Cosine Harmonic Correction Term to the Argument of Latitude (rad)
117      */
118     double getCuc();
119 
120     /**
121      * Gets the Amplitude of the Sine Harmonic Correction Term to the Argument of Latitude.
122      *
123      * @return the Amplitude of the Sine Harmonic Correction Term to the Argument of Latitude (rad)
124      */
125     double getCus();
126 
127     /**
128      * Gets the Amplitude of the Cosine Harmonic Correction Term to the Orbit Radius.
129      *
130      * @return the Amplitude of the Cosine Harmonic Correction Term to the Orbit Radius (m)
131      */
132     double getCrc();
133 
134     /**
135      * Gets the Amplitude of the Sine Harmonic Correction Term to the Orbit Radius.
136      *
137      * @return the Amplitude of the Sine Harmonic Correction Term to the Orbit Radius (m)
138      */
139     double getCrs();
140 
141     /**
142      * Gets the Amplitude of the Cosine Harmonic Correction Term to the Angle of Inclination.
143      *
144      * @return the Amplitude of the Cosine Harmonic Correction Term to the Angle of Inclination (rad)
145      */
146     double getCic();
147 
148     /**
149      * Gets the Amplitude of the Sine Harmonic Correction Term to the Angle of Inclination.
150      *
151      * @return the Amplitude of the Sine Harmonic Correction Term to the Angle of Inclination (rad)
152      */
153     double getCis();
154 
155     /**
156      * Gets the Earth's universal gravitational parameter.
157      *
158      * @return the Earth's universal gravitational parameter
159      */
160     double getMu();
161 
162     /**
163      * Gets the mean angular velocity of the Earth of the GNSS model.
164      *
165      * @return the mean angular velocity of the Earth of the GNSS model
166      */
167     double getAngularVelocity();
168 
169     /**
170      * Gets the duration of the GNSS cycle in seconds.
171      *
172      * @return the duration of the GNSS cycle in seconds
173      */
174     double getCycleDuration();
175 
176 }