@@ -982,18 +982,23 @@ end subroutine get_constants
982982 subroutine ephemeris_test ()
983983
984984 use time_module, only: jd_to_et
985- use celestial_body_module
985+ use celestial_body_module, fat_wp = > wp
986986
987987 implicit none
988988
989+ ! note: the low-level functions use real64 variables.
989990 character (len= 6 ),dimension (nmax) :: nams
990- real (wp) :: jd, et
991- real (wp),dimension (6 ) :: rv,rv1,rv2,diffrv
992- real (wp),dimension (3 ) :: ss, r
991+ real (wp),dimension (6 ) :: diffrv
992+ real (wp),dimension (3 ) :: ss
993993 real (wp),dimension (nmax) :: vals
994994 integer :: nvs,ntarg,nctr,i,j
995995 type (jpl_ephemeris) :: eph405, eph421
996996 logical :: status_ok_405,status_ok_421
997+ real (wp) :: jd_64, rv_64(6 ), rv1_64(6 ), rv2_64(6 )
998+ real (fat_wp) :: et
999+ real (fat_wp),dimension (3 ) :: r
1000+ real (fat_wp),dimension (6 ) :: rv,rv1,rv2
1001+ real (fat_wp) :: jd
9971002
9981003 character (len=* ),parameter :: ephemeris_file_405 = ' ./eph/JPLEPH.405' ! ! JPL DE405 ephemeris file
9991004 character (len=* ),parameter :: ephemeris_file_421 = ' ./eph/JPLEPH.421' ! ! JPL DE421 ephemeris file
@@ -1021,7 +1026,7 @@ subroutine ephemeris_test()
10211026 write (* ,' (A,1X,D25.16)' ) nams(i), vals(i)
10221027 end do
10231028
1024- jd = 2451536.5d0 ! julian date
1029+ jd = 2451536.5_wp ! julian date
10251030 et = jd_to_et(jd) ! ephemeris time
10261031
10271032 if (jd < ss(1 ) .or. jd > ss(2 )) then
@@ -1051,7 +1056,9 @@ subroutine ephemeris_test()
10511056 ' " wrt "' // trim (list_of_bodies(nctr))// ' "'
10521057
10531058 do i= 1 ,10
1054- call eph405% get_state( jd, ntarg, nctr, rv, status_ok_405)
1059+ jd_64 = jd
1060+ call eph405% get_state( jd_64, ntarg, nctr, rv_64, status_ok_405)
1061+ rv = rv_64
10551062 write (* ,' (F15.2,1X,*(E25.16,1X))' ) jd, norm2(rv(1 :3 )), rv
10561063 jd = jd + 10.0_wp
10571064 end do
@@ -1082,8 +1089,12 @@ subroutine ephemeris_test()
10821089 ' " wrt "' // trim (list_of_bodies(nctr))// ' "'
10831090
10841091 do i= 1 ,10
1085- call eph405% get_state( jd, ntarg, nctr, rv1, status_ok_405)
1086- call eph421% get_state( jd, ntarg, nctr, rv2, status_ok_421)
1092+ jd_64 = jd
1093+ call eph405% get_state( jd_64, ntarg, nctr, rv1_64, status_ok_405)
1094+ rv1 = rv1_64
1095+ jd_64 = jd
1096+ call eph421% get_state( jd_64, ntarg, nctr, rv2_64, status_ok_421)
1097+ rv2 = rv2_64
10871098 diffrv = rv2 - rv1
10881099 write (* ,' (F15.2,1X,*(E25.16,1X))' ) jd, norm2(diffrv(1 :3 )), norm2(diffrv(4 :6 ))
10891100 jd = jd + 10.0_wp
0 commit comments