Example - 56 - Venus Entry Tradespace - Carpet Plot

This example will create an EDL carpet plot showning the trade space for high ballistic coefficient entry systems at Venus

[1]:
from AMAT.planet import Planet
from AMAT.vehicle import Vehicle
[2]:
import numpy as np
import matplotlib.pyplot as plt
[3]:
# Set up the planet and atmosphere model.
planet=Planet("VENUS")
planet.loadAtmosphereModel('../atmdata/Venus/venus-gram-avg.dat', 0 , 1 , 2, 3)
[4]:
betaRange = np.linspace(100,400,11)
gammaRange = np.linspace(-30,-8,11)

acc_net_g_max_array       = np.zeros((len(betaRange),len(gammaRange)))
q_stag_total_max_array    = np.zeros((len(betaRange),len(gammaRange)))
heatload_max_array        = np.zeros((len(betaRange),len(gammaRange)))
dyn_pres_array            = np.zeros((len(betaRange),len(gammaRange)))

for i, beta in enumerate(betaRange):
    for j, gamma in enumerate(gammaRange):
        vehicle=Vehicle('vehicle1', 300.0, beta, 0.00, 0.25*np.pi*1.00**2, 0.00, 0.20, planet)
        vehicle.setInitialState(180.0,0.0,0.0,11.30,0.0,gamma,0.0,0.0)
        vehicle.setSolverParams(1E-6)
        vehicle.propogateEntry (2400.0,0.1,0.0)

        print("G_MAX: "+str("{:.2f}".format(max(vehicle.acc_net_g)))+", Q_MAX: "+str("{:.2f}".format(max(vehicle.q_stag_total)))+", J_MAX: "+str("{:.2f}".format(max(vehicle.heatload/1.0E3)))+", P_MAX: "+str("{:.2f}".format(max(vehicle.dyn_pres_atm))))

        acc_net_g_max_array[i,j]     = max(vehicle.acc_net_g)
        q_stag_total_max_array[i,j]  = max(vehicle.q_stag_total)
        heatload_max_array[i,j]      = max(vehicle.heatload/1.0E3)
        dyn_pres_array[i,j]         = max(vehicle.dyn_pres_atm)
