17 - Comparative Studies

[1]:
from AMAT.planet import Planet
from AMAT.vehicle import Vehicle
[2]:
import numpy as np
import matplotlib.pyplot as plt
[3]:
planet1 = Planet('VENUS')
planet2 = Planet('EARTH')
planet3 = Planet('MARS')
planet4 = Planet('JUPITER')
planet5 = Planet('SATURN')
planet6 = Planet('TITAN')
planet7 = Planet('URANUS')
planet8 = Planet('NEPTUNE')
[5]:
planet1.loadAtmosphereModel('../atmdata/Venus/venus-gram-avg.dat', 0 , 1 ,2, 3)
planet2.loadAtmosphereModel('../atmdata/Earth/earth-gram-avg.dat', 0 , 1 ,2, 3)
planet3.loadAtmosphereModel('../atmdata/Mars/mars-gram-avg.dat', 0 , 1 , 2, 3)
planet4.loadAtmosphereModel('../atmdata/Jupiter/jupiter-galileo-asi.dat', 0 , 1 , 2, 3, heightInKmFlag=True)
planet5.loadAtmosphereModel('../atmdata/Saturn/saturn-nominal.dat', 0 , 1 , 2, 3, heightInKmFlag=True)
planet6.loadAtmosphereModel('../atmdata/Titan/titan-gram-avg.dat', 0 , 1 , 2, 3)
planet7.loadAtmosphereModel('../atmdata/Uranus/uranus-ames.dat', 0 , 1 , 2, 3)
planet8.loadAtmosphereModel('../atmdata/Neptune/neptune-gram-avg.dat', 0 , 7 ,6, 5 , heightInKmFlag=True)
[6]:
planet1.h_skip = 150E3
planet2.h_skip = 140E3
planet3.h_skip = 120E3
planet4.h_skip = 1000E3
planet5.h_skip = 1000E3
planet6.h_skip = 1000E3
planet7.h_skip = 1000E3
planet8.h_skip = 1000E3
[7]:
vehicle1=Vehicle('Venus',  1000.0, 200.0, 0.30, 3.1416, 0.0, 1.00, planet1)
vehicle2=Vehicle('Earth',  1000.0, 200.0, 0.30, 3.1416, 0.0, 1.00, planet2)
vehicle3=Vehicle('Mars' ,  1000.0, 200.0, 0.30, 3.1416, 0.0, 1.00, planet3)
vehicle4=Vehicle('Jupiter',1000.0, 200.0, 0.30, 3.1416, 0.0, 1.00, planet4)
vehicle5=Vehicle('Saturn' ,1000.0, 200.0, 0.30, 3.1416, 0.0, 1.00, planet5)
vehicle6=Vehicle('Titan'  ,1000.0, 200.0, 0.30, 3.1416, 0.0, 1.00, planet6)
vehicle7=Vehicle('Uranus' ,1000.0, 200.0, 0.30, 3.1416, 0.0, 1.00, planet7)
vehicle8=Vehicle('Neptune',1000.0, 200.0, 0.30, 3.1416, 0.0, 1.00, planet8)
[8]:
print("VENUS")
print(np.sqrt(0.0E3**2+2*planet1.GM/(planet1.h_skip+planet1.RP))/1E3)
print(np.sqrt(6.0E3**2+2*planet1.GM/(planet1.h_skip+planet1.RP))/1E3)
print("EARTH")
print(np.sqrt(0.0E3**2+2*planet2.GM/(planet2.h_skip+planet2.RP))/1E3)
print(np.sqrt(6.0E3**2+2*planet2.GM/(planet2.h_skip+planet2.RP))/1E3)
print("MARS")
print(np.sqrt(0.0E3**2+2*planet3.GM/(planet3.h_skip+planet3.RP))/1E3)
print(np.sqrt(6.0E3**2+2*planet3.GM/(planet3.h_skip+planet3.RP))/1E3)
print("JUPITER")
print(np.sqrt(5.0E3**2+2*planet4.GM/(planet4.h_skip+planet4.RP))/1E3)
print(np.sqrt(10.0E3**2+2*planet4.GM/(planet4.h_skip+planet4.RP))/1E3)
print("SATURN")
print(np.sqrt(5.0E3**2+2*planet5.GM/(planet5.h_skip+planet5.RP))/1E3)
print(np.sqrt(10.0E3**2+2*planet5.GM/(planet5.h_skip+planet5.RP))/1E3)
print("TITAN")
print(np.sqrt(5.0E3**2+2*planet6.GM/(planet6.h_skip+planet6.RP))/1E3)
print(np.sqrt(10.0E3**2+2*planet6.GM/(planet6.h_skip+planet6.RP))/1E3)
print("URANUS")
print(np.sqrt(10.0E3**2+2*planet7.GM/(planet7.h_skip+planet7.RP))/1E3)
print(np.sqrt(20.0E3**2+2*planet7.GM/(planet7.h_skip+planet7.RP))/1E3)
print("NEPTUNE")
print(np.sqrt(10.0E3**2+2*planet8.GM/(planet8.h_skip+planet8.RP))/1E3)
print(np.sqrt(20.0E3**2+2*planet8.GM/(planet8.h_skip+planet8.RP))/1E3)
VENUS
10.235384752669699
11.864362647659727
EARTH
11.06521903710534
12.58725833289833
MARS
4.940354888610406
7.772200873974933
JUPITER
59.984279058078336
60.606218609293016
SATURN
36.135394199294566
37.15866943175457
TITAN
5.479293507620972
10.248056271442763
URANUS
23.158303361242414
28.918973262744508
NEPTUNE
25.172312110936126
30.555609910626586
[9]:
print("VENUS")
v1a = (np.sqrt(0.0E3**2+2*planet1.GM/(planet1.h_skip+planet1.RP))/1E3)
v1b = (np.sqrt(6.0E3**2+2*planet1.GM/(planet1.h_skip+planet1.RP))/1E3)
print("EARTH")
v2a = (np.sqrt(0.0E3**2+2*planet2.GM/(planet2.h_skip+planet2.RP))/1E3)
v2b = (np.sqrt(6.0E3**2+2*planet2.GM/(planet2.h_skip+planet2.RP))/1E3)
print("MARS")
v3a = (np.sqrt(0.0E3**2+2*planet3.GM/(planet3.h_skip+planet3.RP))/1E3)
v3b = (np.sqrt(6.0E3**2+2*planet3.GM/(planet3.h_skip+planet3.RP))/1E3)
print("JUPITER")
v4a = (np.sqrt(5.0E3**2+2*planet4.GM/(planet4.h_skip+planet4.RP))/1E3)
v4b = (np.sqrt(10.0E3**2+2*planet4.GM/(planet4.h_skip+planet4.RP))/1E3)
print("SATURN")
v5a = (np.sqrt(5.0E3**2+2*planet5.GM/(planet5.h_skip+planet5.RP))/1E3)
v5b = (np.sqrt(10.0E3**2+2*planet5.GM/(planet5.h_skip+planet5.RP))/1E3)
print("TITAN")
v6a = (np.sqrt(5.0E3**2+2*planet6.GM/(planet6.h_skip+planet6.RP))/1E3)
v6b = (np.sqrt(10.0E3**2+2*planet6.GM/(planet6.h_skip+planet6.RP))/1E3)
print("URANUS")
v7a = (np.sqrt(10.0E3**2+2*planet7.GM/(planet7.h_skip+planet7.RP))/1E3)
v7b = (np.sqrt(20.0E3**2+2*planet7.GM/(planet7.h_skip+planet7.RP))/1E3)
print("NEPTUNE")
v8a = (np.sqrt(10.0E3**2+2*planet8.GM/(planet8.h_skip+planet8.RP))/1E3)
v8b = (np.sqrt(20.0E3**2+2*planet8.GM/(planet8.h_skip+planet8.RP))/1E3)
VENUS
EARTH
MARS
JUPITER
SATURN
TITAN
URANUS
NEPTUNE
[25]:
vehicle1.setInitialState (150.0,0.0,0.0,11.0,0.0,-4.5,0.0,0.0)
vehicle2.setInitialState (140.0,0.0,0.0,11.5,0.0,-4.5,0.0,0.0)
vehicle3.setInitialState (120.0,0.0,0.0, 7.0,0.0,-4.5,0.0,0.0)
vehicle4.setInitialState(1000.0,0.0,0.0,60.0,0.0,-4.5,0.0,0.0)
vehicle5.setInitialState(1000.0,0.0,0.0,36.0,0.0,-4.5,0.0,0.0)
vehicle6.setInitialState(1000.0,0.0,0.0, 7.5,0.0,-4.5,0.0,0.0)
vehicle7.setInitialState(1000.0,0.0,0.0,25.0,0.0,-4.5,0.0,0.0)
vehicle8.setInitialState(1000.0,0.0,0.0,27.5,0.0,-4.5,0.0,0.0)
[11]:
vehicle1.setSolverParams(1E-6)
vehicle2.setSolverParams(1E-6)
vehicle3.setSolverParams(1E-6)
vehicle4.setSolverParams(1E-6)
vehicle5.setSolverParams(1E-6)
vehicle6.setSolverParams(1E-6)
vehicle7.setSolverParams(1E-6)
vehicle8.setSolverParams(1E-6)
[12]:
overShootLimit1, exitflag_os1  = vehicle1.findOverShootLimit (2400.0,0.1,-80.0,-4.0,1E-10,400.0)
underShootLimit1,exitflag_us1  = vehicle1.findUnderShootLimit(2400.0,0.1,-80.0,-4.0,1E-10,400.0)
[13]:
print(overShootLimit1, exitflag_os1)
print(underShootLimit1,exitflag_us1)
-5.337756426539272 1.0
-7.068433752585406 1.0
[14]:
overShootLimit2, exitflag_os2  = vehicle2.findOverShootLimit (2400.0,0.1,-80.0,-4.0,1E-10,400.0)
underShootLimit2,exitflag_us2  = vehicle2.findUnderShootLimit(2400.0,0.1,-80.0,-4.0,1E-10,400.0)
[15]:
print(overShootLimit2, exitflag_os2)
print(underShootLimit2,exitflag_us2)
-6.3867313949158415 1.0
-8.141700465788745 1.0
[16]:
overShootLimit3, exitflag_os3  = vehicle3.findOverShootLimit (2400.0,0.1,-30.0,-2.0,1E-10,400.0)
underShootLimit3,exitflag_us3  = vehicle3.findUnderShootLimit(2400.0,0.1,-30.0,-2.0,1E-10,400.0)
C:\Users\AthulGirija\anaconda3\envs\env1\lib\site-packages\scipy\integrate\odepack.py:247: ODEintWarning: Excess work done on this call (perhaps wrong Dfun type). Run with full_output = 1 to get quantitative information.
  warnings.warn(warning_msg, ODEintWarning)
