heat_exchange#
This module contains heat exchanger unit operations.
- class HX(ID='', ins=None, outs=(), thermo=None, **kwargs)[source]#
Abstract class for counter current heat exchanger.
Abstract methods
- get_streams()
Should return two inlet streams and two outlet streams that exchange heat.
- class HXutility(ID='', ins=None, outs=(), thermo=None, **kwargs)[source]#
Create a heat exchanger that changes temperature of the outlet stream using a heat utility.
- Parameters:
ins (
Stream
], optional) – Inlet.outs (
Stream
], optional) – Outlet.T=None (float) – Temperature of outlet stream [K].
V=None (float) – Vapor fraction of outlet stream.
rigorous=False (bool) – If true, calculate vapor liquid equilibrium
U=None (float, optional) – Enforced overall heat transfer coefficent [kW/m^2/K].
heat_exchanger_type (str, optional) – Heat exchanger type. Defaults to “Floating head”.
N_shells (int, optional) – Number of shells. Defaults to 2.
ft (float, optional) – User imposed correction factor.
heat_only (bool, optional) – If True, heat exchanger can only heat.
cool_only (bool, optional) – If True, heat exchanger can only cool.
heat_transfer_efficiency (bool, optional) – User enforced heat transfer efficiency. A value less than 1 means that a fraction of heat transfered is lost to the environment. Defaults to the heat transfer efficiency of the utility agent.
Notes
Must specify either T or V when creating a HXutility object.
Examples
Run heat exchanger by temperature:
>>> from biosteam.units import HXutility >>> from biosteam import Stream, settings >>> settings.set_thermo(['Water', 'Ethanol'], cache=True) >>> feed = Stream('feed', Water=200, Ethanol=200) >>> hx = HXutility('hx', ins=feed, outs='product', T=50+273.15, ... rigorous=False) # Ignore VLE >>> hx.simulate() >>> hx.show() HXutility: hx ins... [0] feed phase: 'l', T: 298.15 K, P: 101325 Pa flow (kmol/hr): Water 200 Ethanol 200 outs... [0] product phase: 'l', T: 323.15 K, P: 101325 Pa flow (kmol/hr): Water 200 Ethanol 200 >>> hx.results() Heat exchanger Units hx Low pressure steam Duty kJ/hr 1.01e+06 Flow kmol/hr 26.2 Cost USD/hr 6.22 Design Area ft^2 59.9 Overall heat transfer coefficient kW/m^2/K 0.5 Log-mean temperature difference K 101 Fouling correction factor 1 Operating pressure psi 50 Total tube length ft 20 Purchase cost Double pipe USD 4.78e+03 Total purchase cost USD 4.78e+03 Utility cost USD/hr 6.22
Run heat exchanger by vapor fraction:
>>> feed = Stream('feed', Water=200, Ethanol=200) >>> hx = HXutility('hx', ins=feed, outs='product', V=1, ... rigorous=True) # Include VLE >>> hx.simulate() >>> hx.show() HXutility: hx ins... [0] feed phase: 'l', T: 298.15 K, P: 101325 Pa flow (kmol/hr): Water 200 Ethanol 200 outs... [0] product phase: 'g', T: 357.44 K, P: 101325 Pa flow (kmol/hr): Water 200 Ethanol 200 >>> hx.results() Heat exchanger Units hx Low pressure steam Duty kJ/hr 1.94e+07 Flow kmol/hr 500 Cost USD/hr 119 Design Area ft^2 716 Overall heat transfer coefficient kW/m^2/K 1 Log-mean temperature difference K 80.8 Fouling correction factor 1 Operating pressure psi 50 Total tube length ft 20 Purchase cost Floating head USD 2.65e+04 Total purchase cost USD 2.65e+04 Utility cost USD/hr 119
We can also specify the heat transfer efficiency of the heat exchanger:
>>> hx.heat_transfer_efficiency = 1. # Originally 0.95 for low pressure steam >>> hx.simulate() >>> hx.results() # Notice how the duty, utility cost, and capital cost decreased Heat exchanger Units hx Low pressure steam Duty kJ/hr 1.84e+07 Flow kmol/hr 475 Cost USD/hr 113 Design Area ft^2 680 Overall heat transfer coefficient kW/m^2/K 1 Log-mean temperature difference K 80.8 Fouling correction factor 1 Operating pressure psi 50 Total tube length ft 20 Purchase cost Floating head USD 2.61e+04 Total purchase cost USD 2.61e+04 Utility cost USD/hr 113
Run heat exchanger by vapor fraction:
>>> feed = Stream('feed', Water=200, Ethanol=200) >>> hx = HXutility('hx', ins=feed, outs='product', V=1, ... rigorous=True) # Include VLE >>> hx.simulate() >>> hx.show() HXutility: hx ins... [0] feed phase: 'l', T: 298.15 K, P: 101325 Pa flow (kmol/hr): Water 200 Ethanol 200 outs... [0] product phase: 'g', T: 357.44 K, P: 101325 Pa flow (kmol/hr): Water 200 Ethanol 200 >>> hx.results() Heat exchanger Units hx Low pressure steam Duty kJ/hr 1.94e+07 Flow kmol/hr 500 Cost USD/hr 119 Design Area ft^2 716 Overall heat transfer coefficient kW/m^2/K 1 Log-mean temperature difference K 80.8 Fouling correction factor 1 Operating pressure psi 50 Total tube length ft 20 Purchase cost Floating head USD 2.65e+04 Total purchase cost USD 2.65e+04 Utility cost USD/hr 119
We can also specify the heat transfer efficiency of the heat exchanger:
>>> hx.heat_transfer_efficiency = 1. # Originally 0.95 for low pressure steam >>> hx.simulate() >>> hx.results() # Notice how the duty, utility cost, and capital cost decreased Heat exchanger Units hx Low pressure steam Duty kJ/hr 1.84e+07 Flow kmol/hr 475 Cost USD/hr 113 Design Area ft^2 680 Overall heat transfer coefficient kW/m^2/K 1 Log-mean temperature difference K 80.8 Fouling correction factor 1 Operating pressure psi 50 Total tube length ft 20 Purchase cost Floating head USD 2.61e+04 Total purchase cost USD 2.61e+04 Utility cost USD/hr 113
- class HXprocess(ID='', ins=None, outs=(), thermo=None, **kwargs)[source]#
Counter current heat exchanger for process fluids. Rigorously transfers heat until the pinch temperature or a user set temperature limit is reached.
- Parameters:
ins (
Stream
], optional) –[0] Inlet process fluid a
[1] Inlet process fluid b
outs (
Stream
], optional) –[0] Outlet process fluid a
[1] Outlet process fluid b
U=None (float, optional) – Enforced overall heat transfer coefficent [kW/m^2/K].
dT=5. (float) – Pinch temperature difference (i.e. dT = abs(outs[0].T - outs[1].T)).
T_lim0 (float, optional) – Temperature limit of outlet stream at index 0.
T_lim1 (float, optional) – Temperature limit of outlet stream at index 1.
heat_exchanger_type (str, optional) – Heat exchanger type. Defaults to ‘Floating head’.
N_shells=2 (int, optional) – Number of shells.
ft=None (float, optional) – User enforced correction factor.
phase0=None ('l' or 'g', optional) – User enforced phase of outlet stream at index 0.
phase1=None ('l' or 'g', optional) – User enforced phase of outlet stream at index 1.
H_lim0 (float, optional) – Enthalpy limit of outlet stream at index 0.
H_lim1 (float, optional) – Enthalpy limit of outlet stream at index 1.
Examples
Rigorous heat exchange until pinch temperature is reached:
>>> from biosteam.units import HXprocess >>> from biosteam import Stream, settings >>> settings.set_thermo(['Water', 'Ethanol']) >>> in_a = Stream('in_a', Ethanol=50, T=351.43, phase='g') >>> in_b = Stream('in_b', Water=200) >>> hx = HXprocess('hx', ins=(in_a, in_b), outs=('out_a', 'out_b')) >>> hx.simulate() >>> hx.show(T='degC:.2g') HXprocess: hx ins... [0] in_a phase: 'g', T: 78 degC, P: 101325 Pa flow (kmol/hr): Ethanol 50 [1] in_b phase: 'l', T: 25 degC, P: 101325 Pa flow (kmol/hr): Water 200 outs... [0] out_a phases: ('g', 'l'), T: 78 degC, P: 101325 Pa flow (kmol/hr): (g) Ethanol 31.4 (l) Ethanol 18.6 [1] out_b phase: 'l', T: 73 degC, P: 101325 Pa flow (kmol/hr): Water 200
>>> hx.results() Heat exchanger Units hx Design Area ft^2 213 Overall heat transfer coefficient kW/m^2/K 0.5 Log-mean temperature difference K 20.4 Fouling correction factor 1 Operating pressure psi 14.7 Total tube length ft 20 Purchase cost Floating head USD 2.06e+04 Total purchase cost USD 2.06e+04 Utility cost USD/hr 0
Sensible fluids case with user enfored outlet phases (more computationally efficient):
>>> from biosteam.units import HXprocess >>> from biosteam import Stream, settings >>> settings.set_thermo(['Water', 'Ethanol']) >>> in_a = Stream('in_a', Water=200, T=350) >>> in_b = Stream('in_b', Ethanol=200) >>> hx = HXprocess('hx', ins=(in_a, in_b), outs=('out_a', 'out_b'), ... phase0='l', phase1='l') >>> hx.simulate() >>> hx.show() HXprocess: hx ins... [0] in_a phase: 'l', T: 350 K, P: 101325 Pa flow (kmol/hr): Water 200 [1] in_b phase: 'l', T: 298.15 K, P: 101325 Pa flow (kmol/hr): Ethanol 200 outs... [0] out_a phase: 'l', T: 303.15 K, P: 101325 Pa flow (kmol/hr): Water 200 [1] out_b phase: 'l', T: 328.09 K, P: 101325 Pa flow (kmol/hr): Ethanol 200 >>> hx.results() Heat exchanger Units hx Design Area ft^2 369 Overall heat transfer coefficient kW/m^2/K 0.5 Log-mean temperature difference K 11.4 Fouling correction factor 1 Operating pressure psi 14.7 Total tube length ft 20 Purchase cost Floating head USD 2.23e+04 Total purchase cost USD 2.23e+04 Utility cost USD/hr 0 >>> hx.results() Heat exchanger Units hx Design Area ft^2 369 Overall heat transfer coefficient kW/m^2/K 0.5 Log-mean temperature difference K 11.4 Fouling correction factor 1 Operating pressure psi 14.7 Total tube length ft 20 Purchase cost Floating head USD 2.23e+04 Total purchase cost USD 2.23e+04 Utility cost USD/hr 0