G_MAX: 272.16, Q_MAX: 3000.63, J_MAX: 10.39, P_MAX: 2.63
G_MAX: 253.65, Q_MAX: 2867.43, J_MAX: 10.69, P_MAX: 2.45
G_MAX: 234.89, Q_MAX: 2728.31, J_MAX: 11.03, P_MAX: 2.27
G_MAX: 215.69, Q_MAX: 2585.18, J_MAX: 11.43, P_MAX: 2.09
G_MAX: 195.63, Q_MAX: 2430.17, J_MAX: 11.91, P_MAX: 1.89
G_MAX: 174.22, Q_MAX: 2261.27, J_MAX: 12.50, P_MAX: 1.69
G_MAX: 151.94, Q_MAX: 2079.58, J_MAX: 13.25, P_MAX: 1.47
G_MAX: 128.85, Q_MAX: 1883.25, J_MAX: 14.24, P_MAX: 1.25
G_MAX: 103.38, Q_MAX: 1655.23, J_MAX: 15.66, P_MAX: 1.00
G_MAX: 74.80, Q_MAX: 1378.07, J_MAX: 18.04, P_MAX: 0.72
G_MAX: 35.61, Q_MAX: 932.10, J_MAX: 24.52, P_MAX: 0.34
G_MAX: 265.99, Q_MAX: 3520.22, J_MAX: 12.28, P_MAX: 3.35
G_MAX: 248.72, Q_MAX: 3365.41, J_MAX: 12.61, P_MAX: 3.13
G_MAX: 230.39, Q_MAX: 3197.74, J_MAX: 13.00, P_MAX: 2.90
G_MAX: 211.15, Q_MAX: 3019.15, J_MAX: 13.45, P_MAX: 2.66
G_MAX: 191.12, Q_MAX: 2830.51, J_MAX: 14.00, P_MAX: 2.40
G_MAX: 170.83, Q_MAX: 2635.39, J_MAX: 14.67, P_MAX: 2.15
G_MAX: 149.45, Q_MAX: 2421.99, J_MAX: 15.51, P_MAX: 1.88
G_MAX: 126.21, Q_MAX: 2182.44, J_MAX: 16.63, P_MAX: 1.59
G_MAX: 101.57, Q_MAX: 1914.77, J_MAX: 18.25, P_MAX: 1.28
G_MAX: 73.11, Q_MAX: 1583.67, J_MAX: 20.98, P_MAX: 0.92
G_MAX: 34.27, Q_MAX: 1061.26, J_MAX: 28.56, P_MAX: 0.43
G_MAX: 261.09, Q_MAX: 4007.68, J_MAX: 14.05, P_MAX: 4.04
G_MAX: 243.61, Q_MAX: 3822.52, J_MAX: 14.42, P_MAX: 3.77
G_MAX: 225.79, Q_MAX: 3628.03, J_MAX: 14.85, P_MAX: 3.50
G_MAX: 207.50, Q_MAX: 3426.40, J_MAX: 15.35, P_MAX: 3.21
G_MAX: 188.32, Q_MAX: 3212.03, J_MAX: 15.95, P_MAX: 2.92
G_MAX: 167.89, Q_MAX: 2979.14, J_MAX: 16.68, P_MAX: 2.60
G_MAX: 146.65, Q_MAX: 2731.82, J_MAX: 17.62, P_MAX: 2.27
G_MAX: 124.52, Q_MAX: 2462.83, J_MAX: 18.86, P_MAX: 1.93
G_MAX: 99.77, Q_MAX: 2150.49, J_MAX: 20.65, P_MAX: 1.55
G_MAX: 71.95, Q_MAX: 1773.14, J_MAX: 23.69, P_MAX: 1.11
G_MAX: 33.21, Q_MAX: 1173.83, J_MAX: 32.28, P_MAX: 0.51
G_MAX: 257.65, Q_MAX: 4478.48, J_MAX: 15.76, P_MAX: 4.74
G_MAX: 240.29, Q_MAX: 4266.81, J_MAX: 16.15, P_MAX: 4.42
G_MAX: 222.38, Q_MAX: 4041.95, J_MAX: 16.61, P_MAX: 4.09
G_MAX: 203.91, Q_MAX: 3806.99, J_MAX: 17.15, P_MAX: 3.75
G_MAX: 185.22, Q_MAX: 3565.21, J_MAX: 17.80, P_MAX: 3.41
G_MAX: 165.72, Q_MAX: 3308.80, J_MAX: 18.60, P_MAX: 3.05
G_MAX: 144.71, Q_MAX: 3026.35, J_MAX: 19.61, P_MAX: 2.66
G_MAX: 122.50, Q_MAX: 2720.55, J_MAX: 20.96, P_MAX: 2.25
G_MAX: 98.66, Q_MAX: 2375.37, J_MAX: 22.91, P_MAX: 1.81
G_MAX: 70.90, Q_MAX: 1948.59, J_MAX: 26.23, P_MAX: 1.30
G_MAX: 32.27, Q_MAX: 1276.52, J_MAX: 35.77, P_MAX: 0.59
G_MAX: 254.43, Q_MAX: 4919.54, J_MAX: 17.40, P_MAX: 5.42
G_MAX: 237.40, Q_MAX: 4688.30, J_MAX: 17.83, P_MAX: 5.05
G_MAX: 219.88, Q_MAX: 4444.41, J_MAX: 18.32, P_MAX: 4.68
G_MAX: 201.62, Q_MAX: 4184.25, J_MAX: 18.90, P_MAX: 4.29
G_MAX: 182.64, Q_MAX: 3905.04, J_MAX: 19.59, P_MAX: 3.89
G_MAX: 163.21, Q_MAX: 3616.24, J_MAX: 20.44, P_MAX: 3.48
G_MAX: 143.05, Q_MAX: 3309.04, J_MAX: 21.52, P_MAX: 3.05
G_MAX: 121.02, Q_MAX: 2966.83, J_MAX: 22.97, P_MAX: 2.58
G_MAX: 97.41, Q_MAX: 2585.49, J_MAX: 25.06, P_MAX: 2.07
G_MAX: 69.87, Q_MAX: 2112.27, J_MAX: 28.64, P_MAX: 1.49
G_MAX: 31.52, Q_MAX: 1372.81, J_MAX: 39.06, P_MAX: 0.67
G_MAX: 252.35, Q_MAX: 5353.22, J_MAX: 19.00, P_MAX: 6.11
G_MAX: 235.13, Q_MAX: 5089.09, J_MAX: 19.45, P_MAX: 5.69
G_MAX: 217.49, Q_MAX: 4822.59, J_MAX: 19.97, P_MAX: 5.26
G_MAX: 199.44, Q_MAX: 4543.29, J_MAX: 20.58, P_MAX: 4.83
G_MAX: 180.82, Q_MAX: 4241.77, J_MAX: 21.32, P_MAX: 4.38
G_MAX: 161.27, Q_MAX: 3915.87, J_MAX: 22.22, P_MAX: 3.90
G_MAX: 141.17, Q_MAX: 3577.07, J_MAX: 23.37, P_MAX: 3.42
G_MAX: 119.86, Q_MAX: 3206.83, J_MAX: 24.90, P_MAX: 2.90
G_MAX: 96.13, Q_MAX: 2782.97, J_MAX: 27.13, P_MAX: 2.33
G_MAX: 69.14, Q_MAX: 2271.19, J_MAX: 30.95, P_MAX: 1.67
G_MAX: 30.88, Q_MAX: 1462.05, J_MAX: 42.21, P_MAX: 0.75
G_MAX: 250.31, Q_MAX: 5781.17, J_MAX: 20.57, P_MAX: 6.78
G_MAX: 233.43, Q_MAX: 5491.90, J_MAX: 21.04, P_MAX: 6.33
G_MAX: 215.73, Q_MAX: 5191.43, J_MAX: 21.58, P_MAX: 5.85
G_MAX: 197.61, Q_MAX: 4883.73, J_MAX: 22.23, P_MAX: 5.36
G_MAX: 179.11, Q_MAX: 4562.31, J_MAX: 23.00, P_MAX: 4.85
G_MAX: 159.81, Q_MAX: 4213.52, J_MAX: 23.95, P_MAX: 4.33
G_MAX: 139.55, Q_MAX: 3835.77, J_MAX: 25.16, P_MAX: 3.78
G_MAX: 118.58, Q_MAX: 3435.06, J_MAX: 26.78, P_MAX: 3.21
G_MAX: 95.22, Q_MAX: 2975.82, J_MAX: 29.13, P_MAX: 2.58
G_MAX: 68.52, Q_MAX: 2423.99, J_MAX: 33.18, P_MAX: 1.86
G_MAX: 30.28, Q_MAX: 1544.69, J_MAX: 45.25, P_MAX: 0.82
G_MAX: 248.40, Q_MAX: 6186.87, J_MAX: 22.11, P_MAX: 7.45
G_MAX: 231.77, Q_MAX: 5881.79, J_MAX: 22.59, P_MAX: 6.95
G_MAX: 214.30, Q_MAX: 5559.95, J_MAX: 23.16, P_MAX: 6.43
G_MAX: 196.20, Q_MAX: 5215.47, J_MAX: 23.83, P_MAX: 5.89
G_MAX: 177.53, Q_MAX: 4867.83, J_MAX: 24.64, P_MAX: 5.33
G_MAX: 158.47, Q_MAX: 4498.81, J_MAX: 25.64, P_MAX: 4.75
G_MAX: 138.41, Q_MAX: 4093.45, J_MAX: 26.91, P_MAX: 4.15
G_MAX: 117.26, Q_MAX: 3653.50, J_MAX: 28.60, P_MAX: 3.52
G_MAX: 94.47, Q_MAX: 3165.29, J_MAX: 31.07, P_MAX: 2.83
G_MAX: 67.84, Q_MAX: 2568.86, J_MAX: 35.33, P_MAX: 2.04
G_MAX: 29.70, Q_MAX: 1622.53, J_MAX: 48.18, P_MAX: 0.89
G_MAX: 246.66, Q_MAX: 6590.07, J_MAX: 23.62, P_MAX: 8.12
G_MAX: 230.04, Q_MAX: 6264.13, J_MAX: 24.12, P_MAX: 7.57
G_MAX: 212.88, Q_MAX: 5919.42, J_MAX: 24.72, P_MAX: 7.01
G_MAX: 195.04, Q_MAX: 5550.66, J_MAX: 25.41, P_MAX: 6.42
G_MAX: 176.40, Q_MAX: 5166.63, J_MAX: 26.26, P_MAX: 5.80
G_MAX: 157.18, Q_MAX: 4771.07, J_MAX: 27.29, P_MAX: 5.17
G_MAX: 137.36, Q_MAX: 4344.64, J_MAX: 28.61, P_MAX: 4.52
G_MAX: 116.17, Q_MAX: 3868.27, J_MAX: 30.38, P_MAX: 3.82
G_MAX: 93.67, Q_MAX: 3347.28, J_MAX: 32.97, P_MAX: 3.08
G_MAX: 67.12, Q_MAX: 2707.20, J_MAX: 37.43, P_MAX: 2.21
G_MAX: 29.15, Q_MAX: 1697.19, J_MAX: 51.02, P_MAX: 0.96
G_MAX: 245.34, Q_MAX: 6979.82, J_MAX: 25.11, P_MAX: 8.79
G_MAX: 228.57, Q_MAX: 6630.50, J_MAX: 25.63, P_MAX: 8.19
G_MAX: 211.45, Q_MAX: 6263.85, J_MAX: 26.25, P_MAX: 7.57
G_MAX: 193.86, Q_MAX: 5879.23, J_MAX: 26.97, P_MAX: 6.94
G_MAX: 175.45, Q_MAX: 5466.34, J_MAX: 27.84, P_MAX: 6.28
G_MAX: 156.14, Q_MAX: 5036.07, J_MAX: 28.92, P_MAX: 5.59
G_MAX: 136.32, Q_MAX: 4586.26, J_MAX: 30.29, P_MAX: 4.88
G_MAX: 115.36, Q_MAX: 4083.42, J_MAX: 32.13, P_MAX: 4.13
G_MAX: 92.80, Q_MAX: 3522.46, J_MAX: 34.82, P_MAX: 3.32
G_MAX: 66.48, Q_MAX: 2841.40, J_MAX: 39.47, P_MAX: 2.38
G_MAX: 28.67, Q_MAX: 1769.70, J_MAX: 53.79, P_MAX: 1.03
G_MAX: 244.16, Q_MAX: 7371.23, J_MAX: 26.58, P_MAX: 9.45
G_MAX: 227.41, Q_MAX: 6990.31, J_MAX: 27.12, P_MAX: 8.80
G_MAX: 210.19, Q_MAX: 6604.05, J_MAX: 27.76, P_MAX: 8.14
G_MAX: 192.63, Q_MAX: 6199.32, J_MAX: 28.50, P_MAX: 7.46
G_MAX: 174.45, Q_MAX: 5764.68, J_MAX: 29.40, P_MAX: 6.75
G_MAX: 155.36, Q_MAX: 5299.71, J_MAX: 30.52, P_MAX: 6.01
G_MAX: 135.40, Q_MAX: 4819.17, J_MAX: 31.94, P_MAX: 5.24
G_MAX: 114.61, Q_MAX: 4293.05, J_MAX: 33.84, P_MAX: 4.44
G_MAX: 91.97, Q_MAX: 3692.51, J_MAX: 36.63, P_MAX: 3.56
G_MAX: 65.98, Q_MAX: 2974.32, J_MAX: 41.47, P_MAX: 2.55
G_MAX: 28.25, Q_MAX: 1839.89, J_MAX: 56.49, P_MAX: 1.09
[5]:
from scipy import interpolate
[6]:
f1 = interpolate.interp2d(betaRange, gammaRange, np.transpose(acc_net_g_max_array), kind='cubic')
q1 = interpolate.interp2d(betaRange, gammaRange, np.transpose(q_stag_total_max_array), kind='cubic')
h1 = interpolate.interp2d(betaRange, gammaRange, np.transpose(heatload_max_array), kind='cubic')
s1 = interpolate.interp2d(betaRange, gammaRange, np.transpose(dyn_pres_array), kind='cubic')

