Mixer - Nouman090/ThermoSim GitHub Wiki
A mixer combines multiple inlet streams into a single outlet stream. Mass and energy are conserved; the outlet enthalpy is calculated from the mass-weighted average of inlet enthalpies.
Physics
ṁ_out = Σ ṁ_in,i
H_out = (Σ ṁ_in,i × H_in,i) / ṁ_out
Ex_D = Σ Ex_in,i - Ex_out
Pressure is typically taken from the first inlet or can be specified for the outlet.
Syntax
Mixer(Model, ID, In_states, Out_state, Calculate=False)
| Parameter | Type | Default | Description |
|---|---|---|---|
Model |
ThermodynamicModel | — | The model object |
ID |
str | — | Unique component name |
In_states |
list of str | — | List of inlet state point names |
Out_state |
str | — | Outlet state point name |
Calculate |
bool | False | Solve immediately if True |
Output Attributes
| Attribute | Type | Unit | Description |
|---|---|---|---|
.Ex_D |
float/str | W | Exergy destruction |
.Solution_Status |
bool | — | True if solved |
.Out |
Prop | — | Outlet state point object |
Cases
Case 1: Two Inlets, One Outlet
Most common. Mix two streams with known mass flows and enthalpies.
from Thermosim import ThermodynamicModel, Mixer
Model = ThermodynamicModel()
Model.set_dead_state()
# Inlet 1: hot water
Model.add_point('water', 'In1', P=2e5, T=353.15, Mass_flowrate=0.5)
# Inlet 2: cold water
Model.add_point('water', 'In2', P=2e5, T=293.15, Mass_flowrate=0.3)
# Outlet: pressure known
Model.add_point('water', 'Out', P=2e5)
Mixer(Model, 'Mix1', In_states=['In1', 'In2'], Out_state='Out', Calculate=True)
print(f"Outlet mass flow: {Model.Point['Out'].Mass_flowrate:.2f} kg/s")
print(f"Outlet T: {Model.Point['Out'].T - 273.15:.2f} °C")
print(f"Outlet H: {Model.Point['Out'].H:.2f} J/kg")
Case 2: Three Inlets
Mix three streams with different temperatures.
Model = ThermodynamicModel()
Model.set_dead_state()
Model.add_point('water', 'A', P=1.5e5, T=363.15, Mass_flowrate=0.4)
Model.add_point('water', 'B', P=1.5e5, T=323.15, Mass_flowrate=0.3)
Model.add_point('water', 'C', P=1.5e5, T=293.15, Mass_flowrate=0.2)
Model.add_point('water', 'Mixed', P=1.5e5)
Mixer(Model, 'Mixer3', In_states=['A', 'B', 'C'], Out_state='Mixed', Calculate=True)
print(f"Total flow: {Model.Point['Mixed'].Mass_flowrate:.2f} kg/s")
print(f"Mixed T: {Model.Point['Mixed'].T - 273.15:.2f} °C")
Case 3: Regenerative Rankine Cycle (Feedwater Heater)
Mix extracted steam with feedwater.
Model = ThermodynamicModel()
Model.set_dead_state()
# Extraction steam
Model.add_point('water', 'Extraction', P=5e5, T=425.15, Mass_flowrate=0.2)
# Feedwater from pump
Model.add_point('water', 'Feedwater', P=5e5, T=313.15, Mass_flowrate=0.8)
# Mixed outlet
Model.add_point('water', 'FWH_out', P=5e5)
Mixer(Model, 'FeedwaterHeater', In_states=['Extraction', 'Feedwater'],
Out_state='FWH_out', Calculate=True)
print(f"FWH outlet T: {Model.Point['FWH_out'].T - 273.15:.2f} °C")
Case 4: Different Fluids (Error Case)
Mixing different fluids will cause errors in property calculations.
# NOT RECOMMENDED: different fluids
Model.add_point('water', 'In1', P=2e5, T=353.15, Mass_flowrate=0.5)
Model.add_point('air', 'In2', P=2e5, T=293.15, Mass_flowrate=0.3)
Model.add_point('water', 'Out', P=2e5)
# This will fail because CoolProp cannot mix fluids
# Mixer(Model, 'Mix1', In_states=['In1', 'In2'], Out_state='Out', Calculate=True)
Print Component Data
print(Model.Component['Mix1'])
Output:
Mix1 (Mixer):
Total mass flow : 0.8000 kg/s
Outlet H : XXXXXX.XX J/kg
Exergy destr. : XXXX.XX
Solved : True
Complete Example
from Thermosim import ThermodynamicModel, Mixer
# Create model
Model = ThermodynamicModel()
Model.set_dead_state()
# Define inlets
Model.add_point('water', 'Hot', P=2e5, T=363.15, Mass_flowrate=0.6)
Model.add_point('water', 'Cold', P=2e5, T=293.15, Mass_flowrate=0.4)
# Define outlet
Model.add_point('water', 'Mixed', P=2e5)
# Add mixer
Mixer(Model, 'MainMixer', In_states=['Hot', 'Cold'], Out_state='Mixed', Calculate=True)
# Access results
mixer = Model.Component['MainMixer']
print(f"Total mass flow: {Model.Point['Mixed'].Mass_flowrate:.2f} kg/s")
print(f"Mixed temperature: {Model.Point['Mixed'].T - 273.15:.2f} °C")
print(f"Mixed enthalpy: {Model.Point['Mixed'].H:.2f} J/kg")
print(f"Exergy destruction: {mixer.Ex_D:.2f} W")