Example - 77 - Uranus Orbiter - Coast Phase and First Orbit

In this example, we illustrate the use of AMA.orbiter.Orbiter module to compute the hyperbolic approach trajectory, the conditions at atmospheric exit after aerocapture, trajectory of the coast phase after atmospheric exit, and the first full orbit after periapsis raise manuever.

[1]:
import numpy as np

from AMAT.planet import Planet
from AMAT.vehicle import Vehicle
from AMAT.approach import Approach
from AMAT.orbiter import Orbiter

Compute the approach trajectory

[2]:
probe1 = Approach("URANUS",
                  v_inf_vec_icrf_kms=np.array([-9.62521831, 16.51192666, 7.46493598]),
                  rp=(25559 + 345) * 1e3, psi=np.pi,
                  is_entrySystem=True, h_EI=1000e3)

theta_star_arr_probe1 = np.linspace(-1.8, probe1.theta_star_entry, 101)
pos_vec_bi_arr_probe1 = probe1.pos_vec_bi(theta_star_arr_probe1) / 25559e3

x_arr_probe1 = pos_vec_bi_arr_probe1[0][:]
y_arr_probe1 = pos_vec_bi_arr_probe1[1][:]
z_arr_probe1 = pos_vec_bi_arr_probe1[2][:]

Compute the aerocapture corridor

[3]:
# setup the Planet object
planet=Planet("URANUS")
planet.h_skip = 1000e3
planet.loadAtmosphereModel('../atmdata/Uranus/uranus-gram-avg.dat', 0 , 1 ,2, 3, heightInKmFlag=True)
planet.h_low = 120e3
planet.h_trap= 100e3

# Setup the vehicle object : assume m=3000 kg, beta=200 kg/m2
vehicle=Vehicle('Titania', 3200.0, 146 , 0.24, np.pi*4.5**2.0, 0.0, 1.125, planet)
vehicle.setInitialState(1000.0,-15.22,75.55,29.2877,88.687,-11.0 ,0.0,0.0)
vehicle.setSolverParams(1E-6)

# Compute the corridor bounds and TCW
overShootLimit, exitflag_os  = vehicle.findOverShootLimit2(2400.0,0.1,-25,-4.0,1E-10,500e3)
underShootLimit, exitflag_us  = vehicle.findUnderShootLimit2(2400.0,0.1,-25 ,-4.0,1E-10,500e3)

# print the overshoot and undershoot limits we just computed.
print("Overshoot  limit : "+str('{:.4f}'.format(overShootLimit))+ " deg")
print("Undershoot limit : "+str('{:.4f}'.format(underShootLimit))+ " deg")
print("TCW: "+ str('{:.4f}'.format(overShootLimit-underShootLimit))+ " deg")
Overshoot  limit : -11.0088 deg
Undershoot limit : -12.0264 deg
TCW: 1.0176 deg

Get a propagated vehicle object with an exit state

[4]:
# propogate the overshoot trajectory
vehicle.setInitialState(1000.0,-15.22,75.55,29.2877,88.687,overShootLimit,0.0,0.0)
vehicle.propogateEntry2(2400.0,0.1,180.0)

Compute the coast phase trajectory, PRM dv, and full orbit trajectory

[5]:
orbiter = Orbiter(vehicle, peri_alt_km=4000.0)
[6]:
# print the periapsis raise manuever DV
print("PRM DV VEC, m/s: "+str(orbiter.PRM_dv_vec))
print("PRM DV MAG, m/s: "+str(orbiter.PRM_dv_mag))
PRM DV VEC, m/s: [ 64.07245044 -12.31975871   8.76878289]
PRM DV MAG, m/s: 65.83271916788875

Run the file example-77-uranus-orbiter-coast-and-orbit.py for a visualization of the hyperbolic approach, coast phase and the final orbit trajectory.

[7]:
from IPython.display import Image
Image(filename="../plots/example-77-uranus-coast-and-orbit.png", width=1200)
[7]:
../_images/examples_example-77-uranus-orbiter-coast-and-orbit_13_0.png