x_new =  np.linspace(100,400, 110)
y_new =  np.linspace(-30,-8,110)

g1_new =  np.zeros((len(x_new),len(y_new)))
q1_new =  np.zeros((len(x_new),len(y_new)))
h1_new =  np.zeros((len(x_new),len(y_new)))
s1_new =  np.zeros((len(x_new),len(y_new)))

for i in range(0,len(x_new)):
    for j in range(0,len(y_new)):

        g1_new[i,j] = f1(x_new[i],y_new[j])
        q1_new[i,j] = q1(x_new[i],y_new[j])
        h1_new[i,j] = h1(x_new[i],y_new[j])
        s1_new[i,j] = s1(x_new[i],y_new[j])

X, Y = np.meshgrid(x_new, y_new)

fig = plt.figure()
fig.set_size_inches([8.00,8.00])
plt.ion()
plt.rc('font',family='Times New Roman')
params = {'mathtext.default': 'regular' }
plt.rcParams.update(params)

GCS1 = plt.contour(Y, X, np.transpose(g1_new), levels=np.linspace(40,200,9),  linewidths=2.0, colors='black')
plt.clabel(GCS1, inline=1, fontsize=14, colors='black',fmt='%3d',inline_spacing=1)
GCS1.collections[0].set_label(r'g-load')


