1 /* Copyright 2002-2019 CS Systèmes d'Information
2 * Licensed to CS Systèmes d'Information (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.RealFieldElement;
20
21 /** Class for planetary only terms.
22 * @author Luc Maisonobe
23 */
24 class PlanetaryTerm extends SeriesTerm {
25
26 /** Coefficient for mean Mercury longitude. */
27 private final int cMe;
28
29 /** Coefficient for mean Venus longitude. */
30 private final int cVe;
31
32 /** Coefficient for mean Earth longitude. */
33 private final int cE;
34
35 /** Coefficient for mean Mars longitude. */
36 private final int cMa;
37
38 /** Coefficient for mean Jupiter longitude. */
39 private final int cJu;
40
41 /** Coefficient for mean Saturn longitude. */
42 private final int cSa;
43
44 /** Coefficient for mean Uranus longitude. */
45 private final int cUr;
46
47 /** Coefficient for mean Neptune longitude. */
48 private final int cNe;
49
50 /** Coefficient for general accumulated precession in longitude. */
51 private final int cPa;
52
53 /** Build a planetary term for nutation series.
54 * @param cMe coefficient for mean Mercury longitude
55 * @param cVe coefficient for mean Venus longitude
56 * @param cE coefficient for mean Earth longitude
57 * @param cMa coefficient for mean Mars longitude
58 * @param cJu coefficient for mean Jupiter longitude
59 * @param cSa coefficient for mean Saturn longitude
60 * @param cUr coefficient for mean Uranus longitude
61 * @param cNe coefficient for mean Neptune longitude
62 * @param cPa coefficient for general accumulated precession in longitude
63 */
64 PlanetaryTerm(final int cMe, final int cVe, final int cE, final int cMa, final int cJu,
65 final int cSa, final int cUr, final int cNe, final int cPa) {
66 this.cMe = cMe;
67 this.cVe = cVe;
68 this.cE = cE;
69 this.cMa = cMa;
70 this.cJu = cJu;
71 this.cSa = cSa;
72 this.cUr = cUr;
73 this.cNe = cNe;
74 this.cPa = cPa;
75 }
76
77 /** {@inheritDoc} */
78 protected double argument(final BodiesElements elements) {
79 return cMe * elements.getLMe() + cVe * elements.getLVe() + cE * elements.getLE() +
80 cMa * elements.getLMa() + cJu * elements.getLJu() +
81 cSa * elements.getLSa() + cUr * elements.getLUr() +
82 cNe * elements.getLNe() + cPa * elements.getPa();
83 }
84
85 /** {@inheritDoc} */
86 protected double argumentDerivative(final BodiesElements elements) {
87 return cMe * elements.getLMeDot() + cVe * elements.getLVeDot() + cE * elements.getLEDot() +
88 cMa * elements.getLMaDot() + cJu * elements.getLJuDot() +
89 cSa * elements.getLSaDot() + cUr * elements.getLUrDot() +
90 cNe * elements.getLNeDot() + cPa * elements.getPaDot();
91 }
92
93 /** {@inheritDoc} */
94 protected <T extends RealFieldElement<T>> T argument(final FieldBodiesElements<T> elements) {
95 return elements.getLMe().multiply(cMe).
96 add(elements.getLVe().multiply(cVe)).
97 add(elements.getLE().multiply(cE)).
98 add(elements.getLMa().multiply(cMa)).
99 add(elements.getLJu().multiply(cJu)).
100 add(elements.getLSa().multiply(cSa)).
101 add(elements.getLUr().multiply(cUr)).
102 add(elements.getLNe().multiply(cNe)).
103 add(elements.getPa().multiply(cPa));
104 }
105
106 /** {@inheritDoc} */
107 protected <T extends RealFieldElement<T>> T argumentDerivative(final FieldBodiesElements<T> elements) {
108 return elements.getLMeDot().multiply(cMe).
109 add(elements.getLVeDot().multiply(cVe)).
110 add(elements.getLEDot().multiply(cE)).
111 add(elements.getLMaDot().multiply(cMa)).
112 add(elements.getLJuDot().multiply(cJu)).
113 add(elements.getLSaDot().multiply(cSa)).
114 add(elements.getLUrDot().multiply(cUr)).
115 add(elements.getLNeDot().multiply(cNe)).
116 add(elements.getPaDot().multiply(cPa));
117 }
118
119 }