From c68998248dae3f64d4864215e8ca396aad11d3d4 Mon Sep 17 00:00:00 2001 From: Andrea Pasquale Date: Sun, 28 Jul 2024 10:44:29 +0200 Subject: [PATCH 01/13] TaylorSeries extension (interoperability) --- Project.toml | 6 ++++++ ext/TaylorSeriesExt.jl | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 ext/TaylorSeriesExt.jl diff --git a/Project.toml b/Project.toml index 1b54ce7..c74920a 100644 --- a/Project.toml +++ b/Project.toml @@ -11,6 +11,12 @@ PreallocationTools = "d236fae5-4411-538c-8e31-a6e3d9e00b46" PrecompileTools = "aea7be01-6a6a-4083-8856-8a6e6704d82a" StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" +[weakdeps] +TaylorSeries = "6aa5eb33-94cf-58f4-a9d0-e4b2c4fc25ea" + +[extensions] +TaylorSeriesExt = ["TaylorSeries"] + [compat] JSMDInterfaces = "1.4" LazyArtifacts = "1" diff --git a/ext/TaylorSeriesExt.jl b/ext/TaylorSeriesExt.jl new file mode 100644 index 0000000..3bb4084 --- /dev/null +++ b/ext/TaylorSeriesExt.jl @@ -0,0 +1,42 @@ +module TaylorSeriesExt + +import Ephemerides: find_logical_record +using Ephemerides: DAF, + SPKSegmentHeader2, SPKSegmentHeader8, SPKSegmentHeader20, + SPKSegmentHeader1, SPKSegmentHeader5, SPKSegmentHeader9, + SPKSegmentHeader14, SPKSegmentHeader18 +using TaylorSeries: constant_term, Taylor1 + +function find_logical_record(head::SPKSegmentHeader2, time::Taylor1{<:Real}) + return find_logical_record(head, constant_term(time)) +end + +function find_logical_record(head::SPKSegmentHeader8, time::Taylor1{<:Real}) + return find_logical_record(head, constant_term(time)) +end + +function find_logical_record(head::SPKSegmentHeader20, time::Taylor1{<:Real}) + return find_logical_record(head, constant_term(time)) +end + +function find_logical_record(daf::DAF, head::SPKSegmentHeader1, time::Taylor1{<:Real}) + return find_logical_record(daf, head, constant_term(time)) +end + +function find_logical_record(daf::DAF, head::SPKSegmentHeader5, time::Taylor1{<:Real}) + return find_logical_record(daf, head, constant_term(time)) +end + +function find_logical_record(daf::DAF, head::SPKSegmentHeader9, time::Taylor1{<:Real}) + return find_logical_record(daf, head, constant_term(time)) +end + +function find_logical_record(daf::DAF, head::SPKSegmentHeader14, time::Taylor1{<:Real}) + return find_logical_record(daf, head, constant_term(time)) +end + +function find_logical_record(daf::DAF, head::SPKSegmentHeader18, time::Taylor1{<:Real}) + return find_logical_record(daf, head, constant_term(time)) +end + +end From 19f5106fa17d8d6806f4ed7593f0ec683e931f67 Mon Sep 17 00:00:00 2001 From: Andrea Pasquale Date: Sun, 28 Jul 2024 10:52:11 +0200 Subject: [PATCH 02/13] Update Project version --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index c74920a..bc7b94d 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Ephemerides" uuid = "6a9c3322-c8fe-4c26-8ad6-14a6f8acd2a0" authors = ["JSMD Team"] -version = "1.2.1" +version = "1.2.2" [deps] JSMDInterfaces = "6b30ee2f-618e-4a15-bf4e-7df7b496e609" From f1f2f0aa4c70a0671877bd896f904efee892af9d Mon Sep 17 00:00:00 2001 From: MicheleCeresoli Date: Mon, 29 Jul 2024 09:42:40 +0200 Subject: [PATCH 03/13] Updated minimum supported Julia version to 1.9 --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index bc7b94d..ad934a6 100644 --- a/Project.toml +++ b/Project.toml @@ -23,7 +23,7 @@ LazyArtifacts = "1" PreallocationTools = "0.4" PrecompileTools = "1" StaticArraysCore = "1.4" -julia = "1.7" +julia = "1.9" [extras] Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" From 8912c3dc5a06683598ecbf663812e907f675e0d7 Mon Sep 17 00:00:00 2001 From: MicheleCeresoli Date: Mon, 29 Jul 2024 18:13:43 +0200 Subject: [PATCH 04/13] Updated compat entries --- Project.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index ad934a6..6dddf9a 100644 --- a/Project.toml +++ b/Project.toml @@ -20,9 +20,10 @@ TaylorSeriesExt = ["TaylorSeries"] [compat] JSMDInterfaces = "1.4" LazyArtifacts = "1" -PreallocationTools = "0.4" +PreallocationTools = ">=0.4" PrecompileTools = "1" StaticArraysCore = "1.4" +TaylorSeries = ">=0.18" julia = "1.9" [extras] From f40e14b77af4cc147f9cf06e178be2e65fe217ba Mon Sep 17 00:00:00 2001 From: MicheleCeresoli Date: Mon, 29 Jul 2024 18:13:55 +0200 Subject: [PATCH 05/13] updated compat entries --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 6dddf9a..63799f8 100644 --- a/Project.toml +++ b/Project.toml @@ -23,7 +23,7 @@ LazyArtifacts = "1" PreallocationTools = ">=0.4" PrecompileTools = "1" StaticArraysCore = "1.4" -TaylorSeries = ">=0.18" +TaylorSeries = ">=0.15" julia = "1.9" [extras] From ea3224e4bf45d9684b8ff40effd2a31f39c319ef Mon Sep 17 00:00:00 2001 From: MicheleCeresoli Date: Mon, 29 Jul 2024 18:15:24 +0200 Subject: [PATCH 06/13] Removed older Julia versions from CI --- .github/workflows/ci.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fe80b29..7484cad 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,8 +12,6 @@ jobs: fail-fast: false matrix: version: - - '1.7' - - '1.8' - '1.9' - '1' os: From e8f4b3a2b1485c332df8bd56db9a63bc489550d0 Mon Sep 17 00:00:00 2001 From: MicheleCeresoli Date: Tue, 30 Jul 2024 11:50:02 +0200 Subject: [PATCH 07/13] Added v1.10 to test versions --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7484cad..627c910 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,6 +13,7 @@ jobs: matrix: version: - '1.9' + - '1.10' - '1' os: - ubuntu-latest From 3e31d2a1f9fbfd0e63db801682d94975f31a2f38 Mon Sep 17 00:00:00 2001 From: MicheleCeresoli Date: Tue, 30 Jul 2024 13:05:02 +0200 Subject: [PATCH 08/13] Added tests on TaylorSeriesExtension --- Project.toml | 2 +- test/Project.toml | 1 + test/runtests.jl | 3 ++- test/spk/spk1.jl | 20 +++++++++++++++++++- test/spk/spk12.jl | 21 +++++++++++++++++++++ test/spk/spk13.jl | 21 +++++++++++++++++++++ test/spk/spk14.jl | 21 +++++++++++++++++++++ test/spk/spk15.jl | 6 ++++++ test/spk/spk17.jl | 6 ++++++ test/spk/spk18.jl | 22 ++++++++++++++++++++++ test/spk/spk19.jl | 21 +++++++++++++++++++++ test/spk/spk2.jl | 22 ++++++++++++++++++++++ test/spk/spk20.jl | 22 ++++++++++++++++++++++ test/spk/spk21.jl | 18 ++++++++++++++++++ test/spk/spk3.jl | 22 ++++++++++++++++++++++ test/spk/spk5.jl | 19 +++++++++++++++++++ test/spk/spk8.jl | 21 +++++++++++++++++++++ test/spk/spk9.jl | 21 +++++++++++++++++++++ 18 files changed, 286 insertions(+), 3 deletions(-) diff --git a/Project.toml b/Project.toml index 63799f8..73d1570 100644 --- a/Project.toml +++ b/Project.toml @@ -30,4 +30,4 @@ julia = "1.9" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [targets] -test = ["Test"] +test = ["Test", "TaylorSeries"] diff --git a/test/Project.toml b/test/Project.toml index 2905b28..99ec0fc 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -6,4 +6,5 @@ LazyArtifacts = "4af54fe1-eca0-43a8-85a7-787d91b784e3" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" SPICE = "5bab7191-041a-5c2e-a744-024b9c3a5062" +TaylorSeries = "6aa5eb33-94cf-58f4-a9d0-e4b2c4fc25ea" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/test/runtests.jl b/test/runtests.jl index 7ddae91..4eb7967 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -7,6 +7,7 @@ using LazyArtifacts using LinearAlgebra using Random using SPICE +using TaylorSeries import JSMDInterfaces.Ephemeris as jEphem @@ -17,7 +18,7 @@ end; @testset "Ephemerides" verbose=true begin - include("spk/spk.jl") + include(joinpath("spk", "spk.jl")) include("properties.jl") include("interfaces.jl") include("twobody.jl") diff --git a/test/spk/spk1.jl b/test/spk/spk1.jl index d3fc22f..9a2ade3 100644 --- a/test/spk/spk1.jl +++ b/test/spk/spk1.jl @@ -26,6 +26,7 @@ DJ2000 = 2451545 @test_throws jEphem.EphemerisError ephem_vector9(ephj, cid, tid, t1j) @test_throws jEphem.EphemerisError ephem_vector12(ephj, cid, tid, t1j) + ep = t1j:1:t2j for j in 1:3000 @@ -75,7 +76,24 @@ DJ2000 = 2451545 end + # ---- + # TaylorSeries Extension Test + + t = Taylor1(5) + + tj = rand(head.epochs) + + pt = ephem_vector3(ephj, cid, tid, t + tj) + vt = differentiate.(pt) + + se = ephem_vector6(ephj, cid, tid, tj) + + @test evaluate(pt) ≈ se[1:3] atol=1e-12 rtol=1e-12 + @test evaluate(vt) ≈ se[4:6] atol=1e-12 rtol=1e-12 + + # --- # Thread-safe testing + tj = shuffle(collect(LinRange(t1j, t2j, 200))) pos = zeros(3, length(tj)) @@ -92,4 +110,4 @@ DJ2000 = 2451545 kclear() -end \ No newline at end of file +end diff --git a/test/spk/spk12.jl b/test/spk/spk12.jl index d4598da..cc9a225 100644 --- a/test/spk/spk12.jl +++ b/test/spk/spk12.jl @@ -74,7 +74,28 @@ DJ2000 = 2451545 end + # ---- + # TaylorSeries Extension Test + + t = Taylor1(5) + + tj = rand(ep) + + pt = ephem_vector3(ephj, cid, tid, t + tj) + vt = differentiate.(pt) + at = differentiate.(vt) + jt = differentiate.(at) + + se = ephem_vector12(ephj, cid, tid, tj) + + @test evaluate(pt) ≈ se[1:3] atol=1e-9 rtol=1e-9 + @test evaluate(vt) ≈ se[4:6] atol=1e-9 rtol=1e-9 + @test evaluate(at) ≈ se[7:9] atol=1e-9 rtol=1e-9 + @test evaluate(jt) ≈ se[10:12] atol=1e-9 rtol=1e-9 + + # --- # Thread-safe testing + tj = shuffle(collect(LinRange(t1j, t2j, 200))) pos = zeros(3, length(tj)) diff --git a/test/spk/spk13.jl b/test/spk/spk13.jl index c207bb0..e213e94 100644 --- a/test/spk/spk13.jl +++ b/test/spk/spk13.jl @@ -104,7 +104,28 @@ DJ2000 = 2451545 end + # ---- + # TaylorSeries Extension Test + + t = Taylor1(5) + + tj = rand(ep) + + pt = ephem_vector3(ephj, cid, tid, t + tj) + vt = differentiate.(pt) + at = differentiate.(vt) + jt = differentiate.(at) + + se = ephem_vector12(ephj, cid, tid, tj) + + @test evaluate(pt) ≈ se[1:3] atol=1e-9 rtol=1e-9 + @test evaluate(vt) ≈ se[4:6] atol=1e-9 rtol=1e-9 + @test evaluate(at) ≈ se[7:9] atol=1e-9 rtol=1e-9 + @test evaluate(jt) ≈ se[10:12] atol=1e-9 rtol=1e-9 + + # --- # Thread-safe testing + tj = shuffle(collect(LinRange(t1j, t2j, 200))) pos = zeros(3, length(tj)) diff --git a/test/spk/spk14.jl b/test/spk/spk14.jl index 6d7a1ad..127e2ec 100644 --- a/test/spk/spk14.jl +++ b/test/spk/spk14.jl @@ -73,7 +73,28 @@ DJ2000 = 2451545 end + # ---- + # TaylorSeries Extension Test + + t = Taylor1(5) + + tj = rand(head.epochs) + + pt = ephem_vector3(ephj, cid, tid, t + tj) + vt = ephem_vector6(ephj, cid, tid, t + tj)[4:6] + at = differentiate.(vt) + jt = differentiate.(at) + + se = ephem_vector12(ephj, cid, tid, tj) + + @test evaluate(pt) ≈ se[1:3] atol=1e-9 rtol=1e-9 + @test evaluate(vt) ≈ se[4:6] atol=1e-9 rtol=1e-9 + @test evaluate(at) ≈ se[7:9] atol=1e-9 rtol=1e-9 + @test evaluate(jt) ≈ se[10:12] atol=1e-9 rtol=1e-9 + + # --- # Thread-safe testing + tj = shuffle(collect(LinRange(t1j, t2j, 200))) pos = zeros(3, length(tj)) diff --git a/test/spk/spk15.jl b/test/spk/spk15.jl index b8eb425..62b7ff8 100644 --- a/test/spk/spk15.jl +++ b/test/spk/spk15.jl @@ -74,6 +74,12 @@ DJ2000 = 2451545 end + # ---- + # TaylorSeries Extension Test + + # Doesn't make sense as the autodiff above + + # --- # Thread-safe testing tj = shuffle(collect(LinRange(t1j, t2j, 200))) diff --git a/test/spk/spk17.jl b/test/spk/spk17.jl index 51002e9..407dded 100644 --- a/test/spk/spk17.jl +++ b/test/spk/spk17.jl @@ -57,6 +57,12 @@ DJ2000 = 2451545 end + # ---- + # TaylorSeries Extension Test + + # Doesn't make sense as the autodiff comment above + + # --- # Thread-safe testing tj = shuffle(collect(LinRange(t1j, t2j, 200))) diff --git a/test/spk/spk18.jl b/test/spk/spk18.jl index 00ba8b4..a7ec46a 100644 --- a/test/spk/spk18.jl +++ b/test/spk/spk18.jl @@ -82,6 +82,28 @@ DJ2000 = 2451545 end + + # ---- + # TaylorSeries Extension Test + + t = Taylor1(5) + + tj = rand(ep) + + pt = ephem_vector3(ephj, cid, tid, t + tj) + vt = ephem_vector6(ephj, cid, tid, t + tj)[4:6] + at = differentiate.(vt) + jt = differentiate.(at) + + se = ephem_vector12(ephj, cid, tid, tj) + + @test evaluate(pt) ≈ se[1:3] atol=1e-12 rtol=1e-12 + @test evaluate(vt) ≈ se[4:6] atol=1e-12 rtol=1e-12 + @test evaluate(at) ≈ se[7:9] atol=1e-12 rtol=1e-12 + @test evaluate(jt) ≈ se[10:12] atol=1e-12 rtol=1e-12 + + + # --- # Thread-safe testing tj = shuffle(collect(LinRange(t1j, t2j, 200))) diff --git a/test/spk/spk19.jl b/test/spk/spk19.jl index fe32d95..437fe4e 100644 --- a/test/spk/spk19.jl +++ b/test/spk/spk19.jl @@ -85,6 +85,27 @@ DJ2000 = 2451545 end + # ---- + # TaylorSeries Extension Test + + t = Taylor1(5) + + tj = rand(ep) + + pt = ephem_vector3(ephj, cid, tid, t + tj) + vt = ephem_vector6(ephj, cid, tid, t + tj)[4:6] + at = differentiate.(vt) + jt = differentiate.(at) + + se = ephem_vector12(ephj, cid, tid, tj) + + @test evaluate(pt) ≈ se[1:3] atol=1e-12 rtol=1e-12 + @test evaluate(vt) ≈ se[4:6] atol=1e-12 rtol=1e-12 + @test evaluate(at) ≈ se[7:9] atol=1e-12 rtol=1e-12 + @test evaluate(jt) ≈ se[10:12] atol=1e-12 rtol=1e-12 + + + # --- # Thread-safe testing tj = shuffle(collect(LinRange(t1j, t2j, 200))) diff --git a/test/spk/spk2.jl b/test/spk/spk2.jl index ddb72fc..670111b 100644 --- a/test/spk/spk2.jl +++ b/test/spk/spk2.jl @@ -80,7 +80,29 @@ DJ2000 = 2451545 end + # ---- + # TaylorSeries Extension Test + + t = Taylor1(5) + + tj = rand(ep) + + pt = ephem_vector3(ephj, cid, tid, t + tj) + vt = differentiate.(pt) + at = differentiate.(vt) + jt = differentiate.(at) + + se = ephem_vector12(ephj, cid, tid, tj) + + @test evaluate(pt) ≈ se[1:3] atol=1e-12 rtol=1e-12 + @test evaluate(vt) ≈ se[4:6] atol=1e-12 rtol=1e-12 + @test evaluate(at) ≈ se[7:9] atol=1e-12 rtol=1e-12 + @test evaluate(jt) ≈ se[10:12] atol=1e-12 rtol=1e-12 + + + # --- # Thread-safe testing + tj = shuffle(collect(LinRange(t1j, t2j, 200))) pos = zeros(3, length(tj)) diff --git a/test/spk/spk20.jl b/test/spk/spk20.jl index 512c7cb..45f6f04 100644 --- a/test/spk/spk20.jl +++ b/test/spk/spk20.jl @@ -69,7 +69,29 @@ DJ2000 = 2451545 end + # ---- + # TaylorSeries Extension Test + + t = Taylor1(5) + + tj = rand(ep) + + pt = ephem_vector3(ephj, cid, tid, t + tj) + vt = differentiate.(pt) + at = differentiate.(vt) + jt = differentiate.(at) + + se = ephem_vector12(ephj, cid, tid, tj) + + @test evaluate(pt) ≈ se[1:3] atol=1e-9 rtol=1e-8 + @test evaluate(vt) ≈ se[4:6] atol=1e-9 rtol=1e-8 + @test evaluate(at) ≈ se[7:9] atol=1e-9 rtol=1e-8 + @test evaluate(jt) ≈ se[10:12] atol=1e-9 rtol=1e-8 + + + # --- # Thread-safe testing + tj = shuffle(collect(LinRange(t1j, t2j, 200))) pos = zeros(3, length(tj)) diff --git a/test/spk/spk21.jl b/test/spk/spk21.jl index 2dac8a1..b9f7320 100644 --- a/test/spk/spk21.jl +++ b/test/spk/spk21.jl @@ -75,7 +75,25 @@ DJ2000 = 2451545 end + # ---- + # TaylorSeries Extension Test + + t = Taylor1(5) + + tj = rand(ep) + + pt = ephem_vector3(ephj, cid, tid, t + tj) + vt = differentiate.(pt) + + se = ephem_vector6(ephj, cid, tid, tj) + + @test evaluate(pt) ≈ se[1:3] atol=1e-9 rtol=1e-8 + @test evaluate(vt) ≈ se[4:6] atol=1e-9 rtol=1e-8 + + + # --- # Thread-safe testing + tj = shuffle(collect(LinRange(t1j, t2j, 200))) pos = zeros(3, length(tj)) diff --git a/test/spk/spk3.jl b/test/spk/spk3.jl index c2ed8b3..242775b 100644 --- a/test/spk/spk3.jl +++ b/test/spk/spk3.jl @@ -70,7 +70,29 @@ DJ2000 = 2451545 end + # ---- + # TaylorSeries Extension Test + + t = Taylor1(5) + + tj = rand(ep) + + pt = ephem_vector3(ephj, cid, tid, t + tj) + vt = ephem_vector6(ephj, cid, tid, t + tj)[4:6] + at = differentiate.(vt) + jt = differentiate.(at) + + se = ephem_vector12(ephj, cid, tid, tj) + + @test evaluate(pt) ≈ se[1:3] atol=1e-12 rtol=1e-12 + @test evaluate(vt) ≈ se[4:6] atol=1e-12 rtol=1e-12 + @test evaluate(at) ≈ se[7:9] atol=1e-12 rtol=1e-12 + @test evaluate(jt) ≈ se[10:12] atol=1e-12 rtol=1e-12 + + + # --- # Thread-safe testing + tj = shuffle(collect(LinRange(t1j, t2j, 200))) pos = zeros(3, length(tj)) diff --git a/test/spk/spk5.jl b/test/spk/spk5.jl index f82dce4..7f8e864 100644 --- a/test/spk/spk5.jl +++ b/test/spk/spk5.jl @@ -79,7 +79,26 @@ DJ2000 = 2451545 end + # ---- + # TaylorSeries Extension Test + + t = Taylor1(5) + + tj = rand(ep) + + # To make this work properly, we cannot differentiate the position + # to obtain a velocity + pt = ephem_vector3(ephj, cid, tid, t + tj) + vt = ephem_vector6(ephj, cid, tid, t + tj)[4:6] + + se = ephem_vector6(ephj, cid, tid, tj) + + @test evaluate(pt) ≈ se[1:3] atol=1e-9 rtol=1e-9 + @test evaluate(vt) ≈ se[4:6] atol=1e-9 rtol=1e-9 + + # --- # Thread-safe testing + tj = shuffle(collect(LinRange(t1j, t2j, 200))) pos = zeros(3, length(tj)) diff --git a/test/spk/spk8.jl b/test/spk/spk8.jl index 26d0d10..b08dc2f 100644 --- a/test/spk/spk8.jl +++ b/test/spk/spk8.jl @@ -73,7 +73,28 @@ DJ2000 = 2451545 end + # ---- + # TaylorSeries Extension Test + + t = Taylor1(5) + + tj = rand(ep) + + pt = ephem_vector3(ephj, cid, tid, t + tj) + vt = differentiate.(pt) + at = differentiate.(vt) + jt = differentiate.(at) + + se = ephem_vector12(ephj, cid, tid, tj) + + @test evaluate(pt) ≈ se[1:3] atol=1e-9 rtol=1e-9 + @test evaluate(vt) ≈ se[4:6] atol=1e-9 rtol=1e-9 + @test evaluate(at) ≈ se[7:9] atol=1e-9 rtol=1e-9 + @test evaluate(jt) ≈ se[10:12] atol=1e-9 rtol=1e-9 + + # --- # Thread-safe testing + tj = shuffle(collect(LinRange(t1j, t2j, 200))) pos = zeros(3, length(tj)) diff --git a/test/spk/spk9.jl b/test/spk/spk9.jl index 18c06a1..bca1547 100644 --- a/test/spk/spk9.jl +++ b/test/spk/spk9.jl @@ -96,7 +96,28 @@ DJ2000 = 2451545 end + # ---- + # TaylorSeries Extension Test + + t = Taylor1(5) + + tj = rand(ep) + + pt = ephem_vector3(ephj, cid, tid, t + tj) + vt = differentiate.(pt) + at = differentiate.(vt) + jt = differentiate.(at) + + se = ephem_vector12(ephj, cid, tid, tj) + + @test evaluate(pt) ≈ se[1:3] atol=1e-9 rtol=1e-9 + @test evaluate(vt) ≈ se[4:6] atol=1e-9 rtol=1e-9 + @test evaluate(at) ≈ se[7:9] atol=1e-9 rtol=1e-9 + @test evaluate(jt) ≈ se[10:12] atol=1e-9 rtol=1e-9 + + # --- # Thread-safe testing + tj = shuffle(collect(LinRange(t1j, t2j, 200))) pos = zeros(3, length(tj)) From 5c06efbf7f0a18cdd659c4b2c9ad53c2dcd4e844 Mon Sep 17 00:00:00 2001 From: MicheleCeresoli Date: Tue, 30 Jul 2024 13:14:07 +0200 Subject: [PATCH 09/13] Updated test tolerances --- test/spk/spk13.jl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/spk/spk13.jl b/test/spk/spk13.jl index e213e94..8361a2f 100644 --- a/test/spk/spk13.jl +++ b/test/spk/spk13.jl @@ -118,10 +118,10 @@ DJ2000 = 2451545 se = ephem_vector12(ephj, cid, tid, tj) - @test evaluate(pt) ≈ se[1:3] atol=1e-9 rtol=1e-9 - @test evaluate(vt) ≈ se[4:6] atol=1e-9 rtol=1e-9 - @test evaluate(at) ≈ se[7:9] atol=1e-9 rtol=1e-9 - @test evaluate(jt) ≈ se[10:12] atol=1e-9 rtol=1e-9 + @test evaluate(pt) ≈ se[1:3] atol=1e-5 rtol=1e-9 + @test evaluate(vt) ≈ se[4:6] atol=1e-5 rtol=1e-9 + @test evaluate(at) ≈ se[7:9] atol=1e-5 rtol=1e-9 + @test evaluate(jt) ≈ se[10:12] atol=1e-5 rtol=1e-9 # --- # Thread-safe testing From 4c9fb03a8f25b326fe1e11f5f17837c0bd7e0c47 Mon Sep 17 00:00:00 2001 From: MicheleCeresoli Date: Tue, 30 Jul 2024 17:27:17 +0200 Subject: [PATCH 10/13] Added `check_linktime` --- ext/TaylorSeriesExt.jl | 11 +++++++++-- src/links.jl | 10 ++++++++++ src/transform.jl | 4 ++-- test/spk/spk2.jl | 26 ++++++++++++++++++++++---- 4 files changed, 43 insertions(+), 8 deletions(-) diff --git a/ext/TaylorSeriesExt.jl b/ext/TaylorSeriesExt.jl index 3bb4084..435ce68 100644 --- a/ext/TaylorSeriesExt.jl +++ b/ext/TaylorSeriesExt.jl @@ -1,12 +1,15 @@ module TaylorSeriesExt -import Ephemerides: find_logical_record -using Ephemerides: DAF, +import Ephemerides: find_logical_record, check_linktime + +using Ephemerides: DAF, SPKLink, SPKSegmentHeader2, SPKSegmentHeader8, SPKSegmentHeader20, SPKSegmentHeader1, SPKSegmentHeader5, SPKSegmentHeader9, SPKSegmentHeader14, SPKSegmentHeader18 + using TaylorSeries: constant_term, Taylor1 + function find_logical_record(head::SPKSegmentHeader2, time::Taylor1{<:Real}) return find_logical_record(head, constant_term(time)) end @@ -39,4 +42,8 @@ function find_logical_record(daf::DAF, head::SPKSegmentHeader18, time::Taylor1{< return find_logical_record(daf, head, constant_term(time)) end +function check_linktime(link::SPKLink, time::Taylor1{<:Real}) + return check_linktime(link, constant_term(time)) +end + end diff --git a/src/links.jl b/src/links.jl index 5017d32..33914ab 100644 --- a/src/links.jl +++ b/src/links.jl @@ -74,6 +74,16 @@ segment associated to this link, in seconds since J2000.0 """ @inline final_time(link::SPKLink) = final_time(descriptor(link)) +""" + check_linktime(link::SPKLink, time::Number) + +Return whether `time`, expressed in seconds since J2000.0 is within the SPK link bounds. +""" +@inline function check_linktime(link::SPKLink, time::Number) + return initial_time(link) <= time <= final_time(link) +end + + """ reverse_link(link::SPKLink) diff --git a/src/transform.jl b/src/transform.jl index a45a43e..3a01b85 100644 --- a/src/transform.jl +++ b/src/transform.jl @@ -24,7 +24,7 @@ for (order, pfun1, afun1, pfun2, afun2) in zip( links = spk_links(eph) if haskey(links, to) && haskey(links[to], from) for link in links[to][from] - if initial_time(link) <= time <= final_time(link) + if check_linktime(link, time) return factor(link)*$(pfun2)(get_daf(eph, file_id(link)), link, time) end end @@ -63,7 +63,7 @@ for (order, pfun1, afun1, pfun2, afun2) in zip( links = pck_links(eph) if haskey(links, to) && haskey(links[to], from) for link in links[to][from] - if initial_time(link) <= time <= final_time(link) + if check_linktime(link, time) return $(afun2)(get_daf(eph, file_id(link)), link, time) end end diff --git a/test/spk/spk2.jl b/test/spk/spk2.jl index 670111b..389fb7b 100644 --- a/test/spk/spk2.jl +++ b/test/spk/spk2.jl @@ -180,7 +180,28 @@ DJ2000 = 2451545 end + # ---- + # TaylorSeries Extension Test + + t = Taylor1(5) + + tj = rand(ep) + + pt = ephem_rotation3(ephj, cid, tid, t + tj) + vt = ephem_rotation6(ephj, cid, tid, t + tj)[4:6] + at = differentiate.(vt) + jt = differentiate.(at) + + se = ephem_rotation12(ephj, cid, tid, tj) + + @test evaluate(pt) ≈ se[1:3] atol=1e-12 rtol=1e-12 + @test evaluate(vt) ≈ se[4:6] atol=1e-12 rtol=1e-12 + @test evaluate(at) ≈ se[7:9] atol=1e-12 rtol=1e-12 + @test evaluate(jt) ≈ se[10:12] atol=1e-12 rtol=1e-12 + + # ---- # Thread-safe testing + tj = shuffle(collect(LinRange(t1j, t2j, 200))) pos = zeros(3, length(tj)) @@ -194,7 +215,4 @@ DJ2000 = 2451545 end @test pos ≈ pos_m atol=1e-14 rtol=1e-14 -end - - - +end \ No newline at end of file From c44e983f60c0232791418e882029a7321be037a0 Mon Sep 17 00:00:00 2001 From: MicheleCeresoli Date: Tue, 30 Jul 2024 17:32:28 +0200 Subject: [PATCH 11/13] Added to docs --- docs/src/api/lapi.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/src/api/lapi.md b/docs/src/api/lapi.md index 7a29e46..4f3451a 100644 --- a/docs/src/api/lapi.md +++ b/docs/src/api/lapi.md @@ -80,6 +80,7 @@ Ephemerides.file_id Ephemerides.list_id Ephemerides.element_id Ephemerides.factor +Ephemerides.check_linktime Ephemerides.reverse_link Ephemerides.create_linktables Ephemerides.add_spklinks! From d42c3294627ef26df8ebfaf939a7caf232bc84c1 Mon Sep 17 00:00:00 2001 From: MicheleCeresoli Date: Tue, 30 Jul 2024 17:32:48 +0200 Subject: [PATCH 12/13] Increased TaylorSeries test robustness --- test/spk/spk1.jl | 23 ++++++++++++----------- test/spk/spk12.jl | 31 ++++++++++++++++--------------- test/spk/spk13.jl | 32 ++++++++++++++++---------------- test/spk/spk2.jl | 33 ++++++++++++++++----------------- test/spk/spk3.jl | 32 ++++++++++++++++---------------- 5 files changed, 76 insertions(+), 75 deletions(-) diff --git a/test/spk/spk1.jl b/test/spk/spk1.jl index 9a2ade3..a334c6f 100644 --- a/test/spk/spk1.jl +++ b/test/spk/spk1.jl @@ -74,22 +74,23 @@ DJ2000 = 2451545 # D²(t->ephem_vector6(ephj, cid, tid, t), tj) # D³(t->ephem_vector6(ephj, cid, tid, t), tj) - end + # ---- + # TaylorSeries Extension Test + + t = Taylor1(5) - # ---- - # TaylorSeries Extension Test - - t = Taylor1(5) + tj = rand(head.epochs) - tj = rand(head.epochs) + pt = ephem_vector3(ephj, cid, tid, t + tj) + vt = differentiate.(pt) - pt = ephem_vector3(ephj, cid, tid, t + tj) - vt = differentiate.(pt) + se = ephem_vector6(ephj, cid, tid, tj) - se = ephem_vector6(ephj, cid, tid, tj) + @test evaluate(pt) ≈ se[1:3] atol=1e-12 rtol=1e-12 + @test evaluate(vt) ≈ se[4:6] atol=1e-12 rtol=1e-12 + + end - @test evaluate(pt) ≈ se[1:3] atol=1e-12 rtol=1e-12 - @test evaluate(vt) ≈ se[4:6] atol=1e-12 rtol=1e-12 # --- # Thread-safe testing diff --git a/test/spk/spk12.jl b/test/spk/spk12.jl index cc9a225..00b77af 100644 --- a/test/spk/spk12.jl +++ b/test/spk/spk12.jl @@ -72,26 +72,27 @@ DJ2000 = 2451545 # Acceleration @test D¹(t->ephem_vector9(ephj, cid, tid, t), tj) ≈ yj4[4:12] atol=1e-9 rtol=1e-13 - end + # ---- + # TaylorSeries Extension Test + + t = Taylor1(5) - # ---- - # TaylorSeries Extension Test - - t = Taylor1(5) + tj = rand(ep) - tj = rand(ep) + pt = ephem_vector3(ephj, cid, tid, t + tj) + vt = differentiate.(pt) + at = differentiate.(vt) + jt = differentiate.(at) - pt = ephem_vector3(ephj, cid, tid, t + tj) - vt = differentiate.(pt) - at = differentiate.(vt) - jt = differentiate.(at) + se = ephem_vector12(ephj, cid, tid, tj) - se = ephem_vector12(ephj, cid, tid, tj) + @test evaluate(pt) ≈ se[1:3] atol=1e-9 rtol=1e-9 + @test evaluate(vt) ≈ se[4:6] atol=1e-9 rtol=1e-9 + @test evaluate(at) ≈ se[7:9] atol=1e-9 rtol=1e-9 + @test evaluate(jt) ≈ se[10:12] atol=1e-9 rtol=1e-9 + + end - @test evaluate(pt) ≈ se[1:3] atol=1e-9 rtol=1e-9 - @test evaluate(vt) ≈ se[4:6] atol=1e-9 rtol=1e-9 - @test evaluate(at) ≈ se[7:9] atol=1e-9 rtol=1e-9 - @test evaluate(jt) ≈ se[10:12] atol=1e-9 rtol=1e-9 # --- # Thread-safe testing diff --git a/test/spk/spk13.jl b/test/spk/spk13.jl index 8361a2f..13ea3c2 100644 --- a/test/spk/spk13.jl +++ b/test/spk/spk13.jl @@ -101,27 +101,27 @@ DJ2000 = 2451545 # Acceleration @test D¹(t->ephem_vector9(ephj, cid, tid, t), tj) ≈ yj4[4:12] atol=jatol rtol=jrtol + + # ---- + # TaylorSeries Extension Test + + t = Taylor1(5) - end - - # ---- - # TaylorSeries Extension Test - - t = Taylor1(5) + tj = rand(ep) - tj = rand(ep) + pt = ephem_vector3(ephj, cid, tid, t + tj) + vt = differentiate.(pt) + at = differentiate.(vt) + jt = differentiate.(at) - pt = ephem_vector3(ephj, cid, tid, t + tj) - vt = differentiate.(pt) - at = differentiate.(vt) - jt = differentiate.(at) + se = ephem_vector12(ephj, cid, tid, tj) - se = ephem_vector12(ephj, cid, tid, tj) + @test evaluate(pt) ≈ se[1:3] atol=1e-5 rtol=1e-9 + @test evaluate(vt) ≈ se[4:6] atol=1e-5 rtol=1e-9 + @test evaluate(at) ≈ se[7:9] atol=1e-5 rtol=1e-9 + @test evaluate(jt) ≈ se[10:12] atol=1e-5 rtol=1e-9 - @test evaluate(pt) ≈ se[1:3] atol=1e-5 rtol=1e-9 - @test evaluate(vt) ≈ se[4:6] atol=1e-5 rtol=1e-9 - @test evaluate(at) ≈ se[7:9] atol=1e-5 rtol=1e-9 - @test evaluate(jt) ≈ se[10:12] atol=1e-5 rtol=1e-9 + end # --- # Thread-safe testing diff --git a/test/spk/spk2.jl b/test/spk/spk2.jl index 389fb7b..5762466 100644 --- a/test/spk/spk2.jl +++ b/test/spk/spk2.jl @@ -78,27 +78,26 @@ DJ2000 = 2451545 # # Acceleration @test D¹(t->ephem_vector9(ephj, cid, tid, t), tj) ≈ yj4[4:12] atol=1e-9 rtol=1e-12 - end - - # ---- - # TaylorSeries Extension Test - - t = Taylor1(5) - - tj = rand(ep) + # ---- + # TaylorSeries Extension Test + + t = Taylor1(5) - pt = ephem_vector3(ephj, cid, tid, t + tj) - vt = differentiate.(pt) - at = differentiate.(vt) - jt = differentiate.(at) + tj = rand(ep) - se = ephem_vector12(ephj, cid, tid, tj) + pt = ephem_vector3(ephj, cid, tid, t + tj) + vt = differentiate.(pt) + at = differentiate.(vt) + jt = differentiate.(at) - @test evaluate(pt) ≈ se[1:3] atol=1e-12 rtol=1e-12 - @test evaluate(vt) ≈ se[4:6] atol=1e-12 rtol=1e-12 - @test evaluate(at) ≈ se[7:9] atol=1e-12 rtol=1e-12 - @test evaluate(jt) ≈ se[10:12] atol=1e-12 rtol=1e-12 + se = ephem_vector12(ephj, cid, tid, tj) + @test evaluate(pt) ≈ se[1:3] atol=1e-12 rtol=1e-12 + @test evaluate(vt) ≈ se[4:6] atol=1e-12 rtol=1e-12 + @test evaluate(at) ≈ se[7:9] atol=1e-12 rtol=1e-12 + @test evaluate(jt) ≈ se[10:12] atol=1e-12 rtol=1e-12 + + end # --- # Thread-safe testing diff --git a/test/spk/spk3.jl b/test/spk/spk3.jl index 242775b..6bb6244 100644 --- a/test/spk/spk3.jl +++ b/test/spk/spk3.jl @@ -67,27 +67,27 @@ DJ2000 = 2451545 # Acceleration @test D¹(t->ephem_vector9(ephj, cid, tid, t), tj)[4:9] ≈ yj4[7:12] atol=1e-8 rtol=1e-12 + + # ---- + # TaylorSeries Extension Test + + t = Taylor1(5) - end - - # ---- - # TaylorSeries Extension Test - - t = Taylor1(5) + tj = rand(ep) - tj = rand(ep) + pt = ephem_vector3(ephj, cid, tid, t + tj) + vt = ephem_vector6(ephj, cid, tid, t + tj)[4:6] + at = differentiate.(vt) + jt = differentiate.(at) - pt = ephem_vector3(ephj, cid, tid, t + tj) - vt = ephem_vector6(ephj, cid, tid, t + tj)[4:6] - at = differentiate.(vt) - jt = differentiate.(at) + se = ephem_vector12(ephj, cid, tid, tj) - se = ephem_vector12(ephj, cid, tid, tj) + @test evaluate(pt) ≈ se[1:3] atol=1e-12 rtol=1e-12 + @test evaluate(vt) ≈ se[4:6] atol=1e-12 rtol=1e-12 + @test evaluate(at) ≈ se[7:9] atol=1e-12 rtol=1e-12 + @test evaluate(jt) ≈ se[10:12] atol=1e-12 rtol=1e-12 - @test evaluate(pt) ≈ se[1:3] atol=1e-12 rtol=1e-12 - @test evaluate(vt) ≈ se[4:6] atol=1e-12 rtol=1e-12 - @test evaluate(at) ≈ se[7:9] atol=1e-12 rtol=1e-12 - @test evaluate(jt) ≈ se[10:12] atol=1e-12 rtol=1e-12 + end # --- From 5048f5be33a057024dae3742f9748cbdd49cf522 Mon Sep 17 00:00:00 2001 From: MicheleCeresoli Date: Tue, 30 Jul 2024 17:35:08 +0200 Subject: [PATCH 13/13] Decreased test tolerance --- test/spk/spk9.jl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/spk/spk9.jl b/test/spk/spk9.jl index bca1547..2300012 100644 --- a/test/spk/spk9.jl +++ b/test/spk/spk9.jl @@ -110,10 +110,10 @@ DJ2000 = 2451545 se = ephem_vector12(ephj, cid, tid, tj) - @test evaluate(pt) ≈ se[1:3] atol=1e-9 rtol=1e-9 - @test evaluate(vt) ≈ se[4:6] atol=1e-9 rtol=1e-9 - @test evaluate(at) ≈ se[7:9] atol=1e-9 rtol=1e-9 - @test evaluate(jt) ≈ se[10:12] atol=1e-9 rtol=1e-9 + @test evaluate(pt) ≈ se[1:3] atol=1e-8 rtol=1e-9 + @test evaluate(vt) ≈ se[4:6] atol=1e-8 rtol=1e-9 + @test evaluate(at) ≈ se[7:9] atol=1e-8 rtol=1e-9 + @test evaluate(jt) ≈ se[10:12] atol=1e-8 rtol=1e-9 # --- # Thread-safe testing