EarthOrientationParameterMessage.java

  1. /* Copyright 2022-2025 Luc Maisonobe
  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.files.rinex.navigation;

  18. import org.orekit.gnss.SatelliteSystem;
  19. import org.orekit.time.AbsoluteDate;

  20. /** Container for data contained in a Earth Orientation Parameter navigation message.
  21.  * @author Luc Maisonobe
  22.  * @since 12.0
  23.  */
  24. public class EarthOrientationParameterMessage extends TypeSvMessage {

  25.     /** Reference epoch. */
  26.     private AbsoluteDate referenceEpoch;

  27.     /** X component of the pole (rad). */
  28.     private double xp;

  29.     /** X component of the pole first derivative (rad/s). */
  30.     private double xpDot;

  31.     /** X component of the pole second derivative (rad/s²). */
  32.     private double xpDotDot;

  33.     /** Y component of the pole (rad). */
  34.     private double yp;

  35.     /** Y component of the pole first derivative (rad/s). */
  36.     private double ypDot;

  37.     /** Y component of the pole second derivative (rad/s²). */
  38.     private double ypDotDot;

  39.     /** ΔUT₁ (s).
  40.      * According to Rinex 4.00 table A31, this may be either UT₁-UTC or UT₁-GPST
  41.      * depending on constellation and applicable Interface Control Document).
  42.      */
  43.     private double dUt1;

  44.     /** ΔUT₁ first derivative (s/s). */
  45.     private double dUt1Dot;

  46.     /** ΔUT₁ second derivative (s/s²). */
  47.     private double dUt1DotDot;

  48.     /** Transmission time. */
  49.     private double transmissionTime;

  50.     /** Simple constructor.
  51.      * @param system satellite system
  52.      * @param prn satellite number
  53.      * @param navigationMessageType navigation message type
  54.      */
  55.     public EarthOrientationParameterMessage(final SatelliteSystem system, final int prn, final String navigationMessageType) {
  56.         super(system, prn, navigationMessageType);
  57.     }

  58.     /** Get the reference epoch.
  59.      * @return the reference epoch
  60.      */
  61.     public AbsoluteDate getReferenceEpoch() {
  62.         return referenceEpoch;
  63.     }

  64.     /** Set the reference epoch.
  65.      * @param referenceEpoch the reference epoch to set
  66.      */
  67.     public void setReferenceEpoch(final AbsoluteDate referenceEpoch) {
  68.         this.referenceEpoch = referenceEpoch;
  69.     }

  70.     /** Get the X component of the pole.
  71.      * @return the X component of the pole (rad)
  72.      */
  73.     public double getXp() {
  74.         return xp;
  75.     }

  76.     /** Set the X component of the pole.
  77.      * @param xp X component of the pole (rad)
  78.      */
  79.     public void setXp(final double xp) {
  80.         this.xp = xp;
  81.     }

  82.     /** Get the X component of the pole first derivative.
  83.      * @return the X component of the pole first derivative (rad/s)
  84.      */
  85.     public double getXpDot() {
  86.         return xpDot;
  87.     }

  88.     /** Set the X component of the pole first derivative.
  89.      * @param xpDot X component of the pole first derivative (rad/s)
  90.      */
  91.     public void setXpDot(final double xpDot) {
  92.         this.xpDot = xpDot;
  93.     }

  94.     /** Get the X component of the pole second derivative.
  95.      * @return the X component of the pole second derivative (rad/s²)
  96.      */
  97.     public double getXpDotDot() {
  98.         return xpDotDot;
  99.     }

  100.     /** Set the X component of the pole second derivative.
  101.      * @param xpDotDot X component of the pole second derivative (rad/s²)
  102.      */
  103.     public void setXpDotDot(final double xpDotDot) {
  104.         this.xpDotDot = xpDotDot;
  105.     }

  106.     /** Get the Y component of the pole.
  107.      * @return the Y component of the pole (rad)
  108.      */
  109.     public double getYp() {
  110.         return yp;
  111.     }

  112.     /** Set the Y component of the pole.
  113.      * @param yp Y component of the pole (rad)
  114.      */
  115.     public void setYp(final double yp) {
  116.         this.yp = yp;
  117.     }

  118.     /** Get the Y component of the pole first derivative.
  119.      * @return the Y component of the pole first derivative (rad/s)
  120.      */
  121.     public double getYpDot() {
  122.         return ypDot;
  123.     }

  124.     /** Set the Y component of the pole first derivative.
  125.      * @param ypDot Y component of the pole first derivative (rad/s)
  126.      */
  127.     public void setYpDot(final double ypDot) {
  128.         this.ypDot = ypDot;
  129.     }

  130.     /** Get the Y component of the pole second derivative.
  131.      * @return the Y component of the pole second derivative (rad/s²)
  132.      */
  133.     public double getYpDotDot() {
  134.         return ypDotDot;
  135.     }

  136.     /** Set the Y component of the pole second derivative.
  137.      * @param ypDotDot Y component of the pole second derivative (rad/s²)
  138.      */
  139.     public void setYpDotDot(final double ypDotDot) {
  140.         this.ypDotDot = ypDotDot;
  141.     }

  142.     /** Get the ΔUT₁.
  143.      * @return the ΔUT₁ (s)
  144.      */
  145.     public double getDut1() {
  146.         return dUt1;
  147.     }

  148.     /** Set the ΔUT₁.
  149.      * @param dUT1 ΔUT₁ (s)
  150.      */
  151.     public void setDut1(final double dUT1) {
  152.         this.dUt1 = dUT1;
  153.     }

  154.     /** Get the ΔUT₁ first derivative.
  155.      * @return the ΔUT₁ first derivative (s/s)
  156.      */
  157.     public double getDut1Dot() {
  158.         return dUt1Dot;
  159.     }

  160.     /** Set the ΔUT₁ first derivative.
  161.      * @param dUT1Dot ΔUT₁ first derivative (s/s)
  162.      */
  163.     public void setDut1Dot(final double dUT1Dot) {
  164.         this.dUt1Dot = dUT1Dot;
  165.     }

  166.     /** Get the ΔUT₁ second derivative.
  167.      * @return the ΔUT₁ second derivative (s/s²)
  168.      */
  169.     public double getDut1DotDot() {
  170.         return dUt1DotDot;
  171.     }

  172.     /** Set the ΔUT₁ second derivative.
  173.      * @param dUT1DotDot ΔUT₁ second derivative (s/s²)
  174.      */
  175.     public void setDut1DotDot(final double dUT1DotDot) {
  176.         this.dUt1DotDot = dUT1DotDot;
  177.     }

  178.     /** Get the message transmission time.
  179.      * @return message transmission time
  180.      */
  181.     public double getTransmissionTime() {
  182.         return transmissionTime;
  183.     }

  184.     /** Set the message transmission time.
  185.      * @param transmissionTime the message transmission time
  186.      */
  187.     public void setTransmissionTime(final double transmissionTime) {
  188.         this.transmissionTime = transmissionTime;
  189.     }

  190. }