FieldIntelsatElevenElements.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.hipparchus.CalculusFieldElement;
  19. import org.orekit.time.FieldAbsoluteDate;

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

  30.     /**
  31.      * Elements epoch.
  32.      */
  33.     private final FieldAbsoluteDate<T> epoch;

  34.     /**
  35.      * Mean longitude (East of Greenwich).
  36.      */
  37.     private final T lm0;

  38.     /**
  39.      * Drift rate.
  40.      */
  41.     private final T lm1;

  42.     /**
  43.      * Drift acceleration.
  44.      */
  45.     private final T lm2;

  46.     /**
  47.      * Longitude oscillation-amplitude for the cosine term.
  48.      */
  49.     private final T lonC;

  50.     /**
  51.      * Rate of change of longitude, for the cosine term.
  52.      */
  53.     private final T lonC1;

  54.     /**
  55.      * Longitude oscillation-amplitude for the sine term.
  56.      */
  57.     private final T lonS;

  58.     /**
  59.      * Rate of change of longitude, for the sine term.
  60.      */
  61.     private final T lonS1;

  62.     /**
  63.      * Latitude oscillation-amplitude for the cosine term.
  64.      */
  65.     private final T latC;

  66.     /**
  67.      * Rate of change of latitude, for the cosine term.
  68.      */
  69.     private final T latC1;

  70.     /**
  71.      * Latitude oscillation-amplitude for the sine term.
  72.      */
  73.     private final T latS;

  74.     /**
  75.      * Rate of change of latitude, for the sine term.
  76.      */
  77.     private final T latS1;

  78.     /**
  79.      * Constructor.
  80.      *
  81.      * @param epoch elements epoch
  82.      * @param lm0   mean longitude (East of Greenwich) in degrees
  83.      * @param lm1   drift rate in degrees/day
  84.      * @param lm2   drift acceleration in degrees/day/day
  85.      * @param lonC  longitude oscillation-amplitude for the cosine term in degrees
  86.      * @param lonC1 rate of change of longitude, for the cosine term, in degrees/day
  87.      * @param lonS  longitude oscillation-amplitude for the sine term in degrees
  88.      * @param lonS1 rate of change of longitude, for the sine term, in degrees/day
  89.      * @param latC  latitude oscillation-amplitude for the cosine term in degrees
  90.      * @param latC1 rate of change of latitude, for the cosine term, in degrees/day
  91.      * @param latS  latitude oscillation-amplitude for the sine term in degrees
  92.      * @param latS1 rate of change of latitude, for the sine term, in degrees/day
  93.      */
  94.     public FieldIntelsatElevenElements(final FieldAbsoluteDate<T> epoch, final T lm0, final T lm1, final T lm2, final T lonC, final T lonC1, final T lonS, final T lonS1,
  95.                                        final T latC, final T latC1, final T latS, final T latS1) {
  96.         this.epoch = epoch;
  97.         this.lm0 = lm0;
  98.         this.lm1 = lm1;
  99.         this.lm2 = lm2;
  100.         this.lonC = lonC;
  101.         this.lonC1 = lonC1;
  102.         this.lonS = lonS;
  103.         this.lonS1 = lonS1;
  104.         this.latC = latC;
  105.         this.latC1 = latC1;
  106.         this.latS = latS;
  107.         this.latS1 = latS1;
  108.     }

  109.     /**
  110.      * Get the elements epoch.
  111.      *
  112.      * @return elements epoch
  113.      */
  114.     public FieldAbsoluteDate<T> getEpoch() {
  115.         return epoch;
  116.     }

  117.     /**
  118.      * Get the mean longitude (East of Greenwich).
  119.      *
  120.      * @return the mean longitude (East of Greenwich) in degrees
  121.      */
  122.     public T getLm0() {
  123.         return lm0;
  124.     }

  125.     /**
  126.      * Get the drift rate.
  127.      *
  128.      * @return the drift rate in degrees/day
  129.      */
  130.     public T getLm1() {
  131.         return lm1;
  132.     }

  133.     /**
  134.      * Get the drift acceleration.
  135.      *
  136.      * @return the drift acceleration in degrees/day/day
  137.      */
  138.     public T getLm2() {
  139.         return lm2;
  140.     }

  141.     /**
  142.      * Get the longitude oscillation-amplitude for the cosine term.
  143.      *
  144.      * @return the longitude oscillation-amplitude for the cosine term in degrees
  145.      */
  146.     public T getLonC() {
  147.         return lonC;
  148.     }

  149.     /**
  150.      * Get the rate of change of longitude, for the cosine term.
  151.      *
  152.      * @return the rate of change of longitude, for the cosine term, in degrees/day
  153.      */
  154.     public T getLonC1() {
  155.         return lonC1;
  156.     }

  157.     /**
  158.      * Get the longitude oscillation-amplitude for the sine term.
  159.      *
  160.      * @return the longitude oscillation-amplitude for the sine term in degrees
  161.      */
  162.     public T getLonS() {
  163.         return lonS;
  164.     }

  165.     /**
  166.      * Get the rate of change of longitude, for the sine term.
  167.      *
  168.      * @return the rate of change of longitude, for the sine term, in degrees/day
  169.      */
  170.     public T getLonS1() {
  171.         return lonS1;
  172.     }

  173.     /**
  174.      * Get the latitude oscillation-amplitude for the cosine term.
  175.      *
  176.      * @return the latitude oscillation-amplitude for the cosine term in degrees
  177.      */
  178.     public T getLatC() {
  179.         return latC;
  180.     }

  181.     /**
  182.      * Get the rate of change of latitude, for the cosine term.
  183.      *
  184.      * @return the rate of change of latitude, for the cosine term, in degrees/day
  185.      */
  186.     public T getLatC1() {
  187.         return latC1;
  188.     }

  189.     /**
  190.      * Get the latitude oscillation-amplitude for the sine term.
  191.      *
  192.      * @return the latitude oscillation-amplitude for the sine term in degrees
  193.      */
  194.     public T getLatS() {
  195.         return latS;
  196.     }

  197.     /**
  198.      * Get the rate of change of latitude, for the sine term.
  199.      *
  200.      * @return the rate of change of latitude, for the sine term, in degrees/day
  201.      */
  202.     public T getLatS1() {
  203.         return latS1;
  204.     }
  205. }