Turbine - Nouman090/ThermoSim GitHub Wiki
A turbine expands a high-pressure fluid to produce work. The expansion process is modelled with isentropic and mechanical efficiencies.
Physics
h_out = h_in - η_isen × (h_in - h_out,isen)
W = ṁ × (h_in - h_out) × η_mech
Ex_D = Ex_in - Ex_out - W
Syntax
Turbine(Model, ID, In_state, Out_state,
n_isen=1.0, n_mech=1.0, Calculate=False)
| Parameter | Type | Default | Description |
|---|---|---|---|
Model |
ThermodynamicModel | — | The model object |
ID |
str | — | Unique component name |
In_state |
str | — | Inlet state point name |
Out_state |
str | — | Outlet state point name |
n_isen |
float | 1.0 | Isentropic efficiency (0–1) |
n_mech |
float | 1.0 | Mechanical efficiency (0–1) |
Calculate |
bool | False | Solve immediately if True |
Output Attributes
| Attribute | Type | Unit | Description |
|---|---|---|---|
.work |
float | W | Work output |
.Ex_D |
float/str | W | Exergy destruction |
.Solution_Status |
bool | — | True if solved |
.In |
Prop | — | Inlet state point object |
.Out |
Prop | — | Outlet state point object |
Cases
Case 1: Known Inlet, Unknown Outlet (Forward Calculation)
Most common. You know the inlet conditions and outlet pressure. The turbine calculates the outlet state.
from ThermoSim import ThermodynamicModel, Turbine
Model = ThermodynamicModel()
Model.set_dead_state()
# Inlet: fully defined
Model.add_point('water', '1', P=8e6, T=753.15, Mass_flowrate=1)
# Outlet: only pressure known
Model.add_point('water', '2', P=0.008e6)
Turbine(Model, 'T1', '1', '2', n_isen=0.85, Calculate=True)
print(f"Work output: {Model.Component['T1'].work/1e3:.2f} kW")
print(f"Outlet T: {Model.Point['2'].T - 273.15:.2f} °C")
print(f"Outlet H: {Model.Point['2'].H:.0f} J/kg")
Case 2: Known Outlet, Unknown Inlet (Reverse Calculation)
You know the outlet conditions and inlet pressure.
The turbine solves for the inlet state using fsolve.
Model = ThermodynamicModel()
Model.set_dead_state()
# Inlet: only pressure known
Model.add_point('water', '1', P=8e6, Mass_flowrate=1)
# Outlet: fully defined
Model.add_point('water', '2', P=0.008e6, H=2200000)
Turbine(Model, 'T1', '1', '2', n_isen=0.85, Calculate=True)
print(f"Inlet T: {Model.Point['1'].T - 273.15:.2f} °C")
print(f"Inlet H: {Model.Point['1'].H:.0f} J/kg")
Case 3: Both Inlet and Outlet Known
Used when you already know both states (e.g., from another calculation). The turbine just computes work and exergy.
Model = ThermodynamicModel()
Model.set_dead_state()
Model.add_point('water', '1', P=8e6, T=753.15, Mass_flowrate=1)
Model.add_point('water', '2', P=0.008e6, H=2200000)
Turbine(Model, 'T1', '1', '2', n_isen=0.85, Calculate=True)
print(f"Work: {Model.Component['T1'].work/1e3:.2f} kW")
Case 4: Mass Flow Not Given
If neither inlet nor outlet has a mass flow rate, the turbine assumes 1 kg/s
and issues a warning. After calculation, mass flow is reset to None.
Model.add_point('water', '1', P=8e6, T=753.15) # no mass flow
Model.add_point('water', '2', P=0.008e6)
Turbine(Model, 'T1', '1', '2', n_isen=0.85, Calculate=True)
# Warning: Mass flowrate through T1 set to 1 kg/s
Case 5: Isentropic Turbine (η = 1)
Turbine(Model, 'T1', '1', '2', n_isen=1.0, Calculate=True)
# Outlet entropy equals inlet entropy
Print Component Data
print(Model.Component['T1'])
Output:
T1 (Turbine):
P_in : 80.00 bar
P_out : 0.08 bar
η_isen : 85.0 %
η_mech : 100.0 %
Work : XXXXX.XX W
Exergy dest.: XXXXX.XX
Solved : True
Case 6: Multiple Turbines (Reheat)
Model.add_point('water', '1', P=8e6, T=753.15, Mass_flowrate=1)
Model.add_point('water', '2', P=2e6)
Model.add_point('water', '3', P=2e6, T=753.15) # reheat
Model.add_point('water', '4', P=0.008e6)
Turbine(Model, 'HPT', '1', '2', n_isen=0.85, Calculate=True)
Turbine(Model, 'LPT', '3', '4', n_isen=0.85, Calculate=True)
Print Component Data
print(Model.Component['T1'])
print(Model.Component['T1'])
Complete Example
from ThermoSim import ThermodynamicModel, Turbine
# Create model
Model = ThermodynamicModel()
Model.set_dead_state()
# Define state points
Model.add_point('water', '1', P=8e6, T=753.15, Mass_flowrate=1)
Model.add_point('water', '2', P=0.008e6)
# Add turbine
Turbine(Model, 'MainTurbine', '1', '2', n_isen=0.85, n_mech=0.98, Calculate=True)
# Access results
turb = Model.Component['MainTurbine']
print(f"Work output: {turb.work/1e3:.2f} kW")
print(f"Exergy destruction: {turb.Ex_D/1e3:.2f} kW")
print(f"Outlet temperature: {Model.Point['2'].T - 273.15:.2f} °C")
print(f"Outlet quality: {Model.Point['2'].Q}")