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.frames; 18 19 import java.io.Serializable; 20 21 import org.orekit.time.AbsoluteDate; 22 import org.orekit.time.TimeScalesFactory; 23 import org.orekit.time.TimeStamped; 24 25 /** This class holds an Earth Orientation Parameters entry. 26 * @author Luc Maisonobe 27 */ 28 public class EOPEntry implements TimeStamped, Serializable { 29 30 /** Serializable UID. */ 31 private static final long serialVersionUID = 20180330L; 32 33 /** Entry date (modified julian day, 00h00 UTC scale). */ 34 private final int mjd; 35 36 /** Entry date (absolute date). */ 37 private final AbsoluteDate date; 38 39 /** UT1-UTC. */ 40 private final double dt; 41 42 /** Length of day. */ 43 private final double lod; 44 45 /** X component of pole motion. */ 46 private final double x; 47 48 /** Y component of pole motion. */ 49 private final double y; 50 51 /** Correction for nutation in longitude. */ 52 private final double ddPsi; 53 54 /** Correction for nutation in obliquity. */ 55 private final double ddEps; 56 57 /** Correction for nutation in Celestial Intermediate Pole (CIP) coordinates. */ 58 private final double dx; 59 60 /** Correction for nutation in Celestial Intermediate Pole (CIP) coordinates. */ 61 private final double dy; 62 63 /** ITRF version this entry defines. */ 64 private final ITRFVersion itrfType; 65 66 /** Simple constructor. 67 * <p> 68 * This constructor uses {@link ITRFVersion#ITRF_2014} by default. 69 * </p> 70 * @param mjd entry date (modified Julian day, 00h00 UTC scale) 71 * @param dt UT1-UTC in seconds 72 * @param lod length of day 73 * @param x X component of pole motion 74 * @param y Y component of pole motion 75 * @param ddPsi correction for nutation in longitude δΔΨ 76 * @param ddEps correction for nutation in obliquity δΔε 77 * @param dx correction for Celestial Intermediate Pole (CIP) coordinates 78 * @param dy correction for Celestial Intermediate Pole (CIP) coordinates 79 * @deprecated as of 9.2 replaced with {@link #EOPEntry(int, double, double, 80 * double, double, double, double, double, double, ITRFVersion) 81 */ 82 @Deprecated 83 public EOPEntry(final int mjd, final double dt, final double lod, 84 final double x, final double y, 85 final double ddPsi, final double ddEps, 86 final double dx, final double dy) { 87 this(mjd, dt, lod, x, y, ddPsi, ddEps, dx, dy, ITRFVersion.ITRF_2014); 88 } 89 90 /** Simple constructor. 91 * @param mjd entry date (modified Julian day, 00h00 UTC scale) 92 * @param dt UT1-UTC in seconds 93 * @param lod length of day 94 * @param x X component of pole motion 95 * @param y Y component of pole motion 96 * @param ddPsi correction for nutation in longitude δΔΨ 97 * @param ddEps correction for nutation in obliquity δΔε 98 * @param dx correction for Celestial Intermediate Pole (CIP) coordinates 99 * @param dy correction for Celestial Intermediate Pole (CIP) coordinates 100 * @param itrfType ITRF version this entry defines 101 */ 102 public EOPEntry(final int mjd, final double dt, final double lod, 103 final double x, final double y, 104 final double ddPsi, final double ddEps, 105 final double dx, final double dy, 106 final ITRFVersion itrfType) { 107 108 this.mjd = mjd; 109 this.date = AbsoluteDate.createMJDDate(mjd, 0.0, TimeScalesFactory.getUTC()); 110 this.dt = dt; 111 this.lod = lod; 112 this.x = x; 113 this.y = y; 114 this.ddPsi = ddPsi; 115 this.ddEps = ddEps; 116 this.dx = dx; 117 this.dy = dy; 118 this.itrfType = itrfType; 119 120 } 121 122 /** Get the entry date (modified julian day, 00h00 UTC scale). 123 * @return entry date 124 * @see #getDate() 125 */ 126 public int getMjd() { 127 return mjd; 128 } 129 130 /** {@inheritDoc} */ 131 public AbsoluteDate getDate() { 132 return date; 133 } 134 135 /** Get the UT1-UTC value. 136 * @return UT1-UTC in seconds 137 */ 138 public double getUT1MinusUTC() { 139 return dt; 140 } 141 142 /** Get the LoD (Length of Day) value. 143 * @return LoD in seconds 144 */ 145 public double getLOD() { 146 return lod; 147 } 148 149 /** Get the X component of the pole motion. 150 * @return X component of pole motion 151 */ 152 public double getX() { 153 return x; 154 } 155 156 /** Get the Y component of the pole motion. 157 * @return Y component of pole motion 158 */ 159 public double getY() { 160 return y; 161 } 162 163 /** Get the correction for nutation in longitude δΔΨ. 164 * @return correction for nutation in longitude δΔΨ 165 */ 166 public double getDdPsi() { 167 return ddPsi; 168 } 169 170 /** Get the correction for nutation in obliquity δΔε. 171 * @return correction for nutation in obliquity δΔε 172 */ 173 public double getDdEps() { 174 return ddEps; 175 } 176 177 /** Get the correction for Celestial Intermediate Pole (CIP) coordinates. 178 * @return correction for Celestial Intermediate Pole (CIP) coordinates 179 */ 180 public double getDx() { 181 return dx; 182 } 183 184 /** Get the correction for Celestial Intermediate Pole (CIP) coordinates. 185 * @return correction for Celestial Intermediate Pole (CIP) coordinates 186 */ 187 public double getDy() { 188 return dy; 189 } 190 191 /** Get the ITRF version this entry defines. 192 * @return ITRF version this entry defines 193 * @since 9.2 194 */ 195 public ITRFVersion getITRFType() { 196 return itrfType; 197 } 198 199 }