Skip to content

Commit 7de608c

Browse files
Merge pull request #41 from jacobwilliams/develop
Develop
2 parents 652c33d + 7497d25 commit 7de608c

File tree

7 files changed

+640
-10
lines changed

7 files changed

+640
-10
lines changed

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Fortran Astrodynamics Toolkit
22
https://github.com/jacobwilliams/Fortran-Astrodynamics-Toolkit
33

4-
Copyright (c) 2014-2022, Jacob Williams
4+
Copyright (c) 2014-2025, Jacob Williams
55
All rights reserved.
66

77
Redistribution and use in source and binary forms, with or without modification,

src/celestial_body_module.f90

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,14 @@ module celestial_body_module
1515
!! A celestial body (Planet, moon, etc.)
1616
!! The `ID` from the [[base_class]] is the NAIF SPICE ID code for the body
1717
real(wp) :: mu = zero !! gravitational parameter \( \mu \) [\(km^3/s^2\)]
18+
!note: also should add radius, etc.
1819
end type celestial_body
1920

21+
type(celestial_body),parameter,public :: body_ssb = &
22+
celestial_body(0, 'SSB', 0.0_wp ) !! solar-system barycenter [note: don't have mu defined here yet]
23+
2024
!define some bodies:
2125
! MU values from: https://naif.jpl.nasa.gov/pub/naif/generic_kernels/pck/gm_de431.tpc
22-
2326
type(celestial_body),parameter,public :: body_sun = &
2427
celestial_body(10, 'Sun',1.3271244004193938E+11_wp )
2528
type(celestial_body),parameter,public :: body_mercury = &

src/fortran_astrodynamics_toolkit.f90

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ module fortran_astrodynamics_toolkit
3030
use kepler_module
3131
use kind_module
3232
use lambert_module
33+
use lighting_module
3334
use math_module
3435
use matrix_module
3536
use minpack_module

src/jpl_ephemeris_module.f90

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)