[17]:
print(overShootLimit3, exitflag_os3)
print(underShootLimit3,exitflag_us3)
-10.656794067006558 1.0
-13.765197287466435 1.0
[18]:
planet4.h_trap = -130.0E3
planet4.h_low  = 50.0E3

overShootLimit4, exitflag_os4  = vehicle4.findOverShootLimit (2400.0,0.1,-80.0,-4.0,1E-10,430E3)
underShootLimit4,exitflag_us4  = vehicle4.findUnderShootLimit(2400.0,0.1,-80.0,-4.0,1E-10,430E3)
[19]:
print(overShootLimit4, exitflag_os4)
print(underShootLimit4,exitflag_us4)
-8.190509113308508 1.0
-8.361646710389323 1.0
[20]:
planet5.h_low  = 50.0E3

overShootLimit5, exitflag_os5  = vehicle5.findOverShootLimit (2400.0,0.1,-80.0,-4.0,1E-10,263E3)
underShootLimit5,exitflag_us5  = vehicle5.findUnderShootLimit(2400.0,0.1,-80.0,-4.0,1E-10,263E3)
[21]:
print(overShootLimit5, exitflag_os5)
print(underShootLimit5,exitflag_us5)
-6.708508475014241 1.0
-7.192161418864998 1.0
[22]:
overShootLimit6, exitflag_os6  = vehicle6.findOverShootLimit (6000.0,0.1,-80.0,-4.0,1E-10,1700.0)
underShootLimit6,exitflag_us6  = vehicle6.findUnderShootLimit(6000.0,0.1,-80.0,-4.0,1E-10,1700.0)
[23]:
print(overShootLimit6, exitflag_os6)
print(underShootLimit6,exitflag_us6)
-35.511385259556846 1.0
-40.08044252597756 1.0
[26]:
overShootLimit7, exitflag_os7  = vehicle7.findOverShootLimit (2400.0,1.0,-50.0,-4.0,1E-10,900E3)
underShootLimit7,exitflag_us7  = vehicle7.findUnderShootLimit(2400.0,1.0,-50.0,-4.0,1E-10,900E3)
[27]:
print(overShootLimit7, exitflag_os7)
print(underShootLimit7,exitflag_us7)
-8.378781035331485 1.0
-9.03231991237044 1.0
[28]:
overShootLimit8, exitflag_os8  = vehicle8.findOverShootLimit (3000.0,0.1,-50.0,-4.0,1E-10,400E3)
underShootLimit8,exitflag_us8  = vehicle8.findUnderShootLimit(3000.0,0.1,-50.0,-4.0,1E-10,400E3)
[29]:
print(overShootLimit8, exitflag_os8)
print(underShootLimit8,exitflag_us8)
-12.738614854639309 1.0
-13.40074354888202 1.0
[32]:
import os
[30]:
from matplotlib import pyplot as plt
from matplotlib.patches import Rectangle

%matplotlib inline
[33]:
os.makedirs('../data/jsr-paper/comparative-studies/')
[34]:
params = {'mathtext.default': 'regular' }
plt.rcParams.update(params)

plt.figure(figsize=(6.25,6.25))
ax = plt.gca()
ax.add_patch(Rectangle((v1a,underShootLimit1), v1b-v1a, overShootLimit1-underShootLimit1, alpha=1, facecolor='xkcd:orange'))
ax.add_patch(Rectangle((v2a,underShootLimit2), v2b-v2a, overShootLimit2-underShootLimit2, alpha=1, facecolor='xkcd:pastel blue'))
ax.add_patch(Rectangle((v3a,underShootLimit3), v3b-v3a, overShootLimit3-underShootLimit3, alpha=1, facecolor='xkcd:light red'))
ax.add_patch(Rectangle((v4a,underShootLimit4), v4b-v4a, overShootLimit4-underShootLimit4, alpha=1, facecolor='xkcd:amber'))
ax.add_patch(Rectangle((v6a,underShootLimit6), v6b-v6a, overShootLimit6-underShootLimit6, alpha=1, facecolor='xkcd:goldenrod'))
ax.add_patch(Rectangle((v7a,underShootLimit7), v7b-v7a, overShootLimit7-underShootLimit7, alpha=1, facecolor='xkcd:light turquoise'))
ax.add_patch(Rectangle((v8a,underShootLimit8), v8b-v8a, overShootLimit8-underShootLimit8, alpha=1, facecolor='xkcd:cerulean blue'))

plt.text( 6, -7, 'Venus' ,color='xkcd:orange', fontsize=12)
plt.text( 13, -8, 'Earth' ,color='xkcd:pastel blue', fontsize=12)
plt.text( 8, -13, 'Mars' ,color='xkcd:light red', fontsize=12)
plt.text( 6.3, -35, 'Titan' ,color='xkcd:goldenrod', fontsize=12)
plt.text( 23.5, -10.5, 'Uranus' ,color='xkcd:light turquoise', fontsize=12)
plt.text( 24.5, -14.9, 'Neptune' ,color='xkcd:cerulean blue', fontsize=12)

plt.xlim([2.0, 30.0])
plt.ylim([-40.0, -2.0])

plt.xlabel('Entry speed '+r'$V_e$, km/s', fontsize=16)
plt.ylabel('Entry flight path angle '+r'$\gamma_e$, deg', fontsize=16)

ax.tick_params(direction='in')
ax.yaxis.set_ticks_position('both')
ax.xaxis.set_ticks_position('both')
ax.tick_params(axis='x',labelsize=16)
ax.tick_params(axis='y',labelsize=16)

