The Earth orientation can be described either as a 3×3 rotation matrix that transforms a Cartesian vector from the rotating terrestrial coordinate system to the inertial non-rotating celestial coordinate system or as parameters on which this matrix depends. For practical needs the rotation matrix and its time derivatives are sufficient to perform astronomical reduction for Earth's rotation. However, NERS also provides the parameters that describes the Earth's rotation on which the rotation matrix depends as well. These parameters are empirical corrections to a deterministic model. Since the Earth's rotation depends on motion of the hydrosphere and atmosphere, it cannot be described with a deterministic model with the accuracy comparable with accuracy of observations and should be continuously monitored using space geodesy observations. For historical reasons several alternative Earth orientation parameters were used. For instance. For instance the rate of change of the angular variable along the axis 3, i.e. the axial motion can be described as Euler angle 3, UT1 rate, or the length of day. NERS provides many alternative Earth orientation parameters. These parameters are not independent.
See example/ners_fortran_example_01.f and example/ners_c_example_01.c.
See example/ners_fortran_example_02.f and example/ners_c_example_02.c.
See example/ners_fortran_example_04.f and example/ners_c_example_04.c.
FORTRAN: NERS_INIT ( CONFIG_FILE, NERS, TIME_TAI_START, TIME_TAI_STOP, IUER )
C: cners_init ( char * config_file, struct ners_struct * ners,
double time_tai_beg, double time_tai_end, int * iuer )
Input parameters:
config_file ( CHARACTER*(*) ) -- name of the NERS configuration file
NERS__CONFIG defined in ners_local.i
specifies the default configuration file
ners ( NERS__TYPE ) -- NERS internal data structure
time_tai_start ( REAL*8 ) -- Start time of the time range
Units: seconds since 2000.01.01_00:00:00.0 TAI
Value -1.0D0 means the current moment.
time_tai_stop ( REAL*8 ) -- Stop time of the time range.
Units: seconds since 2000.01.01_00:00:00.0 TAI
Value -1.0D0 means the current moment.
Input/Output parameter:
iuer ( INTEGER*4 ) -- Error parameter.
On input: -1 -- to print the error message if
an error is detected;
otherwise, not to print the message:
On output: 0 -- normal completion
>0 -- error code during NERS
initialization
FORTRAN: NERS_GET_EOP ( NERS, TIME_TAI, CPAR, M_PAR, L_PAR, PARS, IUER )
C: cners_get_eop ( struct ners_struct * ners, double time_tai_obs, char * cpar,
int mpar, int * lpar, double eops[], int * iuer )
Input parameters:
ners ( NERS__TYPE ) -- NERS internal data structure
time_tai ( REAL*8 ) -- Time. Units: seconds since 2000.01.01_00:00:00.0 TAI
cpar ( CHARACTER*(*) ) -- Earth orientation parameter name:
mat -- 3x3 matrix of the transformation from the terrestrial
coordinate system to the celestial coordinate system
matr -- First time derivative of the 3x3 matrix of the
transformation from the terrestrial coordinate system
to the celestial coordinate system
matrr -- Second time derivative of the 3x3 matrix of the
transformation from the terrestrial coordinate system
to the celestial coordinate system
matall -- 3x3x3 array of the matrix of the transformation from
the terrestrial coordinate system to the celestial
coordinate system, its first and second time derivative.
[1:3,1:3,1] -- transformation matrix from the terrestrial
coordinate system to the celestial
coordinate system,
[1:3,1:3,2] -- first time derivative of the transformation
matrix above.
[1:3,1:3,3] -- second time derivative of the transformation
matrix above.
utcmtai -- Value of function UTC minus TAI. Units: s.
e1 -- Euler angle around axis one. Units: rad.
e2 -- Euler angle around axis two. Units: rad.
e3 -- Euler angle around axis three. Units: rad.
e1r -- First time derivative of Euler angle around axis one. Units: rad/s.
e2r -- First time derivative of Euler angle around axis two. Units: rad/s.
e3r -- First time derivative of Euler angle around axis three. Units: rad/s.
e1rr -- Second time derivative of Euler angle around axis one. Units: rad/s.
e2rr -- Second time derivative of Euler angle around axis two. Units: rad/s.
e3rr -- Second time derivative of Euler angle around axis three. Units: rad/s.
ut1mtai -- Angle UT1 minus TAI. Units: s.
ut1rat -- First time derivative of angle UT1 minus TAI. Units s/s.
ut1rr -- Second time derivative of angle UT1 minus TAI. Units s/s^2.
lod -- Length of day. Units: s.
lodr -- Rate of change of the length of day. Units: s/day.
xpol -- X pole coordinate. Unit: arcsec.
ypol -- Y pole coordinate. Unit: arcsec.
xpolr -- First time derivative of X pole coordinate. Unit: arcsec/day.
ypolr -- First time derivative of Y pole coordinate. Unit: arcsec/day.
xpolrr -- Second time derivative of X pole coordinate. Unit: arcsec/day**2.
ypolrr -- Second time derivative of Y pole coordinate. Unit: arcsec/day**2.
eop3 -- Array of three EOP parameters:
1: X pole coordinate. Unit: arcsec.
2: Y pole coordinate. Unit: arcsec.
3: UT1 minus TAI. Unit: s.
eop3r -- Array of six EOP parameters:
1: X pole coordinate. Unit: arcsec.
2: Y pole coordinate. Unit: arcsec.
3: UT1 minus TAI. Unit: s.
4: First time derivative of X pole coordinate. Unit: arcsec/day.
5: Second time derivative of Y pole coordinate. Unit: arcsec/day.
6: First time derivative of UT1 minus TAI coordinate. Unit: s/day.
dpsi -- Nutation angle in longitude. Units: rad
deps -- Nutation angle in obliquity. Units: rad
dpsir -- First time derivative of nutation angle in longitude. Units: rad/s.
depsr -- First time derivative of nutation angle in obliquity. Units: rad/s.
nut -- Array of two EOP parameters:
1: Nutation angle in longitude. Units: rad
2: Nutation angle in obliquity. Units: rad
nutr -- Array of four EOP parameters:
1: Nutation angle in longitude. Units: rad
2: Nutation angle in obliquity. Units: rad
3: First time derivative of nutation angle in longitude. Units: rad/s.
4: First time derivative of nutation angle in obliquity. Units: rad/s.
eops -- Array of eight EOP parameters:
1: X pole coordinate. Unit: arcsec.
2: Y pole coordinate. Unit: arcsec.
3: UT1 minus TAI. Unit: s.
4: First time derivative of X pole coordinate. Unit: arcsec/day.
5: Second time derivative of Y pole coordinate. Unit: arcsec/day.
6: First time derivative of UT1 minus TAI coordinate. Unit: s/day.
7: Nutation angle in longitude. Units: arcsec
8: Nutation angle in obliquity. Units: arcsec
h1 -- Contribution of empirical harmonic variations in the EOPs with respect to axis 1. Units: rad.
h2 -- Contribution of empirical harmonic variations in the EOPs with respect to axis 2. Units: rad.
h3 -- Contribution of empirical harmonic variations in the EOPs with respect to axis 3. Units: rad.
h1r -- First time derivative of the contribution of empirical harmonic variations in the EOPs with respect to axis 1. Units: rad/s.
h2r -- First time derivative of the contribution of empirical harmonic variations in the EOPs with respect to axis 2. Units: rad/s.
h3r -- First time derivative of the contribution of empirical harmonic variations in the EOPs with respect to axis 3. Units: rad/s.
h1rr -- Second time derivative of the contribution of empirical harmonic variations in the EOPs with respect to axis 1. Units: rad/s^2.
h2rr -- Second time derivative of the contribution of empirical harmonic variations in the EOPs with respect to axis 2. Units: rad/s^2.
h3rr -- Second time derivative of the contribution of empirical harmonic variations in the EOPs with respect to axis 3. Units: rad/s^2.
heo -- Array of three components of the contribution of empirical harmonic variations in the EOPs:
1: Contribution of empirical harmonic variations in the EOPs with respect to axis 1. Units: rad.
2: Contribution of empirical harmonic variations in the EOPs with respect to axis 2. Units: rad.
3: Contribution of empirical harmonic variations in the EOPs with respect to axis 3. Units: rad.
heor -- Array of three components of the first time derivative of the contribution of empirical harmonic variations in the EOPs:
1: First time derivative of the contribution of empirical harmonic variations in the EOPs with respect to axis 1. Units: rad/s.
2: First time derivative of the contribution of empirical harmonic variations in the EOPs with respect to axis 2. Units: rad/s.
3: First time derivative of the contribution of empirical harmonic variations in the EOPs with respect to axis 3. Units: rad/s.
heorr -- Array of three components of the first time derivative of the contribution of empirical harmonic variations in the EOPs:
1: Second time derivative of the contribution of empirical harmonic variations in the EOPs with respect to axis 1. Units: rad/s^2.
2: Second time derivative of the contribution of empirical harmonic variations in the EOPs with respect to axis 2. Units: rad/s^2.
3: Second time derivative of the contribution of empirical harmonic variations in the EOPs with respect to axis 3. Units: rad/s^2.
m_par ( INTEGER*4 ) -- Maximum number of the elements in the output array.
Output parameters:
l_par ( INTEGER*4 ) -- Actual number of the EOPs
pars ( REAL*8 ) -- Array of EOPs. Dimension: m_par.
Input/Output parameter:
iuer ( INTEGER*4 ) -- Error parameter.
On input: -1 -- to print the error message if
an error is detected;
otherwise, not to print the message:
On output: 0 -- normal completion
>0 -- error code during NERS
initialization
FORTRAN: NERS_QUIT ( CODE, NERS )
C: cners_quit ( int * quit_code, struct ners_struct * ners )
Input parameter:
code ( INTEGER*4 ) -- Level of re-initialization:
NERS__EXP -- release memory with coefficients of EOP expansion for
the interval of time specified in previous call of
routine ners_init.
NERS__FCS -- release memory with the NERS forecast message
NERS__ALL -- release memory for all internal data structures
Input/Output parameter:
ners ( NERS__TYPE ) -- NERS internal data structure
FORTRAN: NERS_INQ ( NERS, REQ, M_PAR, L_PAR, PARS, IUER )
C: cners_quit ( int * quit_code, struct ners_struct * ners )
Input parameter:
ners ( NERS__TYPE ) -- NERS internal data structure
req ( CHARACTER*(*) ) -- request type. Supported requests:
range -- request of the EOP range. Returns three values:
1: start time of EOP availability. Units: seconds since
2000.01.01_00:00:00.0 TAI.
2: stop time of the EOP or the EOP forecast availability.
Units: seconds since 2000.01.01_00:00:00.0 TAI.
3: stop time of the long-term EOP prediction
fcs_gen_time -- request of the EOP forecast message generation time.
Return one value:
1: time of the EOP forecast generation. Units: seconds since
2000.01.01_00:00:00.0 TAI.
m_par ( INTEGER*4 ) -- Maximum number of the elements in the output array.
Output parameters:
l_par ( INTEGER*4 ) -- Actual number of the EOPs
pars ( REAL*8 ) -- Array of EOPs. Dimension: m_par.
Input/Output parameter:
iuer ( INTEGER*4 ) -- Error parameter.
On input: -1 -- to print the error message if
an error is detected;
otherwise, not to print the message:
On output: 0 -- normal completion
>0 -- error code during NERS
FORTRAN: NERS_GET_SERIES ( NERS, TIME_TAI_START, TIME_TAI_STOP, TIME_STEP, CPAR,
DIM1, DIM2, NS, TIM, SER, IUER )
C: cners_get_series ( struct ners_struct * ners, double time_tai_beg, double time_tai_end,
double tim_step, char * cpar, int m_par, int m_ser, int * ns,
double tim[], double ser[], int * iuer )
Input parameters:
ners ( NERS__TYPE ) -- NERS internal data structure
time_tai_start ( REAL*8 ) -- Start time of EOP series. Units: seconds since 2000.01.01_00:00:00.0 TAI
time_tai_stop ( REAL*8 ) -- Stop time of EOP series. Units: seconds since 2000.01.01_00:00:00.0 TAI
time_step ( REAL*8 ) -- Time step of the EOP series. Units: seconds since 2000.01.01_00:00:00.0 TAI
cpar ( CHARACTER*(*) ) -- Earth orientation parameter name.
euler -- Euler angles of the Earth rotation
1: Euler angle around axis one. Units: rad.
2: Euler angle around axis two. Units: rad.
3: Euler angle around axis three. Units: rad.
euler_r -- First time derivative of Euler angles of the Earth rotation
1: First time derivative of Euler angle around axis one. Units: rad/s.
2: First time derivative of Euler angle around axis two. Units: rad/s.
3: First time derivative of Euler angle around axis three. Units: rad/s.
polu -- Array of three EOP parameters:
1: X pole coordinate. Unit: arcsec.
2: Y pole coordinate. Unit: arcsec.
3: UT1 minus TAI. Unit: s.
polur -- Array of six EOP parameters:
1: X pole coordinate. Unit: arcsec.
2: Y pole coordinate. Unit: arcsec.
3: UT1 minus TAI. Unit: s.
4: First time derivative of X pole coordinate. Unit: arcsec/day.
5: Second time derivative of Y pole coordinate. Unit: arcsec/day.
6: First time derivative of UT1 minus TAI coordinate. Unit: s/day.
eops -- Array of eight EOP parameters:
1: X pole coordinate. Unit: arcsec.
2: Y pole coordinate. Unit: arcsec.
3: UT1 minus TAI. Unit: s.
4: First time derivative of X pole coordinate. Unit: arcsec/day.
5: Second time derivative of Y pole coordinate. Unit: arcsec/day.
6: First time derivative of UT1 minus TAI coordinate. Unit: s/day.
7: Nutation angle in longitude. Units: arcsec
8: Nutation angle in obliquity. Units: arcsec
heo -- Array of three components of the contribution of empirical harmonic variations in the EOPs:
1: Contribution of empirical harmonic variations in the EOPs with respect to axis 1. Units: rad.
2: Contribution of empirical harmonic variations in the EOPs with respect to axis 2. Units: rad.
3: Contribution of empirical harmonic variations in the EOPs with respect to axis 3. Units: rad.
heor -- Array of three components of the first time derivative of the contribution of empirical harmonic variations in the EOPs:
1: First time derivative of the contribution of empirical harmonic variations in the EOPs with respect to axis 1. Units: rad/s.
2: First time derivative of the contribution of empirical harmonic variations in the EOPs with respect to axis 2. Units: rad/s.
3: First time derivative of the contribution of empirical harmonic variations in the EOPs with respect to axis 3. Units: rad/s.
dim1 ( INTEGER*4 ) -- First dimension of the EOP series array. The dimension runs over time.
dim2 ( INTEGER*4 ) -- Second dimension of the EOP series array. The dimension runs over parameters.
Output parameters:
ns ( INTEGER*4 ) -- the number of returned EOP values
tim ( REAL*8 ) -- Array of EOP time epochs. Dimension: ns. Units: seconds since 2000.01.01_00:00:00.0 TAI
ser ( REAL*8 ) -- Two dimensional Array of EOPs. Dimensions: dim1,dim2. The number of
filled elements along the first dimension is ns. The number of
filled elements along the second dimension depends on value of
parameter cpar.
Input/Output parameter:
iuer ( INTEGER*4 ) -- Error parameter.
On input: -1 -- to print the error message if
an error is detected;
otherwise, not to print the message:
On output: 0 -- normal completion
>0 -- error code during NERS
FORTRAN: NERS_GET_UTCMTAI ( NERS, UTC, UTC_M_TAI, IUER )
C: cners_get_utcmtai ( struct ners_struct * ners, double * utc_obs,
double * utc, int * iuer )
Input parameters:
ners ( NERS__TYPE ) -- NERS internal data structure
utc ( REAL*8 ) -- UTC time tag. Units: seconds elapsed since 2000.01.01_00:00:00.0 UTC.
Output:
utc_m_tai ( REAL*8 ) -- UTC minus TAI function. Units: seconds.
Input/Output parameter:
iuer ( INTEGER*4 ) -- Error parameter.
On input: -1 -- to print the error message if
an error is detected;
otherwise, not to print the message:
On output: 0 -- normal completion
>0 -- error code during NERS
FORTRAN: NERS_AZELHA_COMP ( NERS, TIM_TAI, COO_TRS, RA, DEC,
REFR_MODE, AZ, EL, HA,
AZ_RATE, EL_RATE, HA_RATE, IUER )
C: cners_azelha_comp ( struct ners_struct * ners, double time_tai_beg, double coo_trs[],
double ra, double dec, char * refr, double * az, double * el,
double * ha, double * az_rate, double * el_rate, double * ha_rate,
int * iuer ) ;
Input parameters:
TIM_TAI ( REAL*8 ) -- Time for which the Earth orientation
parameter(s) is to be computed elapsed
since 2000.01.01_00:00:00.0 TAI. Unit:
sec. If TIM_TAI .LE. -1.0D14, then the
azimuth and elevation at the current
moment of time will be computed.
COO_TRS ( REAL*8 ) -- Vector of station coordinates in the
rotating crust-fixed coordinate system.
Units: m.
RA ( REAL*8 ) -- Source right ascension in the inertial
barycenter coordinate system. Units: rad.
DEC ( REAL*8 ) -- Source declination in the inertial
barycenter coordinate system. Units: rad.
REFR_MODE ( CHARACTER ) -- Refraction mode. Supported values:
none -- refractivity is not accounted.
optic -- formula Bennett for optic range
is used ( Bennett, G.G. (1982).
"The Calculation of Astronomical
Refraction in Marine Navigation".
Journal of Navigation, 35(2),
255-259.
radio -- 3.13D-4/tg(el) expression
suitable for radio waves is used.
both formulae have a floor of 3 deg, i.e.
refraction at elevations below 3 deg is
considered to be equal to refraction at
3 deg.
Output parameters:
AZ ( REAL*8 ) -- Azimuth in rad.
EL ( REAL*8 ) -- Elevation in rad.
HA ( REAL*8 ) -- Hour angle in rad.
AZ_RATE ( REAL*8 ) -- Time derivative of azimuth in rad/s.
EL_RATE ( REAL*8 ) -- Time derivative of elevation in rad/s.
HA_RATE ( REAL*8 ) -- Time derivative of hour angle in rad/s.
Input/Output parameter:
NERS ( NERS__TYPE ) -- The data structure that keeps internal
parameters related to the Network Earth
Rotation Service.
IUER ( INTEGER*4 ) -- Error parameter.
On input: -1 -- to print the error message if
an error is detected;
otherwise, not to print the message:
On output: 0 -- normal completion
>0 -- error code during NERS
FORTRAN: NERS_RADEC_COMP ( NERS, TIM_TAI, COO_TRS, AZ, EL, REFR_MODE,
RA, DEC, RA_RATE, DEC_RATE, IUER )
C: cners_radec_comp ( struct ners_struct * ners, double tim_tai,
double coo_trs[], double az, double el,
char * refr_mode, double * ra, double * dec,
double * ra_rate, double * dec_rate, int * iuer )
Input parameters:
TIM_TAI ( REAL*8 ) -- Time for which the Earth orientation
parameter(s) is to be computed elapsed
since 2000.01.01_00:00:00.0 TAI. Unit:
sec. If TIM_TAI .LE. -1.0D14, then the
right ascension and declination at the
current moment of time will be computed.
COO_TRS ( REAL*8 ) -- Vector of station coordinates in the
rotating crust-fixed coordinate system.
Units: m.
AZ ( REAL*8 ) -- Azimuth in rad.
EL ( REAL*8 ) -- Elevation in rad.
REFR_MODE ( CHARACTER ) -- Refraction mode. Supported values:
none -- refractivity is not accounted.
optic -- formula Bennett for optic range
is used ( Bennett, G.G. (1982).
"The Calculation of Astronomical
Refraction in Marine Navigation".
Journal of Navigation, 35(2),
255-259.
radio -- 3.13D-4/tg(el) expression
suitable for radio waves is used.
both formulae have a floor of 3 deg, i.e.
refraction at elevations below 3 deg is
considered to be equal to refraction at
3 deg.
Output parameters:
RA ( REAL*8 ) -- Source right ascension in the inertial
barycentric coordinate system. Units: rad.
DEC ( REAL*8 ) -- Source declination in the inertial
barycentric coordinate system. Units: rad.
RA_RATE ( REAL*8 ) -- Rate of change of right ascension in the
inertial barycentric coordinate system.
Units: rad/s.
DEC_RATE ( REAL*8 ) -- Rate of change of declination in the
inertial barycentric coordinate system.
Units: rad/s.
Input/Output parameter:
NERS ( NERS__TYPE ) -- The data structure that keeps internal
parameters related to the Network Earth
Rotation Service.
IUER ( INTEGER*4, OPT ) -- Universal error handler.
Input: switch IUER=0 -- no error messages
will be generated even in the case
of error. IUER=-1 -- in the case of
error the message will be put on
stdout.
Output: 0 in the case of successful
completion and non-zero in the
case of error.
Usage: ners_inq query
where query is one of
--version — Version of NERS library.
--prefix — Directlry where NERS is installed.
--include — Directory with NERS include files.
--libdir — Directory that contains NERS library.
--bindir — Directory that contains NERS binary executatble files.
--root — Root directroy with NERS distribution.
--share — Directory that contains NERS data.
--script — Directory that contains NERS python script.
--doc — Directory that contains NERS documentation.
--config — File name with default NERS configuration.
--standalone — string whether NERS was conifgured in standalone mode (YES or NO)