Files
thesis/julia/test/find_closest.jl
2021-08-30 23:28:36 -06:00

53 lines
1.8 KiB
Julia

@testset "Find Closest" begin
using JuMP
using Thesis: treat_inputs
# Initial Setup
sc = Sc("test")
a = rand(15000:1.:40000)
e = rand(0.01:0.01:0.5)
i = rand(0.01:0.01:π/6)
T = 2π*(a^3/μs["Earth"])
prop_time = 2T
n = 30
# A simple orbit raising
start = oe_to_xyz([ a, e, i, 0., 0., 0. ], μs["Earth"])
ΔVs = repeat([0.6, 0., 0.]', outer=(n,1))
final = prop(ΔVs, start, sc, μs["Earth"], prop_time)[3]
new_T = 2π*(xyz_to_oe(final, μs["Earth"])[1]^3/μs["Earth"])
# This should be close enough to 0.6
Tr, , Th = conv_T(repeat([0.6], n), repeat([0.], n), repeat([0.], n),
start,
sc.mass,
sc,
prop_time,
μs["Earth"])
result, solution = nlp_solve(start,
final,
sc,
μs["Earth"],
0.0,
prop_time,
Tr,
,
Th)
# Test and plot
@test JuMP.termination_status(result) == MOI.OPTIMAL
path1 = prop(zeros((100,3)), start, sc, μs["Earth"], T)[1]
path2, mass, calc_final = prop(treat_inputs(JuMP.value.(solution)), start, sc, μs["Earth"], prop_time)
path3 = prop(zeros((100,3)), calc_final, sc, μs["Earth"], new_T)[1]
path4 = prop(zeros((100,3)), final, sc, μs["Earth"], new_T)[1]
savefig(plot_orbits([path1, path2, path3, path4],
labels=["initial", "transit", "after transit", "final"],
colors=["#FFFFFF","#FF4444","#44FF44","#4444FF"]),
"../plots/find_closest_test.html")
# if termination_status(result) == :OPTIMAL
# @test norm(calc_final - final) < 1e-4
# end
end