Added a sun test case and interpolation

This commit is contained in:
Connor
2021-09-25 17:32:11 -06:00
parent af545ba1a7
commit 27702ba3f8
6 changed files with 62 additions and 31 deletions

View File

@@ -4,11 +4,12 @@
using NLsolve, PlotlyJS
# First we'll test an Earth case
# Initial Setup
T = rand( 2hour : second : 12hour)
revs = 5
n = 10revs
start_mass = 12_000.
T = rand( 8hour : second : day )
revs = 3
n = 10 * revs
start_mass = 10_000.
# A simple orbit raising
start = gen_orbit(T, start_mass, Earth)
@@ -19,7 +20,7 @@
# This should be close enough to converge
thrust_guess = spiral(0.88, n, start, test_sc, revs*T, Earth)
result = solve_phase(start, final, test_sc, revs*T, thrust_guess, Earth)
calc_path, calc_final = prop(result.zero, start, test_sc, revs*T, Earth)
calc_path, calc_final = prop(result.zero, start, test_sc, revs*T, Earth, interpolate=true)
# Test
@test converged(result)
@@ -34,6 +35,35 @@
fig = plot_orbits(paths, Earth,
labels=["init", "transit", "post-transit", "final"],
colors=["#FFF","#F44","#4F4","#44F"])
savefig(fig, "../plots/nlp_test.html")
savefig(fig, "../plots/nlp_test_earth.html")
# Now the sun case
T = rand( 0.5year : hour : 1.5year )
n = 20
start_mass = 12_000.
# A simple orbit raising again, to keep things simple
start = gen_orbit(T, start_mass)
thrust = spiral(0.6, n, start, bepi, revs*T)
final = prop(thrust, start, bepi, revs*T)[2]
new_T = 2π * ( xyz_to_oe(final, Sun.μ)[1]^3 / Sun.μ )
# This should be close enough to converge
thrust_guess = spiral(0.55, n, start, bepi, revs*T)
result = solve_phase(start, final, bepi, revs*T, thrust_guess)
calc_path, calc_final = prop(result.zero, start, bepi, revs*T, interpolate=true)
# Test
@test converged(result)
@test norm(calc_final[1:6] - final[1:6]) < 1e-5
# Plot
paths = Pathlist()
push!(paths, prop(start, T), calc_path, prop(calc_final, T), prop(final, T) )
fig = plot_orbits(paths,
labels=["init", "transit", "post-transit", "final"],
colors=["#FFF","#F44","#4F4","#44F"])
savefig(fig, "../plots/nlp_test_sun.html")
end