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.SBASPropagator;
20  import org.orekit.time.TimeStamped;
21  
22  /** This interface provides the minimal set of orbital elements needed by the {@link SBASPropagator}.
23  *
24  * @author Bryan Cazabonne
25  * @since 10.1
26  *
27  */
28  public interface SBASOrbitalElements extends TimeStamped {
29  
30      /**
31       * Gets the PRN number of the SBAS satellite.
32       *
33       * @return the PRN number of the SBAS satellite
34       */
35      int getPRN();
36  
37      /**
38       * Gets the Reference Week of the SBAS orbit.
39       *
40       * @return the Reference Week of the SBAS orbit
41       */
42      int getWeek();
43  
44      /**
45       * Gets the Reference Time of the SBAS orbit in GPS seconds of the week.
46       *
47       * @return the Reference Time of the SBAS orbit (s)
48       */
49      double getTime();
50  
51      /**
52       * Get the ECEF-X component of satellite coordinates.
53       *
54       * @return the ECEF-X component of satellite coordinates (m)
55       */
56      double getX();
57  
58      /**
59       * Get the ECEF-X component of satellite velocity vector.
60       *
61       * @return the the ECEF-X component of satellite velocity vector (m/s)
62       */
63      double getXDot();
64  
65      /**
66       * Get the ECEF-X component of satellite acceleration vector.
67       *
68       * @return the GLONASS ECEF-X component of satellite acceleration vector (m/s²)
69       */
70      double getXDotDot();
71  
72      /**
73       * Get the ECEF-Y component of satellite coordinates.
74       *
75       * @return the ECEF-Y component of satellite coordinates (m)
76       */
77      double getY();
78  
79      /**
80       * Get the ECEF-Y component of satellite velocity vector.
81       *
82       * @return the ECEF-Y component of satellite velocity vector (m/s)
83       */
84      double getYDot();
85  
86      /**
87       * Get the ECEF-Y component of satellite acceleration vector.
88       *
89       * @return the ECEF-Y component of satellite acceleration vector (m/s²)
90       */
91      double getYDotDot();
92  
93      /**
94       * Get the ECEF-Z component of satellite coordinates.
95       *
96       * @return the ECEF-Z component of satellite coordinates (m)
97       */
98      double getZ();
99  
100     /**
101      * Get the ECEF-Z component of satellite velocity vector.
102      *
103      * @return the the ECEF-Z component of satellite velocity vector (m/s)
104      */
105     double getZDot();
106 
107     /**
108      * Get the ECEF-Z component of satellite acceleration vector.
109      *
110      * @return the ECEF-Z component of satellite acceleration vector (m/s²)
111      */
112     double getZDotDot();
113 
114     /**
115      * Gets the Issue Of Data Navigation (IODN).
116      *
117      * @return the IODN
118      */
119     default int getIODN() {
120         return 0;
121     }
122 
123     /**
124      * Gets the Zeroth Order Clock Correction.
125      *
126      * @return the Zeroth Order Clock Correction (s)
127      */
128     default double getAGf0() {
129         return 0.0;
130     }
131 
132     /**
133      * Gets the First Order Clock Correction.
134      *
135      * @return the First Order Clock Correction (s/s)
136      */
137     default double getAGf1() {
138         return 0.0;
139     }
140 
141     /**
142      * Gets the clock correction reference time toc.
143      *
144      * @return the clock correction reference time (s)
145      */
146     default double getToc() {
147         return 0.0;
148     }
149 
150 }