Ok, now open loop is working, sc mass changed to state, and other updates
This commit is contained in:
@@ -2,28 +2,73 @@
|
||||
|
||||
println("Testing Inner Loop")
|
||||
|
||||
using Dates
|
||||
using Dates, SPICE, PlotlyJS
|
||||
|
||||
sc = Sc("test")
|
||||
|
||||
phase1 = Phase("Earth",
|
||||
"Mars",
|
||||
3600*24*365*1.85,
|
||||
[1., 0.3, 0.],
|
||||
[3., 3., 0.])
|
||||
launch_date = DateTime(2016,3,28)
|
||||
launch_j2000 = utc2et(Dates.format(launch_date,"yyyy-mm-ddTHH:MM:SS"))
|
||||
leg1_tof = 3600*24*30*10.75
|
||||
leg2_tof = 3600*24*365*5.5
|
||||
v∞s = [ [0.34251772594197877, -2.7344726708862477, -1.1854707164631975],
|
||||
[-1.1, -3., -2.6],
|
||||
[3.5, 3.5, √(5^2 - 2*3.5^2)],
|
||||
[0.3, 1., 0.] ]
|
||||
p1 = "Mars"
|
||||
p2 = "Saturn"
|
||||
start_mass = 10_000.
|
||||
|
||||
phase2 = Phase("Mars",
|
||||
"Jupiter",
|
||||
3600*24*365*3.5,
|
||||
[2., 3.7416573867739413, 0.],
|
||||
[0.3, 1., 0.])
|
||||
phase1 = Phase("Earth", p1, leg1_tof, v∞s[1], v∞s[2])
|
||||
phase2 = Phase(p1, p2, leg2_tof, v∞s[3], v∞s[4])
|
||||
|
||||
result = inner_loop(DateTime(2024,3,5),
|
||||
sc,
|
||||
[phase1, phase2],
|
||||
verbose=true,
|
||||
mbh_specs=(5,50,100))
|
||||
# For finding the best trajectories
|
||||
earth_state = [spkssb(Thesis.ids["Earth"], launch_j2000, "J2000"); start_mass]
|
||||
p1_state = [spkssb(Thesis.ids[p1], launch_j2000+leg1_tof, "J2000"); start_mass]
|
||||
p2_state = [spkssb(Thesis.ids[p2], launch_j2000+leg1_tof+leg2_tof, "J2000"); start_mass]
|
||||
earth = prop(zeros(100,3), earth_state, sc, μs["Sun"], 3600*24*365.)[1]
|
||||
p1_path = prop(zeros(100,3), p1_state, sc, μs["Sun"], 3600*24*365*2.)[1]
|
||||
p2_path = prop(zeros(100,3), p2_state, sc, μs["Sun"], 3600*24*365*8.)[1]
|
||||
leg1, leg1_final = prop(zeros(400,3),
|
||||
earth_state+[zeros(3);v∞s[1];start_mass],
|
||||
copy(sc),
|
||||
μs["Sun"],
|
||||
leg1_tof)
|
||||
leg2, leg2_final = prop(zeros(400,3),
|
||||
p1_state+[zeros(3);v∞s[3];start_mass],
|
||||
copy(sc),
|
||||
μs["Sun"],
|
||||
leg2_tof)
|
||||
savefig(plot_orbits( [earth, p1_path, p2_path, leg1, leg2],
|
||||
primary="Sun",
|
||||
labels=["Earth", p1, p2, "Leg 1", "Leg 2"],
|
||||
title="Inner Loop without thrusting",
|
||||
colors=["#0000FF", "#FF0000", "#FFFF00", "#FF00FF", "#00FFFF"] ),
|
||||
"../plots/inner_loop_before.html")
|
||||
|
||||
@test result == "One path did not converge"
|
||||
# The first leg should be valid
|
||||
fresh_sc = copy(sc)
|
||||
mass, thrusts = inner_loop( launch_date,
|
||||
sc,
|
||||
start_mass,
|
||||
[phase1],
|
||||
verbose=true,
|
||||
mbh_specs=(25,50) )
|
||||
@test sc.mass > sc.dry_mass
|
||||
path, final = prop(thrusts[1], earth_state+[zeros(3);v∞s[1]], fresh_sc, μs["Sun"], leg1_tof)
|
||||
@test final ≈ p1_state + [zeros(3); v∞s[2]]
|
||||
savefig(plot_orbits( [earth, p1_path, path],
|
||||
primary="Sun",
|
||||
labels=["Earth", p1, "Leg 1"],
|
||||
title="Inner Loop with thrusting",
|
||||
colors=["#0000FF", "#FF0000", "#FF00FF"] ),
|
||||
"../plots/inner_loop_after.html")
|
||||
|
||||
# The second one was too hard to figure out on my own, so I'm letting it fail
|
||||
@test_throws ErrorException inner_loop( launch_date,
|
||||
sc,
|
||||
start_mass,
|
||||
[phase1, phase2],
|
||||
verbose=true,
|
||||
mbh_specs=(10,10) )
|
||||
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user