IntelsatElevenElements.java

  1. /* Copyright 2002-2025 Airbus Defence and Space
  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.  * Airbus Defence and Space 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.intelsat;

  18. import org.orekit.time.AbsoluteDate;

  19. /**
  20.  * This class is a container for a single set of Intelsat's 11 Elements data.
  21.  * <p>
  22.  * Intelsat's 11 elements are defined in ITU-R S.1525 standard.
  23.  * </p>
  24.  *
  25.  * @author Bryan Cazabonne
  26.  * @since 12.1
  27.  */
  28. public class IntelsatElevenElements {

  29.     /**
  30.      * Sun synchronous radius in kilometers.
  31.      */
  32.     public static final double SYNCHRONOUS_RADIUS_KM = 42164.57;

  33.     /**
  34.      * PI over 360.
  35.      */
  36.     public static final double K = 0.0087266462;

  37.     /**
  38.      * Longitude drift rate.
  39.      */
  40.     public static final double DRIFT_RATE_SHIFT_DEG_PER_DAY = 360.98564;

  41.     /**
  42.      * Elements epoch.
  43.      */
  44.     private final AbsoluteDate epoch;

  45.     /**
  46.      * Mean longitude (East of Greenwich).
  47.      */
  48.     private final double lm0;

  49.     /**
  50.      * Drift rate.
  51.      */
  52.     private final double lm1;

  53.     /**
  54.      * Drift acceleration.
  55.      */
  56.     private final double lm2;

  57.     /**
  58.      * Longitude oscillation-amplitude for the cosine term.
  59.      */
  60.     private final double lonC;

  61.     /**
  62.      * Rate of change of longitude, for the cosine term.
  63.      */
  64.     private final double lonC1;

  65.     /**
  66.      * Longitude oscillation-amplitude for the sine term.
  67.      */
  68.     private final double lonS;

  69.     /**
  70.      * Rate of change of longitude, for the sine term.
  71.      */
  72.     private final double lonS1;

  73.     /**
  74.      * Latitude oscillation-amplitude for the cosine term.
  75.      */
  76.     private final double latC;

  77.     /**
  78.      * Rate of change of latitude, for the cosine term.
  79.      */
  80.     private final double latC1;

  81.     /**
  82.      * Latitude oscillation-amplitude for the sine term.
  83.      */
  84.     private final double latS;

  85.     /**
  86.      * Rate of change of latitude, for the sine term.
  87.      */
  88.     private final double latS1;

  89.     /**
  90.      * Constructor.
  91.      *
  92.      * @param epoch elements epoch
  93.      * @param lm0   mean longitude (East of Greenwich) in degrees
  94.      * @param lm1   drift rate in degrees/day
  95.      * @param lm2   drift acceleration in degrees/day/day
  96.      * @param lonC  longitude oscillation-amplitude for the cosine term in degrees
  97.      * @param lonC1 rate of change of longitude, for the cosine term, in degrees/day
  98.      * @param lonS  longitude oscillation-amplitude for the sine term in degrees
  99.      * @param lonS1 rate of change of longitude, for the sine term, in degrees/day
  100.      * @param latC  latitude oscillation-amplitude for the cosine term in degrees
  101.      * @param latC1 rate of change of latitude, for the cosine term, in degrees/day
  102.      * @param latS  latitude oscillation-amplitude for the sine term in degrees
  103.      * @param latS1 rate of change of latitude, for the sine term, in degrees/day
  104.      */
  105.     public IntelsatElevenElements(final AbsoluteDate epoch, final double lm0, final double lm1, final double lm2, final double lonC, final double lonC1, final double lonS,
  106.                                   final double lonS1, final double latC, final double latC1, final double latS, final double latS1) {
  107.         this.epoch = epoch;
  108.         this.lm0 = lm0;
  109.         this.lm1 = lm1;
  110.         this.lm2 = lm2;
  111.         this.lonC = lonC;
  112.         this.lonC1 = lonC1;
  113.         this.lonS = lonS;
  114.         this.lonS1 = lonS1;
  115.         this.latC = latC;
  116.         this.latC1 = latC1;
  117.         this.latS = latS;
  118.         this.latS1 = latS1;
  119.     }

  120.     /**
  121.      * Get the elements epoch.
  122.      *
  123.      * @return elements epoch
  124.      */
  125.     public AbsoluteDate getEpoch() {
  126.         return epoch;
  127.     }

  128.     /**
  129.      * Get the mean longitude (East of Greenwich).
  130.      *
  131.      * @return the mean longitude (East of Greenwich) in degrees
  132.      */
  133.     public double getLm0() {
  134.         return lm0;
  135.     }

  136.     /**
  137.      * Get the drift rate.
  138.      *
  139.      * @return the drift rate in degrees/day
  140.      */
  141.     public double getLm1() {
  142.         return lm1;
  143.     }

  144.     /**
  145.      * Get the drift acceleration.
  146.      *
  147.      * @return the drift acceleration in degrees/day/day
  148.      */
  149.     public double getLm2() {
  150.         return lm2;
  151.     }

  152.     /**
  153.      * Get the longitude oscillation-amplitude for the cosine term.
  154.      *
  155.      * @return the longitude oscillation-amplitude for the cosine term in degrees
  156.      */
  157.     public double getLonC() {
  158.         return lonC;
  159.     }

  160.     /**
  161.      * Get the rate of change of longitude, for the cosine term.
  162.      *
  163.      * @return the rate of change of longitude, for the cosine term, in degrees/day
  164.      */
  165.     public double getLonC1() {
  166.         return lonC1;
  167.     }

  168.     /**
  169.      * Get the longitude oscillation-amplitude for the sine term.
  170.      *
  171.      * @return the longitude oscillation-amplitude for the sine term in degrees
  172.      */
  173.     public double getLonS() {
  174.         return lonS;
  175.     }

  176.     /**
  177.      * Get the rate of change of longitude, for the sine term.
  178.      *
  179.      * @return the rate of change of longitude, for the sine term, in degrees/day
  180.      */
  181.     public double getLonS1() {
  182.         return lonS1;
  183.     }

  184.     /**
  185.      * Get the latitude oscillation-amplitude for the cosine term.
  186.      *
  187.      * @return the latitude oscillation-amplitude for the cosine term in degrees
  188.      */
  189.     public double getLatC() {
  190.         return latC;
  191.     }

  192.     /**
  193.      * Get the rate of change of latitude, for the cosine term.
  194.      *
  195.      * @return the rate of change of latitude, for the cosine term, in degrees/day
  196.      */
  197.     public double getLatC1() {
  198.         return latC1;
  199.     }

  200.     /**
  201.      * Get the latitude oscillation-amplitude for the sine term.
  202.      *
  203.      * @return the latitude oscillation-amplitude for the sine term in degrees
  204.      */
  205.     public double getLatS() {
  206.         return latS;
  207.     }

  208.     /**
  209.      * Get the rate of change of latitude, for the sine term.
  210.      *
  211.      * @return the rate of change of latitude, for the sine term, in degrees/day
  212.      */
  213.     public double getLatS1() {
  214.         return latS1;
  215.     }
  216. }