1 /* Copyright 2002-2026 Airbus Defence and Space
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 * Airbus Defence and Space 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.intelsat;
18
19 import org.hipparchus.CalculusFieldElement;
20 import org.orekit.time.FieldAbsoluteDate;
21
22 /**
23 * This class is a container for a single set of Intelsat's 11 Elements data.
24 * <p>
25 * Intelsat's 11 elements are defined in ITU-R S.1525 standard.
26 * </p>
27 *
28 * @param <T> type of the field elements
29 * @author Bryan Cazabonne
30 * @since 12.1
31 */
32 public class FieldIntelsatElevenElements<T extends CalculusFieldElement<T>> {
33
34 /**
35 * Elements epoch.
36 */
37 private final FieldAbsoluteDate<T> epoch;
38
39 /**
40 * Mean longitude (East of Greenwich).
41 */
42 private final T lm0;
43
44 /**
45 * Drift rate.
46 */
47 private final T lm1;
48
49 /**
50 * Drift acceleration.
51 */
52 private final T lm2;
53
54 /**
55 * Longitude oscillation-amplitude for the cosine term.
56 */
57 private final T lonC;
58
59 /**
60 * Rate of change of longitude, for the cosine term.
61 */
62 private final T lonC1;
63
64 /**
65 * Longitude oscillation-amplitude for the sine term.
66 */
67 private final T lonS;
68
69 /**
70 * Rate of change of longitude, for the sine term.
71 */
72 private final T lonS1;
73
74 /**
75 * Latitude oscillation-amplitude for the cosine term.
76 */
77 private final T latC;
78
79 /**
80 * Rate of change of latitude, for the cosine term.
81 */
82 private final T latC1;
83
84 /**
85 * Latitude oscillation-amplitude for the sine term.
86 */
87 private final T latS;
88
89 /**
90 * Rate of change of latitude, for the sine term.
91 */
92 private final T latS1;
93
94 /**
95 * Constructor.
96 *
97 * @param epoch elements epoch
98 * @param lm0 mean longitude (East of Greenwich) in degrees
99 * @param lm1 drift rate in degrees/day
100 * @param lm2 drift acceleration in degrees/day/day
101 * @param lonC longitude oscillation-amplitude for the cosine term in degrees
102 * @param lonC1 rate of change of longitude, for the cosine term, in degrees/day
103 * @param lonS longitude oscillation-amplitude for the sine term in degrees
104 * @param lonS1 rate of change of longitude, for the sine term, in degrees/day
105 * @param latC latitude oscillation-amplitude for the cosine term in degrees
106 * @param latC1 rate of change of latitude, for the cosine term, in degrees/day
107 * @param latS latitude oscillation-amplitude for the sine term in degrees
108 * @param latS1 rate of change of latitude, for the sine term, in degrees/day
109 */
110 public FieldIntelsatElevenElements(final FieldAbsoluteDate<T> epoch, final T lm0, final T lm1, final T lm2, final T lonC, final T lonC1, final T lonS, final T lonS1,
111 final T latC, final T latC1, final T latS, final T latS1) {
112 this.epoch = epoch;
113 this.lm0 = lm0;
114 this.lm1 = lm1;
115 this.lm2 = lm2;
116 this.lonC = lonC;
117 this.lonC1 = lonC1;
118 this.lonS = lonS;
119 this.lonS1 = lonS1;
120 this.latC = latC;
121 this.latC1 = latC1;
122 this.latS = latS;
123 this.latS1 = latS1;
124 }
125
126 /**
127 * Get the elements epoch.
128 *
129 * @return elements epoch
130 */
131 public FieldAbsoluteDate<T> getEpoch() {
132 return epoch;
133 }
134
135 /**
136 * Get the mean longitude (East of Greenwich).
137 *
138 * @return the mean longitude (East of Greenwich) in degrees
139 */
140 public T getLm0() {
141 return lm0;
142 }
143
144 /**
145 * Get the drift rate.
146 *
147 * @return the drift rate in degrees/day
148 */
149 public T getLm1() {
150 return lm1;
151 }
152
153 /**
154 * Get the drift acceleration.
155 *
156 * @return the drift acceleration in degrees/day/day
157 */
158 public T getLm2() {
159 return lm2;
160 }
161
162 /**
163 * Get the longitude oscillation-amplitude for the cosine term.
164 *
165 * @return the longitude oscillation-amplitude for the cosine term in degrees
166 */
167 public T getLonC() {
168 return lonC;
169 }
170
171 /**
172 * Get the rate of change of longitude, for the cosine term.
173 *
174 * @return the rate of change of longitude, for the cosine term, in degrees/day
175 */
176 public T getLonC1() {
177 return lonC1;
178 }
179
180 /**
181 * Get the longitude oscillation-amplitude for the sine term.
182 *
183 * @return the longitude oscillation-amplitude for the sine term in degrees
184 */
185 public T getLonS() {
186 return lonS;
187 }
188
189 /**
190 * Get the rate of change of longitude, for the sine term.
191 *
192 * @return the rate of change of longitude, for the sine term, in degrees/day
193 */
194 public T getLonS1() {
195 return lonS1;
196 }
197
198 /**
199 * Get the latitude oscillation-amplitude for the cosine term.
200 *
201 * @return the latitude oscillation-amplitude for the cosine term in degrees
202 */
203 public T getLatC() {
204 return latC;
205 }
206
207 /**
208 * Get the rate of change of latitude, for the cosine term.
209 *
210 * @return the rate of change of latitude, for the cosine term, in degrees/day
211 */
212 public T getLatC1() {
213 return latC1;
214 }
215
216 /**
217 * Get the latitude oscillation-amplitude for the sine term.
218 *
219 * @return the latitude oscillation-amplitude for the sine term in degrees
220 */
221 public T getLatS() {
222 return latS;
223 }
224
225 /**
226 * Get the rate of change of latitude, for the sine term.
227 *
228 * @return the rate of change of latitude, for the sine term, in degrees/day
229 */
230 public T getLatS1() {
231 return latS1;
232 }
233 }