icrf_to_iau_moon Function

public pure function icrf_to_iau_moon(et) result(rotmat)

Rotation matrix from ICRF to IAU_MOON.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: et

ephemeris time [sec]

Return Value real(kind=wp), dimension(3,3)

the rotation matrix


Calls

proc~~icrf_to_iau_moon~~CallsGraph proc~icrf_to_iau_moon iau_orientation_module::icrf_to_iau_moon proc~iau_rotation_matrix iau_orientation_module::iau_rotation_matrix proc~icrf_to_iau_moon->proc~iau_rotation_matrix proc~rotation_matrix vector_module::rotation_matrix proc~iau_rotation_matrix->proc~rotation_matrix

Called by

proc~~icrf_to_iau_moon~~CalledByGraph proc~icrf_to_iau_moon iau_orientation_module::icrf_to_iau_moon proc~get_c_cdot_iau_moon transformation_module::iau_moon_rotating_frame%get_c_cdot_iau_moon proc~get_c_cdot_iau_moon->proc~icrf_to_iau_moon proc~iau_test iau_orientation_module::iau_test proc~iau_test->proc~icrf_to_iau_moon

Source Code

    pure function icrf_to_iau_moon(et) result(rotmat)

    implicit none

    real(wp),intent(in)     :: et        !! ephemeris time [sec]
    real(wp),dimension(3,3) :: rotmat    !! the rotation matrix

    real(wp) :: w,dec,ra,d,t
    real(wp) :: e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13

    d = et * sec2day     !interval in days from the J2000 epoch
    t = et * sec2century !interval in Julian centuries (36525 days) from the J2000 epoch

    ! Nutation/precession angles:
    e1  = ( 125.045_wp - 0.0529921_wp  * d ) * deg2rad
    e2  = ( 250.089_wp - 0.1059842_wp  * d ) * deg2rad
    e3  = ( 260.008_wp + 13.0120009_wp * d ) * deg2rad
    e4  = ( 176.625_wp + 13.3407154_wp * d ) * deg2rad
    e5  = ( 357.529_wp + 0.9856003_wp  * d ) * deg2rad
    e6  = ( 311.589_wp + 26.4057084_wp * d ) * deg2rad
    e7  = ( 134.963_wp + 13.0649930_wp * d ) * deg2rad
    e8  = ( 276.617_wp + 0.3287146_wp  * d ) * deg2rad
    e9  = ( 34.226_wp  + 1.7484877_wp  * d ) * deg2rad
    e10 = ( 15.134_wp  - 0.1589763_wp  * d ) * deg2rad
    e11 = ( 119.743_wp + 0.0036096_wp  * d ) * deg2rad
    e12 = ( 239.961_wp + 0.1643573_wp  * d ) * deg2rad
    e13 = ( 25.053_wp  + 12.9590088_wp * d ) * deg2rad

    ra  = ( 269.9949_wp + 0.0031_wp * t &
            - 3.8787_wp * sin(E1 ) &
            - 0.1204_wp * sin(E2 ) &
            + 0.0700_wp * sin(E3 ) &
            - 0.0172_wp * sin(E4 ) &
            + 0.0072_wp * sin(E6 ) &
            - 0.0052_wp * sin(E10) &
            + 0.0043_wp * sin(E13) ) * deg2rad

    dec = ( 66.5392_wp + 0.0130_wp * t &
            + 1.5419_wp * cos(E1 ) &
            + 0.0239_wp * cos(E2 ) &
            - 0.0278_wp * cos(E3 ) &
            + 0.0068_wp * cos(E4 ) &
            - 0.0029_wp * cos(E6 ) &
            + 0.0009_wp * cos(E7 ) &
            + 0.0008_wp * cos(E10) &
            - 0.0009_wp * cos(E13) ) * deg2rad

    w = ( 38.3213_wp + 13.17635815_wp * d - 1.4e-12_wp * d**2 &
          + 3.5610_wp * sin(E1 ) &
          + 0.1208_wp * sin(E2 ) &
          - 0.0642_wp * sin(E3 ) &
          + 0.0158_wp * sin(E4 ) &
          + 0.0252_wp * sin(E5 ) &
          - 0.0066_wp * sin(E6 ) &
          - 0.0047_wp * sin(E7 ) &
          - 0.0046_wp * sin(E8 ) &
          + 0.0028_wp * sin(E9 ) &
          + 0.0052_wp * sin(E10) &
          + 0.0040_wp * sin(E11) &
          + 0.0019_wp * sin(E12) &
          - 0.0044_wp * sin(E13) ) * deg2rad

    rotmat = iau_rotation_matrix(w,dec,ra)

    end function icrf_to_iau_moon