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.