1   /* Copyright 2002-2021 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.propagation.analytical.tle;
18  
19  
20  /** Constants necessary to TLE propagation.
21   *
22   * This constants are used in the WGS-72 model, compliant with NORAD implementations.
23   *
24   * @author Fabien Maussion
25   */
26  public class TLEConstants {
27  
28      /** Constant 1.0 / 3.0. */
29      public static final double ONE_THIRD = 1.0 / 3.0;
30  
31      /** Constant 2.0 / 3.0. */
32      public static final double TWO_THIRD = 2.0 / 3.0;
33  
34      /** Earth radius in km. */
35      public static final double EARTH_RADIUS = 6378.135;
36  
37      /** Equatorial radius rescaled (1.0). */
38      public static final double NORMALIZED_EQUATORIAL_RADIUS = 1.0;
39  
40      /** Time units per julian day. */
41      public static final double MINUTES_PER_DAY = 1440.0;
42  
43      // CHECKSTYLE: stop JavadocVariable check
44      // Potential perturbation coefficients
45      public static final double XKE    = 0.0743669161331734132; // mu = 3.986008e+14;
46      public static final double XJ3    = -2.53881e-6;
47      public static final double XJ2    = 1.082616e-3;
48      public static final double XJ4    = -1.65597e-6;
49      public static final double CK2    = 0.5 * XJ2 * NORMALIZED_EQUATORIAL_RADIUS * NORMALIZED_EQUATORIAL_RADIUS;
50      public static final double CK4    = -0.375 * XJ4 * NORMALIZED_EQUATORIAL_RADIUS * NORMALIZED_EQUATORIAL_RADIUS *
51                                          NORMALIZED_EQUATORIAL_RADIUS * NORMALIZED_EQUATORIAL_RADIUS;
52      public static final double S      = NORMALIZED_EQUATORIAL_RADIUS * (1. + 78. / EARTH_RADIUS);
53      public static final double QOMS2T = 1.880279159015270643865e-9;
54      public static final double A3OVK2 = -XJ3 / CK2 * NORMALIZED_EQUATORIAL_RADIUS * NORMALIZED_EQUATORIAL_RADIUS *
55                                          NORMALIZED_EQUATORIAL_RADIUS;
56  
57      // Deep SDP4 constants
58      public static final double ZNS      = 1.19459E-5;
59      public static final double ZES      = 0.01675;
60      public static final double ZNL      = 1.5835218E-4;
61      public static final double ZEL      = 0.05490;
62      public static final double THDT     = 4.3752691E-3;
63      public static final double C1SS     =  2.9864797E-6;
64      public static final double C1L      = 4.7968065E-7;
65  
66      public static final double ROOT22   = 1.7891679E-6;
67      public static final double ROOT32   = 3.7393792E-7;
68      public static final double ROOT44   = 7.3636953E-9;
69      public static final double ROOT52   = 1.1428639E-7;
70      public static final double ROOT54   = 2.1765803E-9;
71  
72      public static final double Q22      =  1.7891679E-6;
73      public static final double Q31      =  2.1460748E-6;
74      public static final double Q33      =  2.2123015E-7;
75  
76      public static final double C_FASX2  =  0.99139134268488593;
77      public static final double S_FASX2  =  0.13093206501640101;
78      public static final double C_2FASX4 =  0.87051638752972937;
79      public static final double S_2FASX4 = -0.49213943048915526;
80      public static final double C_3FASX6 =  0.43258117585763334;
81      public static final double S_3FASX6 =  0.90159499016666422;
82  
83      public static final double C_G22    =  0.87051638752972937;
84      public static final double S_G22    = -0.49213943048915526;
85      public static final double C_G32    =  0.57972190187001149;
86      public static final double S_G32    =  0.81481440616389245;
87      public static final double C_G44    = -0.22866241528815548;
88      public static final double S_G44    =  0.97350577801807991;
89      public static final double C_G52    =  0.49684831179884198;
90      public static final double S_G52    =  0.86783740128127729;
91      public static final double C_G54    = -0.29695209575316894;
92      public static final double S_G54    = -0.95489237761529999;
93  
94      // CHECKSTYLE: resume JavadocVariable check
95  
96      /** Earth gravity coefficient in m³/s². */
97      public static final double MU = XKE * XKE * EARTH_RADIUS * EARTH_RADIUS * EARTH_RADIUS * (1000 * 1000 * 1000) / (60 * 60);
98  
99      /** Private constructor for a utility class.
100      */
101     private TLEConstants() {
102         // nothin to do
103     }
104 
105 }