-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsolution.py
More file actions
110 lines (90 loc) · 4.67 KB
/
solution.py
File metadata and controls
110 lines (90 loc) · 4.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
from engine import *
import json
def turbojet():
Tt0, Pt0 = freestream(M0, T0, P0)
Tt2, Pt2 = inlet(M0, Tt0, Pt0, Inlet.eta, Inlet.pi)
Tt3, Pt3 = compressor(Tt2, Pt2, Compressor.eta, Compressor.pi, Compressor.tau, Compressor.e)
Tt4, Pt4, f, tau_lambda = burner(Tt3, Pt3, QR, Burner.pi, f_input, Burner_outlet_temp, Burner.tau, Burner.eta, tau_lambda_input)
Tt5, Pt5 = turbine(Tt4, Pt4, Tt3, Tt2, f, tau_lambda, Turbine.eta, Turbine.pi, Turbine.tau, Turbine.e, eta_m)
Tt9, Pt9 = nozzle(Tt5, Pt5, Nozzle.eta, Nozzle.pi, NPR, p_ratio)
def turbojet_ab():
Tt0, Pt0, V0, a0 = freestream(M0, T0, P0)
Tt2, Pt2 = inlet(M0, Tt0, Pt0, Inlet.eta, Inlet.pi)
Tt3, Pt3 = compressor(Tt2, Pt2, Compressor.eta, Compressor.pi, Compressor.tau, Compressor.e)
Tt4, Pt4, f, tau_lambda = burner(Tt3, Pt3, QR, Burner.pi, f_input, Burner_outlet_temp, Burner.tau, Burner.eta, tau_lambda_input)
Tt5, Pt5, alpha = turbine(Tt4, Pt4, Tt3, Tt2, f, Turbine.eta, Turbine.pi, Turbine.tau, Turbine.e, eta_m)
Tt7, Pt7, f_ab = afterburner(Tt5, Pt5, QR_AB, CP_M, Afterburner.pi, f_ab_input, f, Afterburner.eta, tau_lambda_ab, Afterburner.tau, Afterburner_outlet_temp)
Tt9, Pt9 = nozzle(Tt7, Pt7, Nozzle.eta, Nozzle.pi, NPR, p_ratio)
T9, P9, M9, V9 = engine_outlet_static(Tt9, Pt9, p_ratio)
Temps = (Tt0, Tt2, Tt3, Tt4, Tt5, None, Tt7, Tt9)
Pressures = (Pt0, Pt2, Pt3, Pt4, Pt5, None, Pt7, Pt9)
St = specific_thrust(V9, V0, f, f_ab)
Tsfc = tsfc(St, f, f_ab)
eta_th = thermal_efficiency(V0, V9, f, f_ab)
eta_prop = propulsive_efficiency(St, V0, V9, f, f_ab)
eta_o = overall_efficiency(eta_th, eta_prop)
solution = {
'stations': data_parse.output_station([Inlet, Compressor, Burner, Turbine, Afterburner, Nozzle]),
'temperatures': data_parse.output_temperature(Temps),
'pressures': data_parse.output_pressure(Pressures),
'other_parameters': {
'f': f,
'f_ab': f_ab
},
'performance parameters': {
'Specific Thrust': St,
'TSFC': Tsfc,
'Thermal Efficiency': eta_th,
'Propulsive Efficiency': eta_prop,
'Overall Efficiency': eta_o
}
}
print(json.dumps(solution['performance parameters'], indent=2))
return solution
def turbofan_ab ():
Tt0, Pt0, V0, a0 = freestream(M0, T0, P0)
Tt2, Pt2 = inlet(M0, Tt0, Pt0, Inlet.eta, Inlet.pi)
Tt13, Pt13 = fan(Tt2, Pt2, Fan.eta, Fan.pi, Fan.tau, Fan.e)
Tt3, Pt3 = compressor(Tt2, Pt2, Compressor.eta, Compressor.pi, Compressor.tau, Compressor.e)
Tt4, Pt4, f, tau_lambda = burner(Tt3, Pt3, QR, Burner.pi, f_input, Burner_outlet_temp, Burner.tau, Burner.eta, tau_lambda_input)
Tt5, Pt5, alpha = turbine(Tt4, Pt4, Tt3, Tt2, f, tau_lambda, Turbine.eta, Turbine.pi, Turbine.tau, Turbine.e, eta_m)
Tt15, Pt15, M15 = duct(Tt13, Pt13, M5, pi_fd)
Tt6, Pt6, CP_M = mixer(Tt5, Pt5, Tt15, Pt15, f, alpha, tau_lambda, M5, M15, pi_Mf)
Tt7, Pt7, f_ab = afterburner(Tt6, Pt6, QR_AB, CP_M, Afterburner.pi, f_ab_input, f, Afterburner.eta, tau_lambda_ab, Afterburner.tau, Afterburner_outlet_temp)
Tt9, Pt9 = nozzle(Tt7, Pt7, Nozzle.eta, Nozzle.pi, NPR, p_ratio, pi_fd)
T9, P9, M9, V9 = engine_outlet_static(Tt9, Pt9, p_ratio)
Temps = (Tt0, Tt2, Tt3, Tt4, Tt5, Tt6, Tt7, Tt9, Tt13, Tt15)
Pressures = (Pt0, Pt2, Pt3, Pt4, Pt5, Pt6, Pt7, Pt9, Pt13, Pt15)
St = specific_thrust(V9, V0, f, f_ab, alpha)
Tsfc = tsfc(St, f, f_ab)
eta_th = thermal_efficiency(V0, V9, f, f_ab, alpha)
eta_prop = propulsive_efficiency(St, V0, V9, f, f_ab, alpha)
eta_o = overall_efficiency(eta_th, eta_prop)
solution = {
'stations': data_parse.output_station([Inlet, Fan, Compressor, Burner, Turbine, Mixer, Afterburner, Nozzle]),
'temperatures': data_parse.output_temperature(Temps),
'pressures': data_parse.output_pressure(Pressures),
'other_parameters': {
'f': f,
'f_ab': f_ab,
'alpha': alpha
},
'performance parameters': {
'Specific Thrust': St,
'TSFC': Tsfc,
'Thermal Efficiency': eta_th,
'Propulsive Efficiency': eta_prop,
'Overall Efficiency': eta_o
}
}
print(json.dumps(solution['performance parameters'], indent=2))
return solution
def output (engine):
"""Writes output json file based on engine type
Args:
engine (str): Type of engine ('Turbojet_AB' or 'Turbofan_Mixed')
"""
if engine == 'Turbojet_AB':
data_parse.write_output_json('turbojet_afterburner.json', turbojet_ab())
if engine == 'Turbofan_Mixed':
data_parse.write_output_json('turbofan_mixed exhaust.json', turbofan_ab())