This is a simple model of the Space Shuttle Main Engine (SSME) performance. It is based on the data from the Dr. Rodney Bowersox:
Combustion Chamber Data | |
---|---|
Fuel | Hydrogen |
Oxidizer | |
Fuel/Oxidizer Ratio |
0.166 |
Hydrogen Injection Temperature | 850 K |
Oxygen Injection Temperature | 530 K |
Combustion Chamber Pressure | 204 atm |
Nozzle Geometry | |
---|---|
5.15 in | |
45.35 in | |
32.00 deg |
We begin with computing the equivalence ratio
From here we are to calculate the standard heat of formation by:
Where exchanger.py
.
Which is then applied to our chemical equation:
Note: notice the
From here we can sum the molar enthalpies of formation to get the first estimate of the first reaction enthalpy:
We are to then interpolate this value from the given turn tables to get the actual value of the combustion temperature for Oxygen First Enthalpy Exchanger. This is done in exchanger.py
. At the end of this process we have the combustion temperature for the Oxygen First Enthalpy Exchanger,
For the Combustion Chamber we wil using the two sub-reactions:
From here we are to calculate the Gibbs Free Energy of each species.
For
For
Where Iterater.py
file.
Looking at For
Species | |||
---|---|---|---|
1 | 0 | -1 | |
0 | 1 | 1 | |
0 | 1 | 1 |
We know that:
Where;
We can then solve for
Here we know that the fuel is
Where
Resulting in us having 4 unknown values with only 2 equations. This a signal to us prompting the Law of Mass Action. When solving for the Moler Fraction of each species we get:
Similarly for the
Species | |||
---|---|---|---|
1 | 0 | -1 | |
0 | 2 | 2 |
After this we know have to solve a system of coupled equations:
We can then solve for
Species | |||||||
---|---|---|---|---|---|---|---|
Now to calculate
We perform this step to calculate the gas constant
Resulting in use getting a gamma of:
Begin by defining our Area Ratio:
We can for Mach number scipy.optimize.fsolve
, which returns the roots of a non-linear function. After solving for
After Solving for these values we can then calculate the mass flow rate:
Then once you have the mass flow rate you can calculate the thrust, specific impulse, and thrust coefficient:
flowchart
A[Givens] --> B[Parameters]
B --> SSME
D -->|def| FCC
FCC1 --> |req| Request
Request --> |return| del_h_hat
phi --> FCC2
T_alg --> |req| Request
Request --> |return| T_alg
E -->|def| Comb
Gibbs --> |req| Request
Request --> |return| Gibbs
cpval --> |req| Request
Request --> |return| cpval
N --> |def| Nozzle
subgraph SSME[SSMEMain.py]
C[Read in Givens] --> phi["equivalence ratio"]
phi --> D[FCC]
D--> E[Comb Chamber]
E --> N[Nozzle]
end
subgraph FCC[FCC]
FCC1["h_(i)(InjectionTemp)"]
b_hat["b_hat_table"]
del_h_hat["del_h_hat_(i)"]
b_hat --> del_h_hat
FCC2["mols_(i)"]
h_total["del_h_total"]
T_alg["T_algorithm"]
del_h_hat --> h_total
FCC2 --> h_total
h_total --> T_alg
end
subgraph Iter["Iterater.py"]
Request["Request_(i) (input,output)"]
Request --> |"(T,h)"|Iter1
Request --> |"(h,T)"|Iter2
Request --> |"(T,g)"|Iter3
Request --> |"(T,cp)"|Iter4
Request --> |"(T,S)"|Iter5
Iter1["(i)_tableH = (i)_table_f"]
Iter2["(i)_tableT"]
Iter3["(i)_tableg"]
Iter4["(i)_table_cp"]
Iter5["(i)_tableS"]
MachS["MachSolve"]
end
subgraph Comb["Comb Chamber"]
Atom["Atom Balance"]
Gibbs["Gibbs Free Energy"]
gibbs_r["g_reaction"]
LMA["LawOfMassAction_df"]
cpval["cp_values_(i)"]
Gibbs --> gibbs_r
gibbs_r --> k_n["K_(n)"]
T_alg --> k_n
Atom --> eq["equations"]
eq --> sol["solution(s)"]
k_n --> eq
sol --> LMA
cpval --> LMA
LMA --> R["R"]
R --> cv["cv"]
cv --> gamma["gamma"]
end
subgraph Nozzle["Nozzle"]
A_r["Area Ratio"]
gam["gamma"]
gam --> Mach
A_r --> Mach
Mach -->|req| MachS
MachS --> |return|Mach
Mach --> mdot["mdot"]
Mach --> T_e["T_e"]
Mach --> p_e["p_e"]
Mach --> v_e["v_e"]
v_e --> Thrust["Thrust"]
mdot --> Thrust
p_e --> Thrust
c_T["c_T"]
Thrust --> c_T
Thrust --> Isp["Isp"]
end
subgraph Mach["mach"]
end