QCS1 = plt.contour(Y, X, np.transpose(q1_new), levels=np.linspace(1000,7000,13), linewidths=2.0, colors='red')
plt.clabel(QCS1, inline=1, fontsize=14, colors='red',fmt='%3d',inline_spacing=1)
QCS1.collections[0].set_label(r'$\dot{q}$'+', '+r'$W/cm^2$')

HCS1 = plt.contour(Y, X, np.transpose(h1_new), levels=np.linspace(12,48,10), linewidths=2.0, colors='magenta')
plt.clabel(HCS1, inline=1, fontsize=14, colors='magenta',fmt='%3d',inline_spacing=1)
HCS1.collections[0].set_label(r'$Q$'+', '+r'$kJ/cm^2$')

SCS1 = plt.contour(Y, X, np.transpose(s1_new), linewidths=2.0, colors='blue')
plt.clabel(SCS1, inline=1, fontsize=12, colors='blue',fmt='%.2f',inline_spacing=1)
SCS1.collections[0].set_label(r'$dyn. pres.$'+', '+r'$atm$')

plt.xlabel("Planet relative EFPA "+r'$\gamma_e$'+r', deg' ,fontsize=16)
plt.ylabel(r'$\beta$, '+r'$kg/m^2$' ,fontsize=16)
plt.xticks(np.linspace(-30,-8,12),fontsize=16)
plt.yticks(fontsize=16)
ax = plt.gca()
ax.tick_params(direction='in')
ax.yaxis.set_ticks_position('both')
ax.xaxis.set_ticks_position('both')

plt.legend(loc='lower left', fontsize=16, framealpha=0.8)

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=6, which='minor')
ax.yaxis.set_tick_params(width=1, length=6, which='minor')


ax.xaxis.grid(which='major', color='k', linestyle='dotted', linewidth=0.0)
ax.xaxis.grid(which='minor', color='k', linestyle='dotted', linewidth=0.0)

ax.yaxis.grid(which='major', color='k', linestyle='dotted', linewidth=0.0)
ax.yaxis.grid(which='minor', color='k', linestyle='dotted', linewidth=0.0)

for axis in ['top', 'bottom', 'left', 'right']:
    ax.spines[axis].set_linewidth(2)

plt.savefig('../plots/venus-carpet-plot.png', dpi=300,bbox_inches='tight')
plt.savefig('../plots/venus-carpet-plot.pdf', dpi=300,bbox_inches='tight')
plt.savefig('../plots/venus-carpet-plot.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/examples_example-56-venus-entry-tradespace_7_1.png
[ ]: