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.data;
18  
19  import org.hipparchus.CalculusFieldElement;
20  import org.orekit.time.FieldAbsoluteDate;
21  
22  /** Elements of the bodies having an effect on nutation.
23   * <p>This class is a simple placeholder,
24   * it does not provide any processing method.</p>
25   * @param <T> the type of the field elements
26   * @see BodiesElements
27   * @author Luc Maisonobe
28   * @since 6.1
29   */
30  public final class FieldBodiesElements<T extends CalculusFieldElement<T>> extends  FieldDelaunayArguments<T> {
31  
32      /** Mean Mercury longitude. */
33      private final T lMe;
34  
35      /** Mean Mercury longitude time derivative. */
36      private final T lMeDot;
37  
38      /** Mean Venus longitude. */
39      private final T lVe;
40  
41      /** Mean Venus longitude time derivative. */
42      private final T lVeDot;
43  
44      /** Mean Earth longitude. */
45      private final T lE;
46  
47      /** Mean Earth longitude time derivative. */
48      private final T lEDot;
49  
50      /** Mean Mars longitude. */
51      private final T lMa;
52  
53      /** Mean Mars longitude time derivative. */
54      private final T lMaDot;
55  
56      /** Mean Jupiter longitude. */
57      private final T lJu;
58  
59      /** Mean Jupiter longitude time derivative. */
60      private final T lJuDot;
61  
62      /** Mean Saturn longitude. */
63      private final T lSa;
64  
65      /** Mean Saturn longitude time derivative. */
66      private final T lSaDot;
67  
68      /** Mean Uranus longitude. */
69      private final T lUr;
70  
71      /** Mean Uranus longitude time derivative. */
72      private final T lUrDot;
73  
74      /** Mean Neptune longitude. */
75      private final T lNe;
76  
77      /** Mean Neptune longitude time derivative. */
78      private final T lNeDot;
79  
80      /** General accumulated precession in longitude. */
81      private final T pa;
82  
83      /** General accumulated precession in longitude time derivative. */
84      private final T paDot;
85  
86      /** Simple constructor.
87       * @param date current date
88       * @param tc offset in Julian centuries
89       * @param gamma tide parameter γ = GMST + π
90       * @param gammaDot tide parameter γ = GMST + π time derivative
91       * @param l mean anomaly of the Moon
92       * @param lDot mean anomaly of the Moon time derivative
93       * @param lPrime mean anomaly of the Sun
94       * @param lPrimeDot mean anomaly of the Sun time derivative
95       * @param f L - Ω where L is the mean longitude of the Moon
96       * @param fDot L - Ω where L is the mean longitude of the Moon time derivative
97       * @param d mean elongation of the Moon from the Sun
98       * @param dDot mean elongation of the Moon from the Sun time derivative
99       * @param omega mean longitude of the ascending node of the Moon
100      * @param omegaDot mean longitude of the ascending node of the Moon time derivative
101      * @param lMe mean Mercury longitude
102      * @param lMeDot mean Mercury longitude time derivative
103      * @param lVe mean Venus longitude
104      * @param lVeDot mean Venus longitude time derivative
105      * @param lE mean Earth longitude
106      * @param lEDot mean Earth longitude time derivative
107      * @param lMa mean Mars longitude
108      * @param lMaDot mean Mars longitude time derivative
109      * @param lJu mean Jupiter longitude
110      * @param lJuDot mean Jupiter longitude time derivative
111      * @param lSa mean Saturn longitude
112      * @param lSaDot mean Saturn longitude time derivative
113      * @param lUr mean Uranus longitude
114      * @param lUrDot mean Uranus longitude time derivative
115      * @param lNe mean Neptune longitude
116      * @param lNeDot mean Neptune longitude time derivative
117      * @param pa general accumulated precession in longitude
118      * @param paDot general accumulated precession in longitude time derivative
119      */
120     public FieldBodiesElements(final FieldAbsoluteDate<T> date, final T tc, final T gamma, final T gammaDot,
121                                final T l, final T lDot, final T lPrime, final T lPrimeDot,
122                                final T f, final T fDot, final T d, final T dDot,
123                                final T omega, final T omegaDot,
124                                final T lMe, final T lMeDot, final T lVe, final T lVeDot,
125                                final T lE, final T lEDot, final T lMa, final T lMaDot,
126                                final T lJu, final T lJuDot, final T lSa, final T lSaDot,
127                                final T lUr, final T lUrDot, final T lNe, final T lNeDot,
128                                final T pa, final T paDot) {
129         super(date, tc, gamma, gammaDot, l, lDot, lPrime, lPrimeDot, f, fDot, d, dDot, omega, omegaDot);
130         this.lMe    = lMe;
131         this.lMeDot = lMeDot;
132         this.lVe    = lVe;
133         this.lVeDot = lVeDot;
134         this.lE     = lE;
135         this.lEDot  = lEDot;
136         this.lMa    = lMa;
137         this.lMaDot = lMaDot;
138         this.lJu    = lJu;
139         this.lJuDot = lJuDot;
140         this.lSa    = lSa;
141         this.lSaDot = lSaDot;
142         this.lUr    = lUr;
143         this.lUrDot = lUrDot;
144         this.lNe    = lNe;
145         this.lNeDot = lNeDot;
146         this.pa     = pa;
147         this.paDot  = paDot;
148     }
149 
150     /** Get the mean Mercury longitude.
151      * @return mean Mercury longitude.
152      */
153     public T getLMe() {
154         return lMe;
155     }
156 
157     /** Get the mean Mercury longitude time derivative.
158      * @return mean Mercury longitude time derivative.
159      */
160     public T getLMeDot() {
161         return lMeDot;
162     }
163 
164     /** Get the mean Venus longitude.
165      * @return mean Venus longitude. */
166     public T getLVe() {
167         return lVe;
168     }
169 
170     /** Get the mean Venus longitude time derivative.
171      * @return mean Venus longitude time derivative. */
172     public T getLVeDot() {
173         return lVeDot;
174     }
175 
176     /** Get the mean Earth longitude.
177      * @return mean Earth longitude. */
178     public T getLE() {
179         return lE;
180     }
181 
182     /** Get the mean Earth longitude time derivative.
183      * @return mean Earth longitude time derivative. */
184     public T getLEDot() {
185         return lEDot;
186     }
187 
188     /** Get the mean Mars longitude.
189      * @return mean Mars longitude. */
190     public T getLMa() {
191         return lMa;
192     }
193 
194     /** Get the mean Mars longitude time derivative.
195      * @return mean Mars longitude time derivative. */
196     public T getLMaDot() {
197         return lMaDot;
198     }
199 
200     /** Get the mean Jupiter longitude.
201      * @return mean Jupiter longitude. */
202     public T getLJu() {
203         return lJu;
204     }
205 
206     /** Get the mean Jupiter longitude time derivative.
207      * @return mean Jupiter longitude time derivative. */
208     public T getLJuDot() {
209         return lJuDot;
210     }
211 
212     /** Get the mean Saturn longitude.
213      * @return mean Saturn longitude. */
214     public T getLSa() {
215         return lSa;
216     }
217 
218     /** Get the mean Saturn longitude time derivative.
219      * @return mean Saturn longitude time derivative. */
220     public T getLSaDot() {
221         return lSaDot;
222     }
223 
224     /** Get the mean Uranus longitude.
225      * @return mean Uranus longitude. */
226     public T getLUr() {
227         return lUr;
228     }
229 
230     /** Get the mean Uranus longitude time derivative.
231      * @return mean Uranus longitude time derivative. */
232     public T getLUrDot() {
233         return lUrDot;
234     }
235 
236     /** Get the mean Neptune longitude.
237      * @return mean Neptune longitude. */
238     public T getLNe() {
239         return lNe;
240     }
241 
242     /** Get the mean Neptune longitude time derivative.
243      * @return mean Neptune longitude time derivative. */
244     public T getLNeDot() {
245         return lNeDot;
246     }
247 
248     /** Get the general accumulated precession in longitude.
249      * @return general accumulated precession in longitude. */
250     public T getPa() {
251         return pa;
252     }
253 
254     /** Get the general accumulated precession in longitude time derivative.
255      * @return general accumulated precession in longitude time derivative. */
256     public T getPaDot() {
257         return paDot;
258     }
259 
260 }