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