Skip to content

Commit 2b46411

Browse files
ephemeris and planetary tests
1 parent fdff2d0 commit 2b46411

File tree

4 files changed

+130
-4
lines changed

4 files changed

+130
-4
lines changed

src/Definitions/planetary.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ function _bcrtod(seconds, val)
102102
end
103103

104104
function _∂bcrtod(seconds, val)
105-
T = seconds / CENTURY2SEC
105+
T = seconds / Tempo.CENTURY2SEC
106106
α, δ, w = body_rotational_elements(T, val)
107107
dα, dδ, dw = ∂body_rotational_elements(T, val)
108108

@@ -112,7 +112,7 @@ function _∂bcrtod(seconds, val)
112112
end
113113

114114
function _∂²bcrtod(seconds, val)
115-
T = seconds / CENTURY2SEC
115+
T = seconds / Tempo.CENTURY2SEC
116116
α, δ, w = body_rotational_elements(T, val)
117117
dα, dδ, dw = ∂body_rotational_elements(T, val)
118118
d²α, d²δ, d²w = ∂²body_rotational_elements(T, val)
@@ -124,7 +124,7 @@ function _∂²bcrtod(seconds, val)
124124
end
125125

126126
function _∂³bcrtod(seconds, val)
127-
T = seconds / CENTURY2SEC
127+
T = seconds / Tempo.CENTURY2SEC
128128
α, δ, w = body_rotational_elements(T, val)
129129
dα, dδ, dw = ∂body_rotational_elements(T, val)
130130
d²α, d²δ, d²w = ∂²body_rotational_elements(T, val)

src/FrameTransformations.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ using SMDGraphs: MappedNodeGraph, SimpleGraph, MappedGraph,
1919

2020
import SMDGraphs: get_node_id
2121

22-
using Tempo: AbstractTimeScale, Epoch, j2000s, BarycentricDynamicalTime, ftype
22+
using Tempo: AbstractTimeScale, Epoch, j2000s, BarycentricDynamicalTime, ftype, CENTURY2SEC
2323

2424
using JSMDInterfaces.Ephemeris: AbstractEphemerisProvider,
2525
ephem_position_records, ephem_available_points,

test/Definitions/ephemeris.jl

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
using FrameTransformations
2+
using StaticArrays
3+
using LinearAlgebra
4+
using SPICE
5+
using RemoteFiles
6+
using Test
7+
8+
using Tempo
9+
using JSMDInterfaces.Ephemeris
10+
11+
using Ephemerides
12+
13+
@RemoteFileSet KERNELS "Spice Kernels Set" begin
14+
LEAP = @RemoteFile "https://naif.jpl.nasa.gov/pub/naif/generic_kernels/lsk/latest_leapseconds.tls" dir = joinpath(
15+
@__DIR__, "..", "assets"
16+
)
17+
DE432 = @RemoteFile "https://naif.jpl.nasa.gov/pub/naif/generic_kernels/spk/planets/de432s.bsp" dir = joinpath(
18+
@__DIR__, "..", "assets"
19+
)
20+
end;
21+
22+
download(KERNELS; verbose=true, force=false)
23+
24+
@testset "Interface" verbose = false begin
25+
frames = FrameSystem{2,Float64}()
26+
add_axes_icrf!(frames)
27+
28+
@test_throws Exception add_point_ephemeris!(frames, eph, :Sun, 10)
29+
@test_throws Exception add_axes_ephemeris!(frames, eph, :Sun, 10, :XYZ, 1)
30+
31+
eph = EphemerisProvider(path(KERNELS[:DE432]))
32+
33+
add_point!(frames, :SolarSystemBarycenter, 0, 1)
34+
35+
add_point_ephemeris!(frames, eph, :Sun, 10)
36+
add_point_ephemeris!(frames, eph, :EarthB, 3)
37+
add_point_ephemeris!(frames, eph, :Earth, 399)
38+
39+
frames2 = FrameSystem{2,Float64}()
40+
add_axes_icrf!(frames2)
41+
42+
book = Dict(
43+
0 => :SolarSystemBarycenter, 10 => :Sun, 3 => :EarthB, 399 => :Earth
44+
)
45+
@test_nowarn add_point_ephemeris!(frames2, eph, book)
46+
@test points_alias(frames) == points_alias(frames2)
47+
@test_throws Exception FrameTransformations.check_point_ephemeris(frames, eph, -1)
48+
49+
frames = FrameSystem{2,Float64}()
50+
add_axes_icrf!(frames)
51+
@test_throws Exception FrameTransformations.check_point_ephemeris(frames, eph, 10)
52+
53+
frames = FrameSystem{2,Float64}()
54+
@test_throws Exception FrameTransformations.check_point_ephemeris(frames, eph, 0)
55+
56+
frames = FrameSystem{2,Float64}()
57+
@test_throws Exception FrameTransformations.check_axes_ephemeris(frames, eph, -1)
58+
end;
59+
60+
61+
@testset "EphemeridesExt" verbose = false begin
62+
kclear()
63+
64+
frames = FrameSystem{4,Float64}()
65+
add_axes_icrf!(frames)
66+
67+
eph = EphemerisProvider(path(KERNELS[:DE432]))
68+
69+
add_point!(frames, :SolarSystemBarycenter, 0, 1)
70+
71+
add_point_ephemeris!(frames, eph, :Sun, 10)
72+
add_point_ephemeris!(frames, eph, :EarthB, 3)
73+
add_point_ephemeris!(frames, eph, :Earth, 399)
74+
75+
furnsh(path(KERNELS[:DE432]))
76+
77+
for _ in 1:100
78+
e = rand(0:1e9)
79+
pv_, lt_ = spkezr("EARTH", e, "J2000", "NONE", "SUN")
80+
pv = vector6(frames, 10, 399, 1, e)
81+
82+
@test norm(pv[1:3] - pv_[1:3]) 0.0 atol = 1e-6
83+
@test norm(pv[4:end] - pv_[4:end]) 0.0 atol = 1e-9
84+
end
85+
86+
@test_nowarn vector3(frames, 10, 399, 1, 1.0)
87+
@test_nowarn vector9(frames, 10, 399, 1, 1.0)
88+
@test_nowarn vector12(frames, 10, 399, 1, 1.0)
89+
90+
kclear()
91+
end;

test/Definitions/planetary.jl

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
using FrameTransformations
2+
using ReferenceFrameRotations
3+
using LinearAlgebra
4+
using JSMDInterfaces.Bodies
5+
using Test
6+
7+
function Bodies.body_rotational_elements(::Number, ::Val{-1})
8+
return -pi / 2, pi / 2, 0.0
9+
end
10+
11+
frames = FrameSystem{4,Float64}()
12+
@test_throws Exception add_axes_bci2000!(frames, :BCI, -1, -1)
13+
@test_throws Exception add_axes_bcrtod!(frames, :BCR, -2, -1)
14+
add_axes_icrf!(frames)
15+
16+
@test_nowarn add_axes_bci2000!(frames, :BCI, -1, -1)
17+
18+
R = rotation12(frames, :ICRF, :BCI, 12.345)
19+
20+
@test R[1] DCM(1.0I)
21+
@test R[2] DCM(0.0I)
22+
@test R[3] DCM(0.0I)
23+
@test R[4] DCM(0.0I)
24+
25+
@test_nowarn add_axes_bcrtod!(frames, :BCR, -2, -1; deriv=false)
26+
27+
R = rotation12(frames, :ICRF, :BCR, 12.345)
28+
29+
@test R[1] DCM(1.0I)
30+
@test R[2] DCM(0.0I)
31+
@test R[3] DCM(0.0I)
32+
@test R[4] DCM(0.0I)
33+
34+
@test_throws Exception add_axes_bci2000!(frames, :BCR, -2, -10)
35+
@test_throws Exception add_axes_bcrtod!(frames, :BCR, -2, -10)

0 commit comments

Comments
 (0)