plt.savefig('../data/jsr-paper/comparative-studies/v-gamma-lift-modulation.png', dpi= 300,bbox_inches='tight')
plt.savefig('../data/jsr-paper/comparative-studies/v-gamma-lift-modulation.pdf', dpi=300,bbox_inches='tight')
plt.savefig('../data/jsr-paper/comparative-studies/v-gamma-lift-modulation.eps', dpi=300,bbox_inches='tight')
../_images/jsr-notebooks_17-comparative-studies_30_0.png
[35]:
vehicle1D=Vehicle('Venus',  200.0, 20.0, 0.00, 3.1416, 0.0, 0.10, planet1)
vehicle2D=Vehicle('Earth',  200.0, 20.0, 0.00, 3.1416, 0.0, 0.10, planet2)
vehicle3D=Vehicle('Mars' ,  200.0, 20.0, 0.00, 3.1416, 0.0, 0.10, planet3)
vehicle4D=Vehicle('Jupiter',200.0, 20.0, 0.00, 3.1416, 0.0, 0.10, planet4)
vehicle5D=Vehicle('Saturn' ,200.0, 20.0, 0.00, 3.1416, 0.0, 0.10, planet5)
vehicle6D=Vehicle('Titan'  ,200.0, 20.0, 0.00, 3.1416, 0.0, 0.10, planet6)
vehicle7D=Vehicle('Uranus' ,200.0, 20.0, 0.00, 3.1416, 0.0, 0.10, planet7)
vehicle8D=Vehicle('Neptune',200.0, 20.0, 0.00, 3.1416, 0.0, 0.10, planet8)
[36]:
vehicle1D.setInitialState (150.0,0.0,0.0,11.0,0.0,-4.5,0.0,0.0)
vehicle2D.setInitialState (140.0,0.0,0.0,11.5,0.0,-4.5,0.0,0.0)
vehicle3D.setInitialState (120.0,0.0,0.0, 7.0,0.0,-4.5,0.0,0.0)
vehicle4D.setInitialState(1000.0,0.0,0.0,60.0,0.0,-4.5,0.0,0.0)
vehicle5D.setInitialState(1000.0,0.0,0.0,36.0,0.0,-4.5,0.0,0.0)
vehicle6D.setInitialState(1000.0,0.0,0.0, 7.5,0.0,-4.5,0.0,0.0)
vehicle7D.setInitialState(1000.0,0.0,0.0,25.0,0.0,-4.5,0.0,0.0)
vehicle8D.setInitialState(1000.0,0.0,0.0,27.5,0.0,-4.5,0.0,0.0)
[37]:
vehicle1D.setSolverParams(1E-6)
vehicle2D.setSolverParams(1E-6)
vehicle3D.setSolverParams(1E-6)
vehicle4D.setSolverParams(1E-6)
vehicle5D.setSolverParams(1E-6)
vehicle6D.setSolverParams(1E-6)
vehicle7D.setSolverParams(1E-6)
vehicle8D.setSolverParams(1E-6)
[38]:
vehicle1D.setDragModulationVehicleParams(20.0,7.0)
vehicle2D.setDragModulationVehicleParams(20.0,7.0)
vehicle3D.setDragModulationVehicleParams(20.0,7.0)
vehicle4D.setDragModulationVehicleParams(20.0,7.0)
vehicle5D.setDragModulationVehicleParams(20.0,7.0)
vehicle6D.setDragModulationVehicleParams(20.0,7.0)
vehicle7D.setDragModulationVehicleParams(20.0,7.0)
vehicle8D.setDragModulationVehicleParams(20.0,7.0)
[39]:
overShootLimit1D, exitflag_os1D  = vehicle1D.findOverShootLimitD(2400.0,0.1,-80.0,-4.0,1E-10,400.0)
underShootLimit1D,exitflag_us1D  = vehicle1D.findUnderShootLimitD(2400.0,0.1,-80.0,-4.0,1E-10,400.0)
[40]:
print(overShootLimit1D, exitflag_os1D)
print(underShootLimit1D,exitflag_us1D)
-5.203492604807252 1.0
-5.614676727258484 1.0
[41]:
overShootLimit2D, exitflag_os2D  = vehicle2D.findOverShootLimitD(2400.0,0.1,-80.0,-4.0,1E-10,400.0)
underShootLimit2D,exitflag_us2D  = vehicle2D.findUnderShootLimitD(2400.0,0.1,-80.0,-4.0,1E-10,400.0)
[42]:
print(overShootLimit2D, exitflag_os2D)
print(underShootLimit2D,exitflag_us2D)
-6.103771843398135 1.0
-6.732959025812306 1.0
[43]:
overShootLimit3D, exitflag_os3D  = vehicle3D.findOverShootLimitD(2400.0,0.1,-80.0,-4.0,1E-10,400.0)
underShootLimit3D,exitflag_us3D  = vehicle3D.findUnderShootLimitD(2400.0,0.1,-80.0,-4.0,1E-10,400.0)
[44]:
print(overShootLimit3D, exitflag_os3D)
print(underShootLimit3D,exitflag_us3D)
-10.193927379001252 1.0
-11.291493911885482 1.0
[54]:
overShootLimit4D, exitflag_os4D  = vehicle4D.findOverShootLimitD(2400.0,0.1,-30.0,-4.0,1E-10,4E3)
underShootLimit4D,exitflag_us4D  = vehicle4D.findUnderShootLimitD(2400.0,0.1,-30.0,-4.0,1E-10,4E3)
[55]:
print(overShootLimit4D, exitflag_os4D)
print(underShootLimit4D,exitflag_us4D)
-8.176375376337091 1.0
-8.432869144795404 1.0
[56]:
overShootLimit5D, exitflag_os5D  = vehicle5D.findOverShootLimitD(2400.0,0.1,-20.0,-4.0,1E-10,4E3)
underShootLimit5D,exitflag_us5D  = vehicle5D.findUnderShootLimitD(2400.0,0.1,-20.0,-4.0,1E-10,4E3)
[57]:
print(overShootLimit5D, exitflag_os5D)
print(underShootLimit5D,exitflag_us5D)
-6.428392354224343 1.0
-7.476114542689174 1.0
[58]:
overShootLimit6D, exitflag_os6D  = vehicle6D.findOverShootLimitD(6000.0,0.1,-80.0,-4.0,1E-10,1700.0)
underShootLimit6D,exitflag_us6D  = vehicle6D.findUnderShootLimitD(6000.0,0.1,-80.0,-4.0,1E-10,1700.0)
[59]:
print(overShootLimit6D, exitflag_os6D)
print(underShootLimit6D,exitflag_us6D)
-34.00011686890866 1.0
-36.610938443158375 1.0
[60]:
overShootLimit7D, exitflag_os7D  = vehicle7D.findOverShootLimitD(3000.0,0.1,-20.0,-4.0,1E-10,4E3)
underShootLimit7D,exitflag_us7D  = vehicle7D.findUnderShootLimitD(3000.0,0.1,-20.0,-4.0,1E-10,4E3)
[61]:
print(overShootLimit7D, exitflag_os7D)
print(underShootLimit7D,exitflag_us7D)
-8.112847047974356 1.0
-8.650135981675703 1.0
[62]:
overShootLimit8D, exitflag_os8D  = vehicle8D.findOverShootLimitD(3000.0,0.1,-20.0,-4.0,1E-10,4E3)
underShootLimit8D,exitflag_us8D  = vehicle8D.findUnderShootLimitD(3000.0,0.1,-20.0,-4.0,1E-10,4E3)
[63]:
print(overShootLimit8D, exitflag_os8D)
print(underShootLimit8D,exitflag_us8D)
-12.40664541971637 1.0
-13.19187773426529 1.0
[66]:
params = {'mathtext.default': 'regular' }
plt.rcParams.update(params)

plt.figure(figsize=(6.25,6.25))
ax = plt.gca()
ax.add_patch(Rectangle((v1a,underShootLimit1), v1b-v1a, overShootLimit1-underShootLimit1, alpha=1, facecolor='xkcd:orange', hatch='|||||'))
ax.add_patch(Rectangle((v2a,underShootLimit2), v2b-v2a, overShootLimit2-underShootLimit2, alpha=1, facecolor='xkcd:pastel blue', hatch='|||||'))
ax.add_patch(Rectangle((v3a,underShootLimit3), v3b-v3a, overShootLimit3-underShootLimit3, alpha=1, facecolor='xkcd:light red', hatch='|||||'))
ax.add_patch(Rectangle((v4a,underShootLimit4), v4b-v4a, overShootLimit4-underShootLimit4, alpha=1, facecolor='xkcd:amber', hatch='|||||'))
ax.add_patch(Rectangle((v6a,underShootLimit6), v6b-v6a, overShootLimit6-underShootLimit6, alpha=1, facecolor='xkcd:goldenrod', hatch='|||||'))
ax.add_patch(Rectangle((v7a,underShootLimit7), v7b-v7a, overShootLimit7-underShootLimit7, alpha=1, facecolor='xkcd:light turquoise', hatch='|||||'))
ax.add_patch(Rectangle((v8a,underShootLimit8), v8b-v8a, overShootLimit8-underShootLimit8, alpha=1, facecolor='xkcd:cerulean blue', hatch='|||||'))

ax.add_patch(Rectangle((v1a,underShootLimit1D), v1b-v1a, overShootLimit1D-underShootLimit1D, alpha=1, edgecolor='xkcd:black', facecolor='None', linewidth=0.2, hatch='xxxxxxx'))
ax.add_patch(Rectangle((v2a,underShootLimit2D), v2b-v2a, overShootLimit2D-underShootLimit2D, alpha=1, edgecolor='xkcd:black', facecolor='None', linewidth=0.2, hatch='xxxxxxx'))
ax.add_patch(Rectangle((v3a,underShootLimit3D), v3b-v3a, overShootLimit3D-underShootLimit3D, alpha=1, edgecolor='xkcd:black', facecolor='None', linewidth=0.2, hatch='xxxx'))
ax.add_patch(Rectangle((v6a,underShootLimit6D), v6b-v6a, overShootLimit6D-underShootLimit6D, alpha=1, edgecolor='xkcd:black', facecolor='None', linewidth=0.2, hatch='xxxx'))
ax.add_patch(Rectangle((v7a,underShootLimit7D), v7b-v7a, overShootLimit7D-underShootLimit7D, alpha=1, edgecolor='xkcd:black', facecolor='None', linewidth=0.2, hatch='xxxxxx'))
ax.add_patch(Rectangle((v8a,underShootLimit8D), v8b-v8a, overShootLimit8D-underShootLimit8D, alpha=1, edgecolor='xkcd:black', facecolor='None', linewidth=0.2, hatch='xxxxxx'))

ax.add_patch(Rectangle((15.5, -30-5), 3.0, 2.0, alpha=1, edgecolor='xkcd:black', facecolor='None', linewidth=0.2, hatch='|||||'))
ax.add_patch(Rectangle((15.5, -33-5), 3.0, 2.0, alpha=1, edgecolor='xkcd:black', facecolor='None', linewidth=0.2, hatch='xxxxx'))


plt.text( 6, -7, 'Venus' ,color='xkcd:orange', fontsize=16)
plt.text( 13, -8, 'Earth' ,color='xkcd:pastel blue', fontsize=16)
plt.text( 8, -13, 'Mars' ,color='xkcd:light red', fontsize=16)
plt.text( 6.2, -33, 'Titan' ,color='xkcd:goldenrod', fontsize=16)
plt.text( 23.5, -10.5, 'Uranus' ,color='xkcd:light turquoise', fontsize=16)
plt.text( 24.5, -14.9, 'Neptune' ,color='xkcd:cerulean blue', fontsize=16)

plt.text( 19, -29.6-5, 'Lift modulation' ,color='xkcd:black', fontsize=16)
plt.text( 19, -32.6-5, 'Drag modulation' ,color='xkcd:black', fontsize=16)


plt.xlim([2.0, 30.0])
plt.ylim([-40.0, -2.0])

plt.xlabel('Entry speed '+r'$V_e$, km/s', fontsize=16)
plt.ylabel('Entry flight path angle '+r'$\gamma_e$, deg', fontsize=16)

ax.tick_params(direction='in')
ax.yaxis.set_ticks_position('both')
ax.xaxis.set_ticks_position('both')
ax.tick_params(axis='x',labelsize=16)
ax.tick_params(axis='y',labelsize=16)

plt.savefig('../data/jsr-paper/comparative-studies/v-gamma-lift-drag-modulation.png', dpi= 300,bbox_inches='tight')
plt.savefig('../data/jsr-paper/comparative-studies/v-gamma-lift-drag-modulation.pdf', dpi=300,bbox_inches='tight')
plt.savefig('../data/jsr-paper/comparative-studies/v-gamma-lift-drag-modulation.eps', dpi=300,bbox_inches='tight')
../_images/jsr-notebooks_17-comparative-studies_51_0.png
[67]:
TCW1 = overShootLimit1-underShootLimit1
TCW2 = overShootLimit2-underShootLimit2
TCW3 = overShootLimit3-underShootLimit3
TCW4 = overShootLimit4-underShootLimit4
TCW5 = overShootLimit5-underShootLimit5
TCW6 = overShootLimit6-underShootLimit6
TCW7 = overShootLimit7-underShootLimit7
TCW8 = overShootLimit8-underShootLimit8
[68]:
print(TCW1,TCW2,TCW3,TCW4,TCW5,TCW6, TCW7, TCW8)
1.7306773260461341 1.754969070872903 3.108403220459877 0.17113759708081488 0.48365294385075686 4.569057266420714 0.6535388770389545 0.6621286942427105
[69]:
TCW1D = overShootLimit1D-underShootLimit1D
TCW2D = overShootLimit2D-underShootLimit2D
TCW3D = overShootLimit3D-underShootLimit3D
TCW4D = overShootLimit4D-underShootLimit4D
TCW5D = overShootLimit5D-underShootLimit5D
TCW6D = overShootLimit6D-underShootLimit6D
TCW7D = overShootLimit7D-underShootLimit7D
TCW8D = overShootLimit8D-underShootLimit8D
[70]:
print(TCW1D,TCW2D,TCW3D,TCW4D,TCW5D,TCW6D, TCW7D, TCW8D)
0.4111841224512318 0.6291871824141708 1.0975665328842297 0.25649376845831284 1.0477221884648316 2.6108215742497123 0.5372889337013476 0.7852323145489208
[74]:
params = {'mathtext.default': 'regular' }
plt.rcParams.update(params)

plt.figure(figsize=(12.25,6.25))

labels = [ 'Venus', 'Earth', 'Mars', 'Jupiter', 'Saturn', 'Titan', 'Uranus', 'Neptune']
TCW    = [TCW1,TCW2,TCW3,TCW4,TCW5,TCW6, TCW7, TCW8]
TCWD   = [TCW1D,TCW2D,TCW3D,TCW4D,TCW5D,TCW6D, TCW7D, TCW8D]

x = np.arange(len(labels))  # the label locations
width = 0.25  # the width of the bars

ax = plt.gca()
rects1 = ax.bar(x - width/2, TCW, width, label='Lift Modulation', color='black')
rects2 = ax.bar(x + width/2, TCWD, width, label='Drag Modulation', facecolor='None', edgecolor='black', linewidth=1.0)

# Add some text for labels, title and custom x-axis tick labels, etc.
ax.set_ylabel('Theoretical Corridor Width, deg', fontsize=16)
ax.set_xticks(x)
ax.set_xticklabels(labels, fontsize=16)
ax.legend(loc='upper left', fontsize=16)

ax.tick_params(direction='in')
ax.yaxis.set_ticks_position('both')
ax.xaxis.set_ticks_position('both')
ax.tick_params(axis='x',labelsize=16)
ax.tick_params(axis='y',labelsize=16)

