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  import org.orekit.time.FieldTimeStamped;
22  
23  /** Delaunay arguments used for nutation or tides.
24   * <p>This class is a simple placeholder,
25   * it does not provide any processing method.</p>
26   * @param <T> the type of the field elements
27   * @see DelaunayArguments
28   * @author Luc Maisonobe
29   * @since 6.1
30   */
31  public class FieldDelaunayArguments<T extends CalculusFieldElement<T>> implements FieldTimeStamped<T> {
32  
33      /** Date. */
34      private final FieldAbsoluteDate<T> date;
35  
36      /** Offset in Julian centuries. */
37      private final T tc;
38  
39      /** Tide parameter γ = GMST + π. */
40      private final T gamma;
41  
42      /** Tide parameter γ = GMST + π time derivative. */
43      private final T gammaDot;
44  
45      /** Mean anomaly of the Moon. */
46      private final T l;
47  
48      /** Mean anomaly of the Moon time derivative. */
49      private final T lDot;
50  
51      /** Mean anomaly of the Sun. */
52      private final T lPrime;
53  
54      /** Mean anomaly of the Sun time derivative. */
55      private final T lPrimeDot;
56  
57      /** L - Ω where L is the mean longitude of the Moon. */
58      private final T f;
59  
60      /** L - Ω where L is the mean longitude of the Moon time derivative. */
61      private final T fDot;
62  
63      /** Mean elongation of the Moon from the Sun. */
64      private final T d;
65  
66      /** Mean elongation of the Moon from the Sun time derivative. */
67      private final T dDot;
68  
69      /** Mean longitude of the ascending node of the Moon. */
70      private final T omega;
71  
72      /** Mean longitude of the ascending node of the Moon time derivative. */
73      private final T omegaDot;
74  
75      /** Simple constructor.
76       * @param date current date
77       * @param tc offset in Julian centuries
78       * @param gamma tide parameter γ = GMST + π
79       * @param gammaDot tide parameter γ = GMST + π time derivative
80       * @param l mean anomaly of the Moon
81       * @param lDot mean anomaly of the Moon time derivative
82       * @param lPrime mean anomaly of the Sun
83       * @param lPrimeDot mean anomaly of the Sun time derivative
84       * @param f L - Ω where L is the mean longitude of the Moon
85       * @param fDot L - Ω where L is the mean longitude of the Moon time derivative
86       * @param d mean elongation of the Moon from the Sun
87       * @param dDot mean elongation of the Moon from the Sun time derivative
88       * @param omega mean longitude of the ascending node of the Moon
89       * @param omegaDot mean longitude of the ascending node of the Moon time derivative
90       */
91      public FieldDelaunayArguments(final FieldAbsoluteDate<T> date, final T tc, final T gamma, final T gammaDot,
92                                    final T l, final T lDot, final T lPrime, final T lPrimeDot,
93                                    final T f, final T fDot, final T d, final T dDot,
94                                    final T omega, final T omegaDot) {
95          this.date      = date;
96          this.tc        = tc;
97          this.gamma     = gamma;
98          this.gammaDot  = gammaDot;
99          this.l         = l;
100         this.lDot      = lDot;
101         this.lPrime    = lPrime;
102         this.lPrimeDot = lPrimeDot;
103         this.f         = f;
104         this.fDot      = fDot;
105         this.d         = d;
106         this.dDot      = dDot;
107         this.omega     = omega;
108         this.omegaDot  = omegaDot;
109     }
110 
111     /** {@inheritDoc} */
112     public FieldAbsoluteDate<T> getDate() {
113         return date;
114     }
115 
116     /** Get the offset in Julian centuries.
117      * @return offset in Julian centuries
118      */
119     public T getTC() {
120         return tc;
121     }
122 
123     /** Get the tide parameter γ = GMST + π.
124      * @return tide parameter γ = GMST + π
125      */
126     public T getGamma() {
127         return gamma;
128     }
129 
130     /** Get the tide parameter γ = GMST + π time derivative.
131      * @return tide parameter γ = GMST + π time derivative
132      */
133     public T getGammaDot() {
134         return gammaDot;
135     }
136 
137     /** Get the mean anomaly of the Moon.
138      * @return mean anomaly of the Moon
139      */
140     public T getL() {
141         return l;
142     }
143 
144     /** Get the mean anomaly of the Moon time derivative.
145      * @return mean anomaly of the Moon time derivative
146      */
147     public T getLDot() {
148         return lDot;
149     }
150 
151     /** Get the mean anomaly of the Sun.
152      * @return mean anomaly of the Sun.
153      */
154     public T getLPrime() {
155         return lPrime;
156     }
157 
158     /** Get the mean anomaly of the Sun time derivative.
159      * @return mean anomaly of the Sun time derivative.
160      */
161     public T getLPrimeDot() {
162         return lPrimeDot;
163     }
164 
165     /** Get L - Ω where L is the mean longitude of the Moon.
166      * @return L - Ω
167      */
168     public T getF() {
169         return f;
170     }
171 
172     /** Get L - Ω where L is the mean longitude of the Moon time derivative.
173      * @return L - Ω time derivative
174      */
175     public T getFDot() {
176         return fDot;
177     }
178 
179     /** Get the mean elongation of the Moon from the Sun.
180      * @return mean elongation of the Moon from the Sun.
181      */
182     public T getD() {
183         return d;
184     }
185 
186     /** Get the mean elongation of the Moon from the Sun time derivative.
187      * @return mean elongation of the Moon from the Sun time derivative.
188      */
189     public T getDDot() {
190         return dDot;
191     }
192 
193     /** Get the mean longitude of the ascending node of the Moon.
194      * @return mean longitude of the ascending node of the Moon.
195      */
196     public T getOmega() {
197         return omega;
198     }
199 
200     /** Get the mean longitude of the ascending node of the Moon time derivative.
201      * @return mean longitude of the ascending node of the Moon time derivative.
202      */
203     public T getOmegaDot() {
204         return omegaDot;
205     }
206 
207 }