Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Private Member Functions | Static Private Member Functions | Friends | List of all members
gnsstk::EarthOrientation Class Reference

Detailed Description

class EarthOrientation encapsulates the Earth orientation parameters or EOPs, which consist of the polar motion angle xp and yp and the time offset UT1-UTC. These three parameters are determined by interpolating measured values managed by class EOPStore. Also, this class includes several static functions that implement the models in the IERS Conventions (1996, 2003 or 2010), many of which involve the EOPs. This includes the frame transformation between the conventional terrestrial (i.e. ECEF) frame and the conventional celestial (inertial) frame. The class implements models of precession and nutation of Earth's axis, as well as the precise rotation of Earth and its 'wobble' as given by the EOPs. The class requires time to be in one of two systems: UTC or TT; class EphTime is a simple class that enforces this requirement (plus TDB), transformation to and from CommonTime should be automatic. (TT is terrestrial and TDB is barycentric dynamic time, which is the time of SolarSystemEphemeris.) Also cf. classes EOPStore and SolarSystem. References: IERS1996: IERS Technical Note 21, "IERS Conventions (1996)," Dennis D. McCarthy, U.S. Naval Observatory, 1996. IERS2003: IERS Technical Note 32, "IERS Conventions (2003)," Dennis D. McCarthy and Gerard Petit eds., U.S. Naval Observatory and Bureau International des Poids et Mesures, 2004. IERS2010: IERS Technical Note 36, "IERS Conventions (2010)," Gerard Petit and Brian Luzum eds., Bureau International des Poids et Mesures and U.S. Naval Observatory, 2010.

Definition at line 93 of file EarthOrientation.hpp.

#include <EarthOrientation.hpp>

Public Member Functions

 EarthOrientation ()
 Constructor. More...
 
Matrix< double > ECEFtoInertial (const EphTime &t, bool reduced=false)
 
Matrix< double > ECEFtoJ2000 (const EphTime &t, bool reduced=false)
 
double GAST (const EphTime &t, bool reduced=false)
 
double GMST (const EphTime &t, bool reduced=false)
 
void interpolateEOP (const EphTime &ttag, const std::vector< double > &time, const std::vector< double > &X, const std::vector< double > &Y, std::vector< double > &dT, const IERSConvention &conv)
 
Matrix< double > nutationMatrix (const EphTime &t)
 
double obliquity (double T)
 
Matrix< double > polarMotionMatrix (const EphTime &t)
 
Matrix< double > precessionMatrix (const EphTime &t)
 
Matrix< double > preciseEarthRotation (const EphTime &t)
 

Static Public Member Functions

static double coordTransTime (EphTime t)
 
static double D (double T)
 
static double F (double T)
 
static double L (double T)
 
static double LE (double T)
 
static double LJ (double T)
 
static double LMa (double T)
 
static double LMe (double T)
 
static double LN (double T)
 
static double Lp (double T)
 
static double LS (double T)
 
static double LU (double T)
 
static double LV (double T)
 
static double Omega (double T)
 
static double Omega2003 (double T)
 
static double Pa (double T)
 

Public Attributes

IERSConvention convention
 IERS convention appropriate for this data. More...
 
double UT1mUTC
 Time offset UT1 minus UTC, in seconds. More...
 
double xp
 Polar motion angle xp, in arcseconds. More...
 
double yp
 Polar motion angle yp, in arcseconds. More...
 

Static Public Attributes

static const double ARCSEC_PER_CIRCLE = 1296000.0
 how many arcseconds in 360 degrees? More...
 
static const double ARCSEC_TO_RAD = 4.848136811095359935899141e-6
 convert arc seconds to radians More...
 
static const double DEG_TO_RAD = 0.0174532925199432957692369
 convert degrees to radians and back More...
 
static const double HALFPI = (TWOPI / 4.)
 
static const int intJulianEpoch = 51544
 
static const double JulianEpoch = 51544.5
 
static const double PI = (TWOPI / 2.)
 pi, 2*pi and pi/2 More...
 
static const double RAD_TO_DEG = 57.29577951308232087679815
 
static const double TWOPI = 6.283185307179586476925287
 

Private Member Functions

Matrix< double > ECEFtoInertial1996 (EphTime t, double xp, double yp, double UT1mUTC, bool reduced=false)
 
Matrix< double > ECEFtoInertial2003 (EphTime t, double xp, double yp, double UT1mUTC)
 
Matrix< double > ECEFtoInertial2010 (EphTime t, double xp, double yp, double UT1mUTC)
 

Static Private Member Functions

static Matrix< double > biasMatrix2010 ()
 
static double EarthRotationAngle (const EphTime &t, double &UT1mUTC)
 
static double equationOfEquinoxes2003 (EphTime t)
 
static Matrix< double > FukushimaWilliams (double gamb, double phib, double psib, double epsa)
 
static void FukushimaWilliams (double T, double &gamb, double &phib, double &psib, double &eps)
 
static double gast1996 (EphTime t, double om, double eps, double dpsi, double UT1mUTC)
 
static double GAST1996 (EphTime t, double UT1mUTC, bool reduced=false)
 
static double GAST2003 (EphTime t, double UT1mUTC)
 
static double GAST2010 (EphTime t, double UT1mUTC)
 
static double GMST1996 (EphTime t, double UT1mUTC, bool reduced=false)
 
static double GMST2003 (EphTime t, double UT1mUTC)
 
static double GMST2010 (EphTime t, double UT1mUTC)
 
static void nutationAngles1996 (double T, double &deps, double &dpsi, double &om)
 
static void nutationAngles2003 (double T, double &deps, double &dpsi)
 
static void nutationAngles2010 (double T, double &deps, double &dpsi)
 