plt.savefig('../data/jsr-paper/comparative-studies/tcw-histogram.png', dpi= 300,bbox_inches='tight')
plt.savefig('../data/jsr-paper/comparative-studies/tcw-histogram.pdf', dpi=300,bbox_inches='tight')
plt.savefig('../data/jsr-paper/comparative-studies/tcw-histogram.eps', dpi=300,bbox_inches='tight')
The PostScript backend does not support transparency; partially transparent artists will be rendered opaque.
The PostScript backend does not support transparency; partially transparent artists will be rendered opaque.
../_images/jsr-notebooks_17-comparative-studies_56_1.png
[75]:
vehicle1.setInitialState(150.0,0.0,0.0,11.0,0.0, underShootLimit1,0.0,0.0)
vehicle2.setInitialState (140.0,0.0,0.0,11.5,0.0,underShootLimit2,0.0,0.0)
vehicle3.setInitialState (120.0,0.0,0.0, 7.0,0.0,underShootLimit3,0.0,0.0)
vehicle4.setInitialState(1000.0,0.0,0.0,60.0,0.0,underShootLimit4,0.0,0.0)
vehicle5.setInitialState(1000.0,0.0,0.0,36.0,0.0,underShootLimit5,0.0,0.0)
vehicle6.setInitialState(1000.0,0.0,0.0, 7.5,0.0,underShootLimit6,0.0,0.0)
vehicle7.setInitialState(1000.0,0.0,0.0,25.0,0.0,underShootLimit7,0.0,0.0)
vehicle8.setInitialState(1000.0,0.0,0.0,27.5,0.0,underShootLimit8,0.0,0.0)
[76]:
vehicle1.propogateEntry(2400.0, 0.1, 0.0)
vehicle2.propogateEntry(2400.0, 0.1, 0.0)
vehicle3.propogateEntry(2400.0, 0.1, 0.0)
vehicle4.propogateEntry(2400.0, 0.1, 0.0)
vehicle5.propogateEntry(2400.0, 0.1, 0.0)
vehicle6.propogateEntry(6000.0, 0.1, 0.0)
vehicle7.propogateEntry(3000.0, 0.1, 0.0)
vehicle8.propogateEntry(3000.0, 0.1, 0.0)
[77]:
g1a = max(vehicle1.acc_net_g)
g2a = max(vehicle2.acc_net_g)
g3a = max(vehicle3.acc_net_g)
g4a = max(vehicle4.acc_net_g)
g5a = max(vehicle5.acc_net_g)
g6a = max(vehicle6.acc_net_g)
g7a = max(vehicle7.acc_net_g)
g8a = max(vehicle8.acc_net_g)
[78]:
print(g1a, g2a, g3a, g4a, g5a, g6a, g7a, g8a)
18.374017950196038 10.374594885516943 8.360047065222073 8.789301073476533 2.8857312714267533 5.505619347483617 3.343822672976156 5.796824037992481
[79]:
vehicle1.setInitialState(150.0,0.0,0.0,11.0,0.0, overShootLimit1,0.0,0.0)
vehicle2.setInitialState (140.0,0.0,0.0,11.5,0.0,overShootLimit2,0.0,0.0)
vehicle3.setInitialState (120.0,0.0,0.0, 7.0,0.0,overShootLimit3,0.0,0.0)
vehicle4.setInitialState(1000.0,0.0,0.0,60.0,0.0,overShootLimit4,0.0,0.0)
vehicle5.setInitialState(1000.0,0.0,0.0,36.0,0.0,overShootLimit5,0.0,0.0)
vehicle6.setInitialState(1000.0,0.0,0.0, 7.5,0.0,overShootLimit6,0.0,0.0)
vehicle7.setInitialState(1000.0,0.0,0.0,25.0,0.0,overShootLimit7,0.0,0.0)
vehicle8.setInitialState(1000.0,0.0,0.0,27.5,0.0,overShootLimit8,0.0,0.0)
[80]:
vehicle1.propogateEntry(2400.0, 0.1, 180.0)
vehicle2.propogateEntry(2400.0, 0.1, 180.0)
vehicle3.propogateEntry(2400.0, 0.1, 180.0)
vehicle4.propogateEntry(2400.0, 0.1, 180.0)
vehicle5.propogateEntry(2400.0, 0.1, 180.0)
vehicle6.propogateEntry(6000.0, 0.1, 180.0)
vehicle7.propogateEntry(3000.0, 0.1, 180.0)
vehicle8.propogateEntry(3000.0, 0.1, 180.0)
[81]:
g1b = max(vehicle1.acc_net_g)
g2b = max(vehicle2.acc_net_g)
g3b = max(vehicle3.acc_net_g)
g4b = max(vehicle4.acc_net_g)
g5b = max(vehicle5.acc_net_g)
g6b = max(vehicle6.acc_net_g)
g7b = max(vehicle7.acc_net_g)
g8b = max(vehicle8.acc_net_g)
[82]:
print(g1b, g2b, g3b, g4b, g5b, g6b, g7b, g8b)
2.316415423595727 2.3951724238463665 2.030574858793238 6.047715599187108 2.2109983102117203 2.1239918744654416 1.697074847865149 3.4556776816180337
[83]:
vehicle1D.setInitialState(150.0,0.0,0.0,11.0,0.0, underShootLimit1D,0.0,0.0)
vehicle2D.setInitialState (140.0,0.0,0.0,11.5,0.0,underShootLimit2D,0.0,0.0)
vehicle3D.setInitialState (120.0,0.0,0.0, 7.0,0.0,underShootLimit3D,0.0,0.0)
vehicle4D.setInitialState(1000.0,0.0,0.0,60.0,0.0,underShootLimit4D,0.0,0.0)
vehicle5D.setInitialState(1000.0,0.0,0.0,36.0,0.0,underShootLimit5D,0.0,0.0)
vehicle6D.setInitialState(1000.0,0.0,0.0, 7.5,0.0,underShootLimit6D,0.0,0.0)
vehicle7D.setInitialState(1000.0,0.0,0.0,25.0,0.0,underShootLimit7D,0.0,0.0)
vehicle8D.setInitialState(1000.0,0.0,0.0,27.5,0.0,underShootLimit8D,0.0,0.0)
[84]:
vehicle1D.propogateEntry(2400.0, 0.1, 0.0)
vehicle2D.propogateEntry(2400.0, 0.1, 0.0)
vehicle3D.propogateEntry(2400.0, 0.1, 0.0)
vehicle4D.propogateEntry(2400.0, 0.1, 0.0)
vehicle5D.propogateEntry(2400.0, 0.1, 0.0)
vehicle6D.propogateEntry(6000.0, 0.1, 0.0)
vehicle7D.propogateEntry(3000.0, 0.1, 0.0)
vehicle8D.propogateEntry(3000.0, 0.1, 0.0)
[85]:
g1aD = max(vehicle1D.acc_net_g)
g2aD = max(vehicle2D.acc_net_g)
g3aD = max(vehicle3D.acc_net_g)
g4aD = max(vehicle4D.acc_net_g)
g5aD = max(vehicle5D.acc_net_g)
g6aD = max(vehicle6D.acc_net_g)
g7aD = max(vehicle7D.acc_net_g)
g8aD = max(vehicle8D.acc_net_g)
[86]:
print(g1aD, g2aD, g3aD, g4aD, g5aD, g6aD, g7aD, g8aD)
5.657672791677737 4.666411475961085 3.820623202398641 29.092908983227836 7.901839420794543 3.148209939839383 3.3776314306001205 8.246800209301407
[87]:
vehicle1D.setInitialState(150.0,0.0,0.0,11.0,0.0, overShootLimit1D,0.0,0.0)
vehicle2D.setInitialState (140.0,0.0,0.0,11.5,0.0,overShootLimit2D,0.0,0.0)
vehicle3D.setInitialState (120.0,0.0,0.0, 7.0,0.0,overShootLimit3D,0.0,0.0)
vehicle4D.setInitialState(1000.0,0.0,0.0,60.0,0.0,overShootLimit4D,0.0,0.0)
vehicle5D.setInitialState(1000.0,0.0,0.0,36.0,0.0,overShootLimit5D,0.0,0.0)
vehicle6D.setInitialState(1000.0,0.0,0.0, 7.5,0.0,overShootLimit6D,0.0,0.0)
vehicle7D.setInitialState(1000.0,0.0,0.0,25.0,0.0,overShootLimit7D,0.0,0.0)
vehicle8D.setInitialState(1000.0,0.0,0.0,27.5,0.0,overShootLimit8D,0.0,0.0)
[88]:
vehicle1D.propogateEntry(2400.0, 0.1, 0.0)
vehicle2D.propogateEntry(2400.0, 0.1, 0.0)
vehicle3D.propogateEntry(2400.0, 0.1, 0.0)
vehicle4D.propogateEntry(2400.0, 0.1, 0.0)
vehicle5D.propogateEntry(2400.0, 0.1, 0.0)
vehicle6D.propogateEntry(6000.0, 0.1, 0.0)
vehicle7D.propogateEntry(3000.0, 0.1, 0.0)
vehicle8D.propogateEntry(3000.0, 0.1, 0.0)
[89]:
g1bD = max(vehicle1D.acc_net_g)
g2bD = max(vehicle2D.acc_net_g)
g3bD = max(vehicle3D.acc_net_g)
g4bD = max(vehicle4D.acc_net_g)
g5bD = max(vehicle5D.acc_net_g)
g6bD = max(vehicle6D.acc_net_g)
g7bD = max(vehicle7D.acc_net_g)
g8bD = max(vehicle8D.acc_net_g)
[90]:
print(g1bD, g2bD, g3bD, g4bD, g5bD, g6bD, g7bD, g8bD)
0.9687154975603938 0.8319068440187664 0.749533855592529 5.1808606325354125 1.4342199854535276 0.8411918340738396 0.47340569464643756 1.4942989124917714
[92]:
params = {'mathtext.default': 'regular' }
plt.rcParams.update(params)

