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