static Matrix< double > nutationMatrix (double eps, double dpsi, double deps)
 
static Matrix< double > nutationMatrix1996 (double T)
 
static Matrix< double > nutationMatrix2003 (double T)
 
static Matrix< double > nutationMatrix2010 (double T)
 
static double obliquity1996 (double T)
 
static double obliquity2010 (double T)
 
static Matrix< double > polarMotionMatrix1996 (double xp, double yp)
 
static Matrix< double > polarMotionMatrix2003 (EphTime t, double xp, double yp)
 
static Matrix< double > precessionMatrix1996 (double T)
 
static Matrix< double > precessionMatrix2003 (double T)
 
static Matrix< double > precessionMatrix2010 (double T)
 
static void precessionRateCorrections2003 (double T, double &dpsi, double &deps)
 
static Matrix< double > preciseEarthRotation2003 (double T)
 
static Matrix< double > preciseEarthRotation2010 (double T)
 
static double S (double T, double &X, double &Y, IERSConvention which=IERSConvention::IERS2003)
 
static double Sprime (double T)
 
static double Sprime (EphTime t)
 Sprime with EphTime input; cf. Sprime(double T == coordTransTime(t)) More...
 
static void UT1mUTCTidalCorrections (double T, double &UT1mUTR, double &dlodR, double &domegaR)
 
static void XYCIO (double &T, double &X, double &Y)
 

Friends

std::ostream & operator<< (std::ostream &s, const EarthOrientation &)
 append to output stream More...
 

Constructor & Destructor Documentation

◆ EarthOrientation()

gnsstk::EarthOrientation::EarthOrientation ( )
inline

Constructor.

Definition at line 109 of file EarthOrientation.hpp.

Member Function Documentation

◆ biasMatrix2010()

Matrix< double > gnsstk::EarthOrientation::biasMatrix2010 ( )
staticprivate

IERS2010 frame bias matrix, a 3x3 rotation matrix; cf. FukushimaWilliams().

Returns
frame bias matrix Matrix<double>(3,3)

Definition at line 2764 of file EarthOrientation.cpp.

◆ coordTransTime()

double gnsstk::EarthOrientation::coordTransTime ( EphTime  t)
static

'coordinate transformation time', which is used throughout the class, defined as the terrestrial time (TT) since J2000, in centuries. Valid for IERS1996, IERS2003, IERS2010

Parameters
tEphTime time of interest.
Returns
coordinate transformation time at t.
Exceptions
Exceptionif the TimeSystem conversion fails (if TimeSystem is Unknown)

Definition at line 805 of file EarthOrientation.cpp.

◆ D()

double gnsstk::EarthOrientation::D ( double  T)
static

mean elongation of the moon from the sun, in radians, given T, the coordTransTime at the time of interest. Valid for IERS1996, IERS2003, IERS2010

Parameters
Tcoordinate transformation time.
Returns
D in radians.

Definition at line 874 of file EarthOrientation.cpp.

◆ EarthRotationAngle()

double gnsstk::EarthOrientation::EarthRotationAngle ( const EphTime t,
double &  UT1mUTC 
)
staticprivate

Starting with 2003 conventions a new method for computing the transformation fron ITRS to GCRS is provided by the Celestial Ephemeris Origin (CEO) which is based on the Earth Rotation Angle, which depends on time(UT1). Ref. IERS Tech Note 32 Chap 5 Eqn 14

Parameters
tEphTime time of interest
UT1mUTCoffset UT1-UTC
Returns
Earth rotation angle in radians
Exceptions
Exceptionif the TimeSystem conversion fails (if TimeSystem is Unknown)

Definition at line 1719 of file EarthOrientation.cpp.

◆ ECEFtoInertial()

Matrix< double > gnsstk::EarthOrientation::ECEFtoInertial ( const EphTime t,
bool  reduced = false 
)

Generate the full transformation matrix (3x3 rotation) relating the ECEF frame to the conventional inertial frame. Input is the time of interest; use this object's EOPs - the polar motion angles xp and yp (arcseconds), and UT1-UTC (seconds) (xp,yp and UT1-UTC are as found in the IERS bulletin).

Parameters
tepoch of the rotation.
reducedtrue when UT1mUTC is 'reduced', meaning assumes 'no tides', as is the case with the NGA EOPs (default=F).
Returns
3x3 rotation matrix
Exceptions
Exceptionif the TimeSystem conversion fails (if TimeSystem is Unknown)
Exceptionif convention is not defined

Definition at line 1247 of file EarthOrientation.cpp.

◆ ECEFtoInertial1996()

Matrix< double > gnsstk::EarthOrientation::ECEFtoInertial1996 ( EphTime  t,
double  xp,
double  yp,
double  UT1mUTC,
bool  reduced = false 
)
private

Generate the full transformation matrix (3x3 rotation) relating the ECEF frame to the conventional inertial frame, using IERS 1996 conventions. Input is the time of interest, the polar motion angles xp and yp (arcsecs), and UT1-UTC (sec) (xp,yp and UT1-UTC are just as found in the IERS bulletin)

Parameters
tEphTime epoch of the rotation.
xpEarth wobble in arcseconds, as found in the IERS bulletin.
ypEarth wobble in arcseconds, as found in the IERS bulletin.
UT1mUTCUT1-UTC in seconds, as found in the IERS bulletin.
reducedbool true when UT1mUTC is 'reduced', meaning assumes 'no tides', as is the case with the NGA EOPs (default=F).
Returns
3x3 rotation matrix
Exceptions
Exceptionif the TimeSystem conversion fails (if TimeSystem is Unknown)

Definition at line 2854 of file EarthOrientation.cpp.

◆ ECEFtoInertial2003()

Matrix< double > gnsstk::EarthOrientation::ECEFtoInertial2003 ( EphTime  t,
double  xp,
double  yp,
double  UT1mUTC 
)
private

Generate the full transformation matrix (3x3 rotation) relating the ECEF frame to the conventional inertial frame, using IERS 2003 conventions. Input is the time of interest, the polar motion angles xp and yp (arcsecs), and UT1-UTC (sec) (xp,yp and UT1-UTC are just as found in the IERS bulletin)

Parameters
tEphTime epoch of the rotation.
xpEarth wobble in arcseconds, as found in the IERS bulletin.
ypEarth wobble in arcseconds, as found in the IERS bulletin.
UT1mUTCUT1-UTC in seconds, as found in the IERS bulletin.
Returns
3x3 rotation matrix
Exceptions
Exceptionif the TimeSystem conversion fails (if TimeSystem is Unknown)

Definition at line 2925 of file EarthOrientation.cpp.

◆ ECEFtoInertial2010()

Matrix< double > gnsstk::EarthOrientation::ECEFtoInertial2010 ( EphTime  t,
double  xp,
double  yp,
double  UT1mUTC 
)
private

Generate the full transformation matrix (3x3 rotation) relating the ECEF frame to the conventional inertial frame, using IERS 2010 conventions. Input is the time of interest, the polar motion angles xp and yp (arcsecs), and UT1-UTC (sec) (xp,yp and UT1-UTC are just as found in the IERS bulletin)

Parameters
tEphTime epoch of the rotation.
xpEarth wobble in arcseconds, as found in the IERS bulletin.
ypEarth wobble in arcseconds, as found in the IERS bulletin.
UT1mUTCUT1-UTC in seconds, as found in the IERS bulletin.
Returns
3x3 rotation matrix
Exceptions
Exceptionif TimeSystem conversion fails (if TimeSystem is Unknown)

Definition at line 3002 of file EarthOrientation.cpp.

◆ ECEFtoJ2000()

Matrix<double> gnsstk::EarthOrientation::ECEFtoJ2000 ( const EphTime t,
bool  reduced = false 
)

Compute the transformation from ECEF to the J2000 dynamical (inertial) frame. This differs from the ECEFtoInertial transformation only by the frame bias matrix. Only available in IERS2010. NB currently not tested. ***

Exceptions
Exception

◆ equationOfEquinoxes2003()

double gnsstk::EarthOrientation::equationOfEquinoxes2003 ( EphTime  t)
staticprivate

Equation of the equinoxes complementary terms, IAU 2000 (IERS 2003) Note that GAST = GMST + equationOfEquinoxes

Parameters
tEphTime epoch of interest
Returns
the ee in radians
Exceptions
Exceptionif the TimeSystem conversion fails (if TimeSystem is Unknown)

Definition at line 1770 of file EarthOrientation.cpp.

◆ F()

double gnsstk::EarthOrientation::F ( double  T)
static

mean longitude of the moon minus Omega, in radians, given T, the coordTransTime at the time of interest. Valid for IERS1996, IERS2003, IERS2010

Parameters
Tcoordinate transformation time.
Returns
F in radians.

Definition at line 860 of file EarthOrientation.cpp.

◆ FukushimaWilliams() [1/2]

Matrix< double > gnsstk::EarthOrientation::FukushimaWilliams ( double  gamb,
double  phib,
double  psib,
double  epsa 
)
staticprivate

For IERS 2010, generate any of B = frame bias matrix PB = Precession*Bias matrix NPB = Nutation*Precession*Bias matrix given the four F-W angles with caviats, as follows. Get B by passing the full F-W angles at J2000. Get PB by passing the full F-W angles at time time of interest. Get NPB by passing the full F-W angles at time time of interest with nutation angle corrections (nutationAngles2010()). Specifically, FukushimaWilliams(T, gamb, phib, psib, eps); nutationAngles2010(T, deps, dpsi); NPB = FukushimaWilliams(gamb, phib, psib+dpsi, eps+deps); Thus the precession matrix is computed as PB * transpose(B), and the nutation matrix is computed as N = NPB * transpose(PB).

Parameters
gambF-W angle
phibF-W angle
psibF-W angle
epsaF-W angle, the obliquity
Returns
3x3 rotation matrix B, PB or NPB

Definition at line 2355 of file EarthOrientation.cpp.

◆ FukushimaWilliams() [2/2]

void gnsstk::EarthOrientation::FukushimaWilliams ( double  T,
double &  gamb,
double &  phib,
double &  psib,
double &  eps 
)
staticprivate

Compute Fukushima-Williams angles for computing nutation, frame bias and precession matrices in IERS2010; cf. FukushimaWilliams(). NB. fourth angle is obliquity.

Definition at line 2305 of file EarthOrientation.cpp.

◆ GAST()

double gnsstk::EarthOrientation::GAST ( const EphTime t,
bool  reduced = false 
)

Compute Greenwich Apparent Sidereal Time, or the Greenwich hour angle of the true vernal equinox (radians), given the coordinate time of interest, and this object's UT1-UTC (sec), which comes from the IERS bulletin.

Parameters
tepoch of the rotation.
reducedtrue when UT1mUTC is 'reduced', meaning assumes 'no tides', as is the case with the NGA EOPs (default=F).
Returns
GAST in radians
Exceptions
Exceptionif the TimeSystem conversion fails (if TimeSystem is Unknown)
Exceptionif convention is not defined

Definition at line 1078 of file EarthOrientation.cpp.

◆ gast1996()

double gnsstk::EarthOrientation::gast1996 ( EphTime  t,
double  om,
double  eps,
double  dpsi,
double  UT1mUTC 
)
staticprivate

Helper to compute the Greenwich hour angle of the true vernal equinox, or Greenwich Apparent Sidereal Time, in radians, for IERS1996, given the (UT) time of interest t, and, where T = coordTransTime(t), om = Omega(T) = mean longitude of lunar ascending node, in radians, ep = obliquity(T) = the obliquity of the ecliptic, in radians, dp = nutation in longitude (counted in the ecliptic), in seconds of arc.

GAST = Greenwich hour angle of the true vernal equinox = Greenwich apparent sidereal time = GMST + dpsi*cos(eps) + 0.00264"*sin(Omega) + 0.000063"*sin(2*Omega) (these terms account for the accumulated precession and nutation in right ascension and minimize any discontinuity in UT1)

GMST = Greenwich hour angle of the mean vernal equinox = Greenwich mean sidereal time = GMST0 + r*[UTC + (UT1-UTC)] r = is the ratio of universal to sidereal time = 1.002737909350795 + 5.9006E-11*T' - 5.9e-15*T'^2 T' = days'/36525 days'= number of days elapsed since t0 = +/-(integer+0.5) and (UT1-UTC) (seconds) is taken from the IERS bulletin

GMST0 = GMST at 0h UT1 = 6h 41m (50.54841+8640184.812866*T'+0.093104*T'^2-6.2E-6*T'^3)s

Parameters
tEphTime time of interest.
omOmega(T), mean longitude of lunar ascending node, in radians,
epsobliquity(T), the obliquity of the ecliptic, in radians,
dpsinutation in longitude (counted in the ecliptic), in seconds of arc
UT1mUTCUT1-UTC in seconds, as found in the IERS bulletin.
Returns
gast in radians
Exceptions
Exception

Definition at line 2089 of file EarthOrientation.cpp.

◆ GAST1996()

double gnsstk::EarthOrientation::GAST1996 ( EphTime  t,
double  UT1mUTC,
bool  reduced = false 
)
staticprivate

Compute Greenwich Apparent Sidereal Time, or the Greenwich hour angle of the true vernal equinox (radians), given the coordinate time of interest, and UT1-UTC (sec), which comes from the IERS bulletin.

Parameters
tEphTime epoch of the rotation.
UT1mUTCUT1-UTC in seconds, as found in the IERS bulletin.
Returns
GAST in radians
Exceptions
Exceptionif the TimeSystem conversion fails (if TimeSystem is Unknown)

Definition at line 2142 of file EarthOrientation.cpp.

◆ GAST2003()

double gnsstk::EarthOrientation::GAST2003 ( EphTime  t,
double  UT1mUTC 
)
staticprivate

Compute Greenwich Apparent Sidereal Time, or the Greenwich hour angle of the true vernal equinox (radians), given the coordinate time of interest, and UT1-UTC (sec), which comes from the IERS bulletin.

Parameters
tEphTime epoch of the rotation.
UT1mUTCUT1-UTC in seconds, as found in the IERS bulletin.
Returns
GAST in radians
Exceptions
Exceptionif the TimeSystem conversion fails (if TimeSystem is Unknown)

Definition at line 2178 of file EarthOrientation.cpp.

◆ GAST2010()

double gnsstk::EarthOrientation::GAST2010 ( EphTime  t,
double  UT1mUTC 
)
staticprivate

Compute Greenwich Apparent Sidereal Time, or the Greenwich hour angle of the true vernal equinox (radians), given the coordinate time of interest, and UT1-UTC (sec), which comes from the IERS bulletin.

Parameters
tEphTime epoch of the rotation
UT1mUTCUT1-UTC in seconds, as found in the IERS bulletin
Returns
GAST in radians
Exceptions
Exceptionif the TimeSystem conversion fails (if TimeSystem is Unknown)

Definition at line 2218 of file EarthOrientation.cpp.

◆ GMST()

double gnsstk::EarthOrientation::GMST ( const EphTime t,
bool  reduced = false 
)

Compute Greenwich Mean Sidereal Time, or the Greenwich hour angle of the mean vernal equinox (radians), given the coordinate time of interest, using this->UT1mUTC (sec), which comes from the IERS bulletin.

Parameters
tepoch of the rotation.
reducedtrue when UT1mUTC is 'reduced', meaning assumes 'no tides', as is the case with the NGA EOPs (default=F).
Returns
GMST in radians
Exceptions
Exceptionif the TimeSystem conversion fails (if TimeSystem is Unknown)
Exceptionif convention is not defined

Definition at line 1042 of file EarthOrientation.cpp.

◆ GMST1996()

double gnsstk::EarthOrientation::GMST1996 ( EphTime  t,
double  UT1mUTC,
bool  reduced = false 
)
staticprivate

Compute Greenwich Mean Sidereal Time, or the Greenwich hour angle of the mean vernal equinox (radians), given the coordinate time of interest, and UT1-UTC (sec), which comes from the IERS bulletin. For IERS1996,03

Parameters
tEphTime epoch of the rotation.
UT1mUTCUT1-UTC in seconds, as found in the IERS bulletin.
reducedtrue when UT1mUTC is 'reduced', meaning assumes 'no tides', as is the case with the NGA EOPs (default=F).
Returns
GMST in radians
Exceptions
Exceptionif the TimeSystem conversion fails (if TimeSystem is Unknown)

Definition at line 1960 of file EarthOrientation.cpp.

◆ GMST2003()

double gnsstk::EarthOrientation::GMST2003 ( EphTime  t,
double  UT1mUTC 
)
staticprivate

Compute Greenwich Mean Sidereal Time, or the Greenwich hour angle of the mean vernal equinox (radians), given the coordinate time of interest, and UT1-UTC (sec), which comes from the IERS bulletin. For IERS2003

Parameters
tEphTime epoch of the rotation.
UT1mUTCUT1-UTC in seconds, as found in the IERS bulletin.
Returns
GMST in radians
Exceptions
Exceptionif the TimeSystem conversion fails (if TimeSystem is Unknown)

Definition at line 2025 of file EarthOrientation.cpp.

◆ GMST2010()

double gnsstk::EarthOrientation::GMST2010 ( EphTime  t,
double  UT1mUTC 
)
staticprivate

Compute Greenwich Mean Sidereal Time, or the Greenwich hour angle of the mean vernal equinox (radians), given the coordinate time of interest, and UT1-UTC (sec), which comes from the IERS bulletin. For IERS2010

Parameters
tEphTime epoch of the rotation.
UT1mUTCUT1-UTC in seconds, as found in the IERS bulletin.
Returns
GMST in radians
Exceptions
Exceptionif the TimeSystem conversion fails (if TimeSystem is Unknown)

Definition at line 2054 of file EarthOrientation.cpp.

◆ interpolateEOP()

void gnsstk::EarthOrientation::interpolateEOP ( const EphTime ttag,
const std::vector< double > &  time,
const std::vector< double > &  X,
const std::vector< double > &  Y,
std::vector< double > &  dT,
const IERSConvention conv 
)

Given parallel arrays of length four containing the values from EOPStore for time (int MJD) and EOPs xp, yp, and UT1mUTC, where the time of interest ttag lies within the values of the time array, interpolate and apply corrections to determine the EOPs at ttag, using the algorithm prescribed by the given IERS convention.

Parameters
ttagEphTime at which to compute EOPs
timevector of length 4 of consecutive MJDs from EOPStore; ttag must lie within this timespan.
Xvector of length 4 of consecutive xp from EOPStore.
Yvector of length 4 of consecutive yp from EOPStore.
dTvector of length 4 of consecutive UT1mUTC from EOPStore.
convthe IERSConvention to be used.
Exceptions
InvalidRequest

Definition at line 158 of file EarthOrientation.cpp.

◆ L()

double gnsstk::EarthOrientation::L ( double  T)
static

mean anomaly of the moon, in radians, given T, the coordTransTime at the time of interest. Valid for IERS1996, IERS2003, IERS2010

Parameters
Tcoordinate transformation time.
Returns
L in radians.

Definition at line 888 of file EarthOrientation.cpp.

◆ LE()

double gnsstk::EarthOrientation::LE ( double  T)
static

mean longitude of Earth, in radians, given T, the coordTransTime at the time of interest. Valid for IERS2003, IERS2010

Parameters
Tcoordinate transformation time.
Returns
LE in radians.

Definition at line 937 of file EarthOrientation.cpp.

◆ LJ()

double gnsstk::EarthOrientation::LJ ( double  T)
static

mean longitude of Jupiter, in radians, given T, the coordTransTime at the time of interest. Valid for IERS2003, IERS2010

Parameters
Tcoordinate transformation time.
Returns
LE in radians.

Definition at line 958 of file EarthOrientation.cpp.

◆ LMa()

double gnsstk::EarthOrientation::LMa ( double  T)
static

mean longitude of Mars, in radians, given T, the coordTransTime at the time of interest. Valid for IERS2003, IERS2010

Parameters
Tcoordinate transformation time.
Returns
LE in radians.

Definition at line 947 of file EarthOrientation.cpp.

◆ LMe()

double gnsstk::EarthOrientation::LMe ( double  T)
static

mean longitude of Mercury, in radians, given T, the coordTransTime at the time of interest. Valid for IERS2003, IERS2010

Parameters
Tcoordinate transformation time.
Returns
LMe in radians.

Definition at line 917 of file EarthOrientation.cpp.

◆ LN()

double gnsstk::EarthOrientation::LN ( double  T)
static

mean longitude of Neptune, in radians, given T, the coordTransTime at the time of interest. Valid for IERS2003, IERS2010

Parameters
Tcoordinate transformation time.
Returns
LE in radians.

Definition at line 991 of file EarthOrientation.cpp.

◆ Lp()

double gnsstk::EarthOrientation::Lp ( double  T)
static

mean anomaly of the sun, in radians, given T, the coordTransTime at the time of interest. Valid for IERS1996, IERS2003, IERS2010

Parameters
Tcoordinate transformation time.
Returns
Lp in radians.

Definition at line 901 of file EarthOrientation.cpp.

◆ LS()

double gnsstk::EarthOrientation::LS ( double  T)
static

mean longitude of Saturn, in radians, given T, the coordTransTime at the time of interest. Valid for IERS2003, IERS2010

Parameters
Tcoordinate transformation time.
Returns
LE in radians.

Definition at line 969 of file EarthOrientation.cpp.

◆ LU()

double gnsstk::EarthOrientation::LU ( double  T)
static

mean longitude of Uranus, in radians, given T, the coordTransTime at the time of interest. Valid for IERS2003, IERS2010

Parameters
Tcoordinate transformation time.
Returns
LE in radians.

Definition at line 980 of file EarthOrientation.cpp.

◆ LV()

double gnsstk::EarthOrientation::LV ( double  T)
static

mean longitude of Venus, in radians, given T, the coordTransTime at the time of interest. Valid for IERS2003, IERS2010

Parameters
Tcoordinate transformation time.
Returns
LV in radians.

Definition at line 927 of file EarthOrientation.cpp.

◆ nutationAngles1996()

void gnsstk::EarthOrientation::nutationAngles1996 ( double  T,
double &  deps,
double &  dpsi,
double &  om 
)
staticprivate

Nutation of the obliquity (deps) and of the longitude (dpsi), IERS 1996 model (ref pg 26), given

Parameters
Tthe coordinate transformation time at the time of interest
depsnutation of the obliquity (output) in radians
dpsinutation of the longitude (output) in radians
omlongitude mean ascending node of lunar orbit, from mean equinox

Definition at line 2372 of file EarthOrientation.cpp.

◆ nutationAngles2003()

void gnsstk::EarthOrientation::nutationAngles2003 ( double  T,
double &  deps,
double &  dpsi 
)
staticprivate

Nutation of the obliquity (deps) and of the longitude (dpsi), IERS 2003

Parameters
Tthe coordinate transformation time at the time of interest
depsnutation of the obliquity (output) in radians
dpsinutation of the longitude (output) in radians

Definition at line 2447 of file EarthOrientation.cpp.

◆ nutationAngles2010()

void gnsstk::EarthOrientation::nutationAngles2010 ( double  T,
double &  deps,
double &  dpsi 
)
staticprivate

Nutation of the obliquity (deps) and of the longitude (dpsi), IERS 2010

Parameters
Tthe coordinate transformation time at the time of interest
depsnutation of the obliquity (output) in radians
dpsinutation of the longitude (output) in radians

Definition at line 2572 of file EarthOrientation.cpp.

◆ nutationMatrix() [1/2]

Matrix< double > gnsstk::EarthOrientation::nutationMatrix ( const EphTime t)

Generate an Earth Nutation Matrix (3X3 rotation) at the given EphTime.

Parameters
tEphTime epoch of the rotation.
Returns
nutation matrix Matrix<double>(3,3)
Exceptions
Exceptionif convention is not defined

Definition at line 1184 of file EarthOrientation.cpp.

◆ nutationMatrix() [2/2]

Matrix< double > gnsstk::EarthOrientation::nutationMatrix ( double  eps,
double  dpsi,
double  deps 
)
staticprivate

nutation matrix, a 3x3 rotation matrix, given

Parameters
epsobliquity(T), the obliquity of the ecliptic, in radians,
dpsithe nutation in longitude (counted in the ecliptic) in radians.
depsthe nutation in obliquity, in radians.
Returns
nutation matrix Matrix<double>(3,3)

Definition at line 2586 of file EarthOrientation.cpp.

◆ nutationMatrix1996()

Matrix< double > gnsstk::EarthOrientation::nutationMatrix1996 ( double  T)
staticprivate

IERS1996 nutation matrix, a 3x3 rotation matrix, given

Parameters
Tthe coordinate transformation time at the time of interest
Returns
nutation matrix Matrix<double>(3,3)

Definition at line 2599 of file EarthOrientation.cpp.

◆ nutationMatrix2003()

Matrix< double > gnsstk::EarthOrientation::nutationMatrix2003 ( double  T)
staticprivate

IERS2003 nutation matrix, a 3x3 rotation matrix (including the frame bias matrix), given

Parameters
Tthe coordinate transformation time at the time of interest
Returns
nutation matrix Matrix<double>(3,3)

Definition at line 2612 of file EarthOrientation.cpp.

◆ nutationMatrix2010()

Matrix< double > gnsstk::EarthOrientation::nutationMatrix2010 ( double  T)
staticprivate

IERS2010 nutation matrix, a 3x3 rotation matrix, given

Parameters
Tthe coordinate transformation time at the time of interest; cf. FukushimaWilliams().
Returns
nutation matrix Matrix<double>(3,3)

Definition at line 2630 of file EarthOrientation.cpp.

◆ obliquity()

double gnsstk::EarthOrientation::obliquity ( double  T)

obliquity of the ecliptic, in radians, given T, the coordTransTime at the time of interest. Valid for IERS1996 IERS2003 IERS2010

Parameters
Tcoordinate transformation time.
Returns
eps in radians.
Exceptions
Exceptionif convention is not defined

Definition at line 1013 of file EarthOrientation.cpp.

◆ obliquity1996()

double gnsstk::EarthOrientation::obliquity1996 ( double  T)
staticprivate

obliquity of the ecliptic, in radians, given T, the coordTransTime at the time of interest, for IERS1996 (also 03)

Parameters
Tcoordinate transformation time.
Returns
eps in radians.

Definition at line 1923 of file EarthOrientation.cpp.

◆ obliquity2010()

double gnsstk::EarthOrientation::obliquity2010 ( double  T)
staticprivate

obliquity of the ecliptic, in radians, given T, the coordTransTime at the time of interest, for IERS2010

Parameters
Tcoordinate transformation time.
Returns
eps in radians.

Definition at line 1938 of file EarthOrientation.cpp.

◆ Omega()

double gnsstk::EarthOrientation::Omega ( double  T)
static

mean longitude of lunar ascending node, in radians, given T, the coordTransTime at the time of interest. Valid for IERS1996, IERS2003, IERS2010

Parameters
Tcoordinate transformation time.
Returns
Omega in radians.

Definition at line 832 of file EarthOrientation.cpp.

◆ Omega2003()

double gnsstk::EarthOrientation::Omega2003 ( double  T)
static

mean longitude of lunar ascending node, in radians, given T, the coordTransTime at the Epoch of interest. valid for IERS 2003, 2010

Parameters
Tcoordinate transformation time.
Returns
Omega in radians.

Definition at line 846 of file EarthOrientation.cpp.

◆ Pa()

double gnsstk::EarthOrientation::Pa ( double  T)
static

general precession in longitude, in radians, given T, the coordTransTime at the time of interest. Valid for IERS2003, IERS2010

Parameters
Tcoordinate transformation time.
Returns
Pa in radians.

Definition at line 1003 of file EarthOrientation.cpp.

◆ polarMotionMatrix()

Matrix< double > gnsstk::EarthOrientation::polarMotionMatrix ( const EphTime t)

Generate transformation matrix (3X3 rotation) due to this object's EOPs polar motion angles xp and yp (arcseconds), as found in the IERS bulletin;

Parameters
tEphTime epoch of the rotation.
Exceptions
Exceptionif convention is not defined

Definition at line 1111 of file EarthOrientation.cpp.

◆ polarMotionMatrix1996()

Matrix< double > gnsstk::EarthOrientation::polarMotionMatrix1996 ( double  xp,
double  yp 
)
staticprivate

Generate transformation matrix (3X3 rotation) due to the polar motion angles xp and yp (arcseconds), as found in the IERS bulletin;

Parameters
xpEarth wobble in arcseconds, as found in the IERS bulletin.
ypEarth wobble in arcseconds, as found in the IERS bulletin.
Returns
Matrix<double>(3,3) rotation matrix

Definition at line 2266 of file EarthOrientation.cpp.

◆ polarMotionMatrix2003()

Matrix< double > gnsstk::EarthOrientation::polarMotionMatrix2003 ( EphTime  t,
double  xp,
double  yp 
)
staticprivate

Generate transformation matrix (3X3 rotation) due to the polar motion angles xp and yp (arcseconds), as found in the IERS bulletin; The returned matrix R transforms the CIP into TRS: V(TRS) = R * V(CIP). see sofa pom00. Also valid for IERS2010.

Parameters
tEphTime epoch of the rotation.
xpEarth wobble in arcseconds, as found in the IERS bulletin.
ypEarth wobble in arcseconds, as found in the IERS bulletin.
Returns
Matrix<double>(3,3) rotation matrix CIP -> TRS

Definition at line 2286 of file EarthOrientation.cpp.

◆ precessionMatrix()

Matrix< double > gnsstk::EarthOrientation::precessionMatrix ( const EphTime t)

Generate an Earth Precession Matrix (3X3 rotation) at the given EphTime.

Parameters
tEphTime epoch of the rotation.
Returns
precession matrix Matrix<double>(3,3)
Exceptions
Exceptionif convention is not defined

Definition at line 1136 of file EarthOrientation.cpp.

◆ precessionMatrix1996()

Matrix< double > gnsstk::EarthOrientation::precessionMatrix1996 ( double  T)
staticprivate

IERS1996 precession matrix, a 3x3 rotation matrix, given

Parameters
Tthe coordinate transformation time at the time of interest
Returns
precession matrix Matrix<double>(3,3)

Definition at line 2659 of file EarthOrientation.cpp.

◆ precessionMatrix2003()

Matrix< double > gnsstk::EarthOrientation::precessionMatrix2003 ( double  T)
staticprivate

IERS2003 precession matrix, a 3x3 rotation matrix (including the frame bias matrix), given

Parameters
Tthe coordinate transformation time at the time of interest
Returns
precession matrix Matrix<double>(3,3)

Definition at line 2681 of file EarthOrientation.cpp.

◆ precessionMatrix2010()

Matrix< double > gnsstk::EarthOrientation::precessionMatrix2010 ( double  T)
staticprivate

IERS2010 precession matrix, a 3x3 rotation matrix, given

Parameters
Tthe coordinate transformation time at the time of interest Does not include the frame bias matrix; cf. FukushimaWilliams().
Returns
precession matrix Matrix<double>(3,3)

Definition at line 2779 of file EarthOrientation.cpp.

◆ precessionRateCorrections2003()

void gnsstk::EarthOrientation::precessionRateCorrections2003 ( double  T,
double &  dpsi,
double &  deps 
)
staticprivate

IERS2003 precession and obliquity rate corrections, IAU 2000

Parameters
Tthe coordinate transformation time at the time of interest
Returns
precession, obliquity corrections in radians

Definition at line 2752 of file EarthOrientation.cpp.

◆ preciseEarthRotation()

Matrix< double > gnsstk::EarthOrientation::preciseEarthRotation ( const EphTime t)

Generate precise transformation matrix (3X3 rotation) for Earth motion due to precession, nutation and frame bias, at the given time of interest.

Parameters
tEphTime epoch of the rotation.
Returns
3x3 rotation matrix
Exceptions
Exceptionif the TimeSystem conversion fails (if TimeSystem is Unknown)
Exceptionif convention is not defined

Definition at line 1220 of file EarthOrientation.cpp.

◆ preciseEarthRotation2003()

Matrix< double > gnsstk::EarthOrientation::preciseEarthRotation2003 ( double  T)
staticprivate

Generate precise transformation matrix (3X3 rotation) for Earth motion due to precession, nutation and frame bias, at the given time of interest. Valid only for 2010

Parameters
TcoordTransTime(EphTime t) for time of interest
Returns
3x3 rotation matrix
Exceptions
Exceptionif the TimeSystem conversion fails (if TimeSystem is Unknown)

Definition at line 2801 of file EarthOrientation.cpp.

◆ preciseEarthRotation2010()

Matrix< double > gnsstk::EarthOrientation::preciseEarthRotation2010 ( double  T)
staticprivate

Generate precise transformation matrix (3X3 rotation) for Earth motion due to precession, nutation and frame bias, at the given time of interest. Valid only for 2010

Parameters
TcoordTransTime(EphTime t) for time of interest
Returns
3x3 rotation matrix
Exceptions
Exceptionif the TimeSystem conversion fails (if TimeSystem is Unknown)

Definition at line 2826 of file EarthOrientation.cpp.

◆ S()

double gnsstk::EarthOrientation::S ( double  T,
double &  X,
double &  Y,
IERSConvention  which = IERSConvention::IERS2003 
)
staticprivate

locator s which gives the position of the CIO on the equator of the CIP, given the coordinate transformation time T and the coordinates X,Y of the CIP. Consistent with IAU 2000A (IERS2003) precession-nutation, and P03 precession (IERS2010). Derived in part from SOFA routine s00.c for IERS2003 and s06.c for IERS2010. Used for both IERS2003 and IERS2010, but not for IERS1996

Parameters
Tthe coordinate transformation time at the time of interest
Xthe X coordinate of the CIP (input)
Ythe Y coordinate of the CIP (input)
whichthe IERS convention to be used (input)
Returns
S, the parameter that positions the CIO on the CIP equator.

Definition at line 1327 of file EarthOrientation.cpp.

◆ Sprime() [1/2]

double gnsstk::EarthOrientation::Sprime ( double  T)
staticprivate

The position of the Terrestrial Ephemeris Origin (TEO) on the equator of the Celestial Intermediate Pole (CIP), as given by the quantity s'. Also called the Terrestrial Intermediate Origin (TIO). Ref. IERS Tech Note 32 Chap 5 Eqn 12

Parameters
TCoordinate transformation time T.
Returns
angle 's prime' in radians

Definition at line 1587 of file EarthOrientation.cpp.

◆ Sprime() [2/2]

static double gnsstk::EarthOrientation::Sprime ( EphTime  t)
inlinestaticprivate

Sprime with EphTime input; cf. Sprime(double T == coordTransTime(t))

Definition at line 471 of file EarthOrientation.hpp.

◆ UT1mUTCTidalCorrections()

void gnsstk::EarthOrientation::UT1mUTCTidalCorrections ( double  T,
double &  UT1mUTR,
double &  dlodR,
double &  domegaR 
)
staticprivate

Zonal tide terms for corrections of UT1mUTC when that quantity does not include tides (e.g. NGA EOP), ref. IERS 1996 Ch. 8, table 8.1 pg 74.

Parameters
Tthe coordinate transformation time at the time of interest
UT1mUTRthe correction to UT1mUTC (seconds)
dlodRthe correction to the length of day (seconds)
domegaRthe correction to the Earth rotation rate, rad/second.

Definition at line 1903 of file EarthOrientation.cpp.

◆ XYCIO()

void gnsstk::EarthOrientation::XYCIO ( double &  T,
double &  X,
double &  Y 
)
staticprivate

coordinates X,Y of the Celestial Intermediate Origin (CIO) using a series based on IAU 2006 precession and IAU 2000A nutation (IERS 2010). The coordinates form a unit vector that points towards the CIO; they include the effects of frame bias, precession and nutation. cf. sofa xy06

Parameters
Tthe coordinate transformation time at the time of interest
Xx coordinate of CIO
Yy coordinate of CIO

Definition at line 1601 of file EarthOrientation.cpp.

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  s,
const EarthOrientation  
)
friend

append to output stream

Member Data Documentation

◆ ARCSEC_PER_CIRCLE

const double gnsstk::EarthOrientation::ARCSEC_PER_CIRCLE = 1296000.0
static

how many arcseconds in 360 degrees?

Definition at line 143 of file EarthOrientation.hpp.

◆ ARCSEC_TO_RAD

const double gnsstk::EarthOrientation::ARCSEC_TO_RAD = 4.848136811095359935899141e-6
static

convert arc seconds to radians

Definition at line 140 of file EarthOrientation.hpp.

◆ convention

IERSConvention gnsstk::EarthOrientation::convention

IERS convention appropriate for this data.

Definition at line 106 of file EarthOrientation.hpp.

◆ DEG_TO_RAD

const double gnsstk::EarthOrientation::DEG_TO_RAD = 0.0174532925199432957692369
static

convert degrees to radians and back

Definition at line 137 of file EarthOrientation.hpp.

◆ HALFPI

const double gnsstk::EarthOrientation::HALFPI = (TWOPI / 4.)
static

Definition at line 134 of file EarthOrientation.hpp.

◆ intJulianEpoch

const int gnsstk::EarthOrientation::intJulianEpoch = 51544
static

integer MJD J2000 epoch for use in maximizing precision of coordTransTime()

Definition at line 131 of file EarthOrientation.hpp.

◆ JulianEpoch

const double gnsstk::EarthOrientation::JulianEpoch = 51544.5
static

Epoch for the coordinate transformation time, used throughout the formulas = J2000 = January 1 2000 12h UT but use MJD for this constant

Definition at line 125 of file EarthOrientation.hpp.

◆ PI

const double gnsstk::EarthOrientation::PI = (TWOPI / 2.)
static

pi, 2*pi and pi/2

Definition at line 134 of file EarthOrientation.hpp.

◆ RAD_TO_DEG

const double gnsstk::EarthOrientation::RAD_TO_DEG = 57.29577951308232087679815
static

Definition at line 137 of file EarthOrientation.hpp.

◆ TWOPI

const double gnsstk::EarthOrientation::TWOPI = 6.283185307179586476925287
static

Definition at line 134 of file EarthOrientation.hpp.

◆ UT1mUTC

double gnsstk::EarthOrientation::UT1mUTC

Time offset UT1 minus UTC, in seconds.

Definition at line 103 of file EarthOrientation.hpp.

◆ xp

double gnsstk::EarthOrientation::xp

Polar motion angle xp, in arcseconds.

Definition at line 97 of file EarthOrientation.hpp.

◆ yp

double gnsstk::EarthOrientation::yp

Polar motion angle yp, in arcseconds.

Definition at line 100 of file EarthOrientation.hpp.


The documentation for this class was generated from the following files:


gnsstk
Author(s):
autogenerated on Wed Oct 25 2023 02:40:44