plt.figure(figsize=(12.25,6.25))

labels = [ 'Venus', 'Earth', 'Mars', 'Jupiter', 'Saturn', 'Titan', 'Uranus', 'Neptune']


g1     = 0.5*(g1a+g1b)
g2     = 0.5*(g2a+g2b)
g3     = 0.5*(g3a+g3b)
g4     = 0.5*(g4a+g4b)
g5     = 0.5*(g5a+g5b)
g6     = 0.5*(g6a+g6b)
g7     = 0.5*(g7a+g7b)
g8     = 0.5*(g8a+g8b)


g1D     = 0.5*(g1aD+g1bD)
g2D     = 0.5*(g2aD+g2bD)
g3D     = 0.5*(g3aD+g3bD)
g4D     = 0.5*(g4aD+g4bD)
g5D     = 0.5*(g5aD+g5bD)
g6D     = 0.5*(g6aD+g6bD)
g7D     = 0.5*(g7aD+g7bD)
g8D     = 0.5*(g8aD+g8bD)



g    = [g1,g2,g3,g4,g5a,g6a, g7a,g8a]
gD   = [g1D,g2D,g3D,g4D,g5D,g6D, g7D, g8D]

x = np.arange(len(labels))  # the label locations
width = 0.25  # the width of the bars

ax = plt.gca()
rects1 = ax.bar(x - width/2, g, width, label='Lift Modulation', color='black')
rects2 = ax.bar(x + width/2, gD, width, label='Drag Modulation', facecolor='None', edgecolor='black', linewidth=1.0)

# Add some text for labels, title and custom x-axis tick labels, etc.
ax.set_ylabel('Peak deceleration, Earth g', fontsize=16)
ax.set_xticks(x)
ax.set_xticklabels(labels, fontsize=16)
ax.legend(loc='upper right', fontsize=16)

ax.tick_params(direction='in')
ax.yaxis.set_ticks_position('both')
ax.xaxis.set_ticks_position('both')
ax.tick_params(axis='x',labelsize=16)
ax.tick_params(axis='y',labelsize=16)

plt.savefig('../data/jsr-paper/comparative-studies/g-load-histogram.png', dpi= 300,bbox_inches='tight')
plt.savefig('../data/jsr-paper/comparative-studies/g-load-histogram.pdf', dpi=300,bbox_inches='tight')
plt.savefig('../data/jsr-paper/comparative-studies/g-load-histogram.eps', dpi=300,bbox_inches='tight')
The PostScript backend does not support transparency; partially transparent artists will be rendered opaque.
The PostScript backend does not support transparency; partially transparent artists will be rendered opaque.
../_images/jsr-notebooks_17-comparative-studies_73_1.png
[93]:
vehicle1.setInitialState(150.0,0.0,0.0,11.0,0.0, underShootLimit1,0.0,0.0)
vehicle2.setInitialState (140.0,0.0,0.0,11.5,0.0,underShootLimit2,0.0,0.0)
vehicle3.setInitialState (120.0,0.0,0.0, 7.0,0.0,underShootLimit3,0.0,0.0)
vehicle4.setInitialState(1000.0,0.0,0.0,60.0,0.0,underShootLimit4,0.0,0.0)
vehicle5.setInitialState(1000.0,0.0,0.0,36.0,0.0,underShootLimit5,0.0,0.0)
vehicle6.setInitialState(1000.0,0.0,0.0, 7.5,0.0,underShootLimit6,0.0,0.0)
vehicle7.setInitialState(1000.0,0.0,0.0,25.0,0.0,underShootLimit7,0.0,0.0)
vehicle8.setInitialState(1000.0,0.0,0.0,27.5,0.0,underShootLimit8,0.0,0.0)
[94]:
vehicle1.propogateEntry(2400.0, 0.1, 0.0)
vehicle2.propogateEntry(2400.0, 0.1, 0.0)
vehicle3.propogateEntry(2400.0, 0.1, 0.0)
vehicle4.propogateEntry(2400.0, 0.1, 0.0)
vehicle5.propogateEntry(2400.0, 0.1, 0.0)
vehicle6.propogateEntry(6000.0, 0.1, 0.0)
vehicle7.propogateEntry(3000.0, 0.1, 0.0)
vehicle8.propogateEntry(3000.0, 0.1, 0.0)
[95]:
q1a = max(vehicle1.q_stag_total)
q2a = max(vehicle2.q_stag_total)
q3a = max(vehicle3.q_stag_total)
q4a = max(vehicle4.q_stag_total)
q5a = max(vehicle5.q_stag_total)
q6a = max(vehicle6.q_stag_total)
q7a = max(vehicle7.q_stag_total)
q8a = max(vehicle8.q_stag_total)
[96]:
print(q1a, q2a, q3a, q4a, q5a, q6a, q7a, q8a)
642.1276341392222 614.2559824945225 121.65317456170806 7191.927633087862 805.1978133056165 94.69176577591485 627.2842478635683 1182.2291718253605
[97]:
Q1a = max(vehicle1.heatload)
Q2a = max(vehicle2.heatload)
Q3a = max(vehicle3.heatload)
Q4a = max(vehicle4.heatload)
Q5a = max(vehicle5.heatload)
Q6a = max(vehicle6.heatload)
Q7a = max(vehicle7.heatload)
Q8a = max(vehicle8.heatload)
[98]:
print(Q1a, Q2a, Q3a, Q4a, Q5a, Q6a, Q7a, Q8a)
18044.889764786225 24664.83198000201 6584.470202019118 404156.7218334246 129041.91277755701 10503.10537602897 132108.93936047758 157527.4898229573
[99]:
plt.plot(vehicle1.stag_pres_atm, vehicle1.q_stag_total)
plt.plot(vehicle2.stag_pres_atm, vehicle2.q_stag_total)
plt.plot(vehicle3.stag_pres_atm, vehicle3.q_stag_total)
#plt.plot(vehicle4.stag_pres_atm, vehicle4.q_stag_total)
#plt.plot(vehicle5.stag_pres_atm, vehicle5.q_stag_total)
plt.plot(vehicle6.stag_pres_atm, vehicle6.q_stag_total)
plt.plot(vehicle7.stag_pres_atm, vehicle7.q_stag_total)
plt.plot(vehicle8.stag_pres_atm, vehicle8.q_stag_total)
[99]:
[<matplotlib.lines.Line2D at 0x1adfba28820>]
../_images/jsr-notebooks_17-comparative-studies_80_1.png
[101]:
params = {'mathtext.default': 'regular' }
plt.rcParams.update(params)

plt.figure(figsize=(6.25,6.25))
ax = plt.gca()

plt.plot(vehicle1.stag_pres_atm, vehicle1.q_stag_total, linewidth=1.5, color='xkcd:orange')
plt.plot(vehicle2.stag_pres_atm, vehicle2.q_stag_total, linewidth=1.5, color='xkcd:pastel blue')
plt.plot(vehicle3.stag_pres_atm, vehicle3.q_stag_total, linewidth=1.5, color='xkcd:light red')
#plt.plot(vehicle4.stag_pres_atm, vehicle4.q_stag_total, linewidth=2.0, color='xkcd:brown')
#plt.plot(vehicle5.stag_pres_atm, vehicle5.q_stag_total, linewidth=2.0, color='xkcd:magenta')
plt.plot(vehicle6.stag_pres_atm, vehicle6.q_stag_total, linewidth=1.5, color='xkcd:goldenrod')
plt.plot(vehicle7.stag_pres_atm, vehicle7.q_stag_total*1.6, linewidth=1.5, color='xkcd:light turquoise')
plt.plot(vehicle8.stag_pres_atm, vehicle8.q_stag_total, linewidth=1.5, color='xkcd:cerulean blue')


ax.tick_params(direction='in')
ax.yaxis.set_ticks_position('both')
ax.xaxis.set_ticks_position('both')
ax.tick_params(axis='x',labelsize=16)
ax.tick_params(axis='y',labelsize=16)

plt.xlabel('Stagnation pressure, '+r'$atm$', fontsize=16)
plt.ylabel('Stagnation-point heat rate '+r'$\dot{q}, W/cm^2$', fontsize=16)

plt.xlim([0.0,0.35])
plt.ylim([-80.0,1300])

plt.text( 0.25, 700, 'Venus' ,color='xkcd:orange', fontsize=16)
plt.text( 0.13, 650, 'Earth' ,color='xkcd:pastel blue', fontsize=16)
plt.text( 0.17, 100, 'Mars' ,color='xkcd:light red', fontsize=16)
plt.text( 0.05, -45, 'Titan' ,color='xkcd:goldenrod', fontsize=16)
#plt.text( 170, 4000, 'Saturn' ,color='xkcd:magenta', fontsize=12)
plt.text( 0.06, 800 ,  'Uranus' ,color='xkcd:light turquoise', fontsize=16)
plt.text( 0.12 ,980,  'Neptune' ,color='xkcd:cerulean blue', fontsize=16)
#plt.text( 640 ,16000,  'Jupiter' ,color='xkcd:brown', fontsize=8)

plt.savefig('../data/jsr-paper/comparative-studies/heat-rate-stag-pres.png', dpi= 300,bbox_inches='tight')
plt.savefig('../data/jsr-paper/comparative-studies/heat-rate-stag-pres.pdf', dpi=300,bbox_inches='tight')
plt.savefig('../data/jsr-paper/comparative-studies/heat-rate-stag-pres.eps', dpi=300,bbox_inches='tight')
../_images/jsr-notebooks_17-comparative-studies_81_0.png
[102]:
vehicle1.setInitialState(150.0,0.0,0.0,11.0,0.0, overShootLimit1,0.0,0.0)
vehicle2.setInitialState (140.0,0.0,0.0,11.5,0.0,overShootLimit2,0.0,0.0)
vehicle3.setInitialState (120.0,0.0,0.0, 7.0,0.0,overShootLimit3,0.0,0.0)
vehicle4.setInitialState(1000.0,0.0,0.0,60.0,0.0,overShootLimit4,0.0,0.0)
vehicle5.setInitialState(1000.0,0.0,0.0,36.0,0.0,overShootLimit5,0.0,0.0)
vehicle6.setInitialState(1000.0,0.0,0.0, 7.5,0.0,overShootLimit6,0.0,0.0)
vehicle7.setInitialState(1000.0,0.0,0.0,25.0,0.0,overShootLimit7,0.0,0.0)
vehicle8.setInitialState(1000.0,0.0,0.0,27.5,0.0,overShootLimit8,0.0,0.0)
[103]:
vehicle1.propogateEntry(2400.0, 0.1, 180.0)
vehicle2.propogateEntry(2400.0, 0.1, 180.0)
vehicle3.propogateEntry(2400.0, 0.1, 180.0)
vehicle4.propogateEntry(2400.0, 0.1, 180.0)
vehicle5.propogateEntry(2400.0, 0.1, 180.0)
vehicle6.propogateEntry(6000.0, 0.1, 180.0)
vehicle7.propogateEntry(3000.0, 0.1, 180.0)
vehicle8.propogateEntry(3000.0, 0.1, 180.0)
[104]:
q1b = max(vehicle1.q_stag_total)
q2b = max(vehicle2.q_stag_total)
q3b = max(vehicle3.q_stag_total)
q4b = max(vehicle4.q_stag_total)
q5b = max(vehicle5.q_stag_total)
q6b = max(vehicle6.q_stag_total)
q7b = max(vehicle7.q_stag_total)
q8b = max(vehicle8.q_stag_total)
[105]:
print(q1b, q2b, q3b, q4b, q5b, q6b, q7b, q8b)
213.70689411138312 249.14696923482092 66.72466001880417 4997.522281418908 703.3820311809341 65.20473125440216 472.8205177325455 959.4442316298216
[106]:
Q1b = max(vehicle1.heatload)
Q2b = max(vehicle2.heatload)
Q3b = max(vehicle3.heatload)
Q4b = max(vehicle4.heatload)
Q5b = max(vehicle5.heatload)
Q6b = max(vehicle6.heatload)
Q7b = max(vehicle7.heatload)
Q8b = max(vehicle8.heatload)
[107]:
print(Q1b, Q2b, Q3b, Q4b, Q5b, Q6b, Q7b, Q8b)
41014.212051477145 40440.18449134592 12383.296999224456 423193.2157923033 142840.38811816543 15666.053682169444 177518.4451903292 192638.13137657772
[108]:
params = {'mathtext.default': 'regular' }
plt.rcParams.update(params)

plt.figure(figsize=(6.25,6.25))
ax = plt.gca()

#arbitrary scaling factors to make figure nice
ax.add_patch(Rectangle((Q1a/1E3,q1a), (Q1b-Q1a)/1E3, q1a-q1b,  alpha=1, facecolor='xkcd:orange'))
ax.add_patch(Rectangle((Q2a/1E3,q2a), (Q2b-Q2a)*3/1E3, q2a-q2b,  alpha=1, facecolor='xkcd:pastel blue'))
ax.add_patch(Rectangle((Q3a/1E3,q3a), (Q3b-Q3a)*4/1E3, q3a-q3b,  alpha=1, facecolor='xkcd:light red'))
ax.add_patch(Rectangle((Q4a/1E3,q4a), (Q4b-Q4a)*100/1E3, (q4a-q4b)*3,  alpha=1, facecolor='xkcd:brown'))
ax.add_patch(Rectangle((Q5a/1E3,q5a*2), (Q5b-Q5a)*30/1E3, (q5a-q5b)*20,  alpha=1, facecolor='xkcd:magenta'))
ax.add_patch(Rectangle((Q6a/1E3,q6a), (Q6b-Q6a)*7/1E3, q6a-q6b,  alpha=1, facecolor='xkcd:goldenrod'))
ax.add_patch(Rectangle((Q7a/1E3,q7a), (Q7b-Q7a)*7/1E3, (q7a-q7b)*8,  alpha=1, facecolor='xkcd:light turquoise'))
ax.add_patch(Rectangle((Q8a/1E3,q8a), (Q8b-Q8a)*12/1E3, (q8a-q8b)*8,  alpha=1, facecolor='xkcd:cerulean blue'))





plt.text( 10, 1220, 'Venus' ,color='xkcd:orange', fontsize=16)
plt.text( 35, 450, 'Earth' ,color='xkcd:pastel blue', fontsize=16)
plt.text( 10, 200, 'Mars' ,color='xkcd:light red', fontsize=16)
plt.text( 35, 70, 'Titan' ,color='xkcd:goldenrod', fontsize=16)
plt.text( 170, 4000, 'Saturn' ,color='xkcd:magenta', fontsize=16)
plt.text( 500 ,600 ,  'Uranus' ,color='xkcd:light turquoise', fontsize=16)
plt.text( 650 ,980,  'Neptune' ,color='xkcd:cerulean blue', fontsize=16)
plt.text( 640 ,16000,  'Jupiter' ,color='xkcd:brown', fontsize=16)

#plt.text( 19, -29.6-5, 'Lift modulation' ,color='xkcd:black', fontsize=8)
#plt.text( 19, -32.6-5, 'Drag modulation' ,color='xkcd:black', fontsize=8)


ax = plt.gca()
ax.set_xscale('log')
ax.set_yscale('log')

ax.tick_params(direction='in')
ax.yaxis.set_ticks_position('both')

ax.xaxis.set_ticks_position('both')
ax.tick_params(axis='x',labelsize=16)
ax.tick_params(axis='y',labelsize=16)


ax.xaxis.set_tick_params(direction='in', which='both')
ax.yaxis.set_tick_params(direction='in', which='both')

#ax.xaxis.set_tick_params(width=2, length=8)
#ax.yaxis.set_tick_params(width=2, length=8)

#ax.xaxis.set_tick_params(width=1, length=4, which='minor')
#ax.yaxis.set_tick_params(width=1, length=4, which='minor')


plt.xlim([5,3000])
plt.ylim([50,30000])

plt.xlabel('Stagnation-point heat load '+r'$Q, kJ/cm^2$', fontsize=16)
plt.ylabel('Stagnation-point heat rate '+r'$\dot{q}, W/cm^2$', fontsize=16)

ax.tick_params(direction='in')
ax.yaxis.set_ticks_position('both')
ax.xaxis.set_ticks_position('both')
ax.tick_params(axis='x',labelsize=16)
ax.tick_params(axis='y',labelsize=16)

plt.savefig('../data/jsr-paper/comparative-studies/heating-planets.png', dpi= 300,bbox_inches='tight')
plt.savefig('../data/jsr-paper/comparative-studies/heating-planets.pdf', dpi=300,bbox_inches='tight')
plt.savefig('../data/jsr-paper/comparative-studies/heating-planets.eps', dpi=300,bbox_inches='tight')
../_images/jsr-notebooks_17-comparative-studies_88_0.png
[109]:
vehicle1D.setInitialState(150.0,0.0,0.0,11.0,0.0, underShootLimit1D,0.0,0.0)
vehicle2D.setInitialState (140.0,0.0,0.0,11.5,0.0,underShootLimit2D,0.0,0.0)
vehicle3D.setInitialState (120.0,0.0,0.0, 7.0,0.0,underShootLimit3D,0.0,0.0)
vehicle4D.setInitialState(1000.0,0.0,0.0,60.0,0.0,underShootLimit4D,0.0,0.0)
vehicle5D.setInitialState(1000.0,0.0,0.0,36.0,0.0,underShootLimit5D,0.0,0.0)
vehicle6D.setInitialState(1000.0,0.0,0.0, 7.5,0.0,underShootLimit6D,0.0,0.0)
vehicle7D.setInitialState(1000.0,0.0,0.0,25.0,0.0,underShootLimit7D,0.0,0.0)
vehicle8D.setInitialState(1000.0,0.0,0.0,27.5,0.0,underShootLimit8D,0.0,0.0)
[110]:
vehicle1D.propogateEntry(2400.0, 0.1, 0.0)
vehicle2D.propogateEntry(2400.0, 0.1, 0.0)
vehicle3D.propogateEntry(2400.0, 0.1, 0.0)
vehicle4D.propogateEntry(2400.0, 0.1, 0.0)
vehicle5D.propogateEntry(2400.0, 0.1, 0.0)
vehicle6D.propogateEntry(6000.0, 0.1, 0.0)
vehicle7D.propogateEntry(3000.0, 0.1, 0.0)
vehicle8D.propogateEntry(3000.0, 0.1, 0.0)
[111]:
q1aD = max(vehicle1D.q_stag_total)
q2aD = max(vehicle2D.q_stag_total)
q3aD = max(vehicle3D.q_stag_total)
q4aD = max(vehicle4D.q_stag_total)
q5aD = max(vehicle5D.q_stag_total)
q6aD = max(vehicle6D.q_stag_total)
q7aD = max(vehicle7D.q_stag_total)
q8aD = max(vehicle8D.q_stag_total)
[112]:
print(q1aD, q2aD, q3aD, q4aD, q5aD, q6aD, q7aD, q8aD)
745.7953451113492 705.0900492653783 232.24889779550733 28919.33825256155 3094.717901751404 202.9699291503758 1481.0197840024714 2494.010736865881
[113]:
Q1aD = max(vehicle1D.heatload)
Q2aD = max(vehicle2D.heatload)
Q3aD = max(vehicle3D.heatload)
Q4aD = max(vehicle4D.heatload)
Q5aD = max(vehicle5D.heatload)
Q6aD = max(vehicle6D.heatload)
Q7aD = max(vehicle7D.heatload)
Q8aD = max(vehicle8D.heatload)
[114]:
print(Q1aD, Q2aD, Q3aD, Q4aD, Q5aD, Q6aD, Q7aD, Q8aD)
63225.013843509114 70037.36642182757 24048.699415528376 2022034.680126669 589062.4330898894 34263.17986232094 703556.0767908201 456933.58759085485
[115]:
vehicle1D.setInitialState(150.0,0.0,0.0,11.0,0.0, overShootLimit1D,0.0,0.0)
vehicle2D.setInitialState (140.0,0.0,0.0,11.5,0.0,overShootLimit2D,0.0,0.0)
vehicle3D.setInitialState (120.0,0.0,0.0, 7.0,0.0,overShootLimit3D,0.0,0.0)
vehicle4D.setInitialState(1000.0,0.0,0.0,60.0,0.0,overShootLimit4D,0.0,0.0)
vehicle5D.setInitialState(1000.0,0.0,0.0,36.0,0.0,overShootLimit5D,0.0,0.0)
vehicle6D.setInitialState(1000.0,0.0,0.0, 7.5,0.0,overShootLimit6D,0.0,0.0)
vehicle7D.setInitialState(1000.0,0.0,0.0,25.0,0.0,overShootLimit7D,0.0,0.0)
vehicle8D.setInitialState(1000.0,0.0,0.0,27.5,0.0,overShootLimit8D,0.0,0.0)
[116]:
vehicle1D.propogateEntry(2400.0, 0.1, 0.0)
vehicle2D.propogateEntry(2400.0, 0.1, 0.0)
vehicle3D.propogateEntry(2400.0, 0.1, 0.0)
vehicle4D.propogateEntry(2400.0, 0.1, 0.0)
vehicle5D.propogateEntry(2400.0, 0.1, 0.0)
vehicle6D.propogateEntry(6000.0, 0.1, 0.0)
vehicle7D.propogateEntry(3000.0, 0.1, 0.0)
vehicle8D.propogateEntry(3000.0, 0.1, 0.0)
[117]:
q1bD = max(vehicle1D.q_stag_total)
q2bD = max(vehicle2D.q_stag_total)
q3bD = max(vehicle3D.q_stag_total)
q4bD = max(vehicle4D.q_stag_total)
q5bD = max(vehicle5D.q_stag_total)
q6bD = max(vehicle6D.q_stag_total)
q7bD = max(vehicle7D.q_stag_total)
q8bD = max(vehicle8D.q_stag_total)
[118]:
print(q1bD, q2bD, q3bD, q4bD, q5bD, q6bD, q7bD, q8bD)
365.4707051163394 345.9663810607608 125.67563352755842 9711.796590326772 1568.7988952148437 132.3824890675988 703.7262586043155 1393.3043964733772
[119]:
Q1bD = max(vehicle1D.heatload)
Q2bD = max(vehicle2D.heatload)
Q3bD = max(vehicle3D.heatload)
Q4bD = max(vehicle4D.heatload)
Q5bD = max(vehicle5D.heatload)
Q6bD = max(vehicle6D.heatload)
Q7bD = max(vehicle7D.heatload)
Q8bD = max(vehicle8D.heatload)
[120]:
print(Q1bD, Q2bD, Q3bD, Q4bD, Q5bD, Q6bD, Q7bD, Q8bD)
23557.77862944383 27401.63760097738 12385.99159334015 771752.6244654971 276172.44603547413 26293.128049837567 204465.24369679764 234753.4118006923