Skip to content

Shell & Tube Heat Exchanger — Benzene Cooler

Problem

Design a Shell & Tube Heat Exchanger to cool liquid benzene under the following operating conditions:

  • Hot fluid: Benzene
  • Hot fluid flow rate: 21,000 kg/h
  • Inlet temperature: 90°C
  • Outlet temperature: 30°C
  • Cold fluid: Cooling Water
  • Cooling water flow rate: 60,500 kg/h
  • Cooling water inlet temperature: 15°C
  • Starting estimate of the overall heat-transfer coefficient (assumed_U): 575 W/m²·K
  • Maximum allowable tube-side pressure drop: 1 bar
  • Maximum allowable shell-side pressure drop: 1 bar
  • Heat exchanger mode: Design

Code

from processpi.units import *
from processpi.components import *
from processpi.streams import MaterialStream
from processpi.equipment.heatexchangers import HeatExchangerEngine


# ============================================
# DEFINE COMPONENTS
# ============================================

benzene = Benzene()
water = Water()


# ============================================
# DEFINE MATERIAL STREAMS
# ============================================

hot_in = MaterialStream(
    "hot_in",
    component=benzene,
    temperature=Temperature(90, "C"),
    mass_flow=MassFlowRate(21000, "kg/h"),
)

hot_out = MaterialStream(
    "hot_out",
    component=benzene,
    temperature=Temperature(30, "C"),
)

cold_in = MaterialStream(
    "cold_in",
    component=water,
    temperature=Temperature(15, "C"),
    mass_flow=MassFlowRate(60500, "kg/h"),
)

# Outlet temperature will be calculated
cold_out = MaterialStream(
    "cold_out",
    component=water
)


# ============================================
# CREATE HEAT EXCHANGER MODEL
# ============================================

hx = HeatExchangerEngine()

hx.fit(
    hot_in=hot_in,
    hot_out=hot_out,
    cold_in=cold_in,
    cold_out=cold_out,
    assumed_U=HeatTransferCoefficient(575, "W/m2K"),
    shell_dp=Pressure(1, "bar"),
    tube_dp=Pressure(1, "bar"),
    mode="design"
)

results = hx.run()


# ============================================
# OUTPUT
# ============================================

print(results.summary())

# Complete calculation dictionary
results.detailed_summary()

assumed_U is only the first guess: the engine calculates U from the film coefficients and resizes the area until U converges. Pass specified_U instead to size the area at a fixed U.


Output

Heat Exchanger Summary
==============================
Type                  : shell_and_tube
Type Selection        : auto
Reason                : no hx_type given; larger inlet mass flow 16.81 kg/s > double pipe limit 1 kg/s
Method                : kern
Heat Duty             : 649.113 kW
Area                  : 30.084 m2
U Calculated          : 706.159 W/m2K
U Basis               : assumed
Tube Velocity         : 1.997 m/s
Shell Velocity        : 0.535 m/s
Tube Pressure Drop    : 67.313 kPa
Shell Pressure Drop   : 18.005 kPa
Tube Count            : 168
Tube Length           : 3.000 m
Status                : MARGINAL

Pressure Drop Assessment
------------------------------
Tube ΔP Limit        : 100.000 kPa
Tube ΔP Actual       : 67.313 kPa
Shell ΔP Limit       : 100.000 kPa
Shell ΔP Actual      : 18.005 kPa

Engineering Feasibility
------------------------------
Thermal Performance  : PASS
Hydraulic Performance: PASS
Pressure Drop        : PASS

Engineering Insights
------------------------------
• Heat-transfer coefficient within acceptable range.
• Tube-side velocity 2.00 m/s is within the 1-2.5 m/s range.
• Shell-side velocity 0.53 m/s is within the 0.5-1.5 m/s range.

Warnings
------------------------------
• [ASSUMPTION_WARNING] Sieder-Tate (mu/mu_w)^0.14 taken as 1 on the shell side: no hot_wall_viscosity given
• [ASSUMPTION_WARNING] Sieder-Tate (mu/mu_w)^0.14 taken as 1 on the tube side: no cold_wall_viscosity given

Discussion

The HeatExchangerEngine automatically performs a complete thermal and hydraulic design of the exchanger.

For this case, ProcessPI selected a Shell & Tube Heat Exchanger (no hx_type was given, and the inlet flow is above the double pipe limit) and sized it with the Kern method, the engine's default. Pass method="bell_delaware" to HeatExchangerEngine for the Bell-Delaware shell-side method.

Design Results

Parameter Value
Heat Exchanger Type Shell & Tube
Design Method Kern
Heat Duty 649.11 kW
Heat Transfer Area 30.08 m² (29.57 m² required)
Calculated Overall U 706.16 W/m²·K
Tube Count 168
Tube Length 3.0 m
Tube Velocity 1.997 m/s
Shell Velocity 0.535 m/s

The calculated tube and shell velocities fall within commonly recommended industrial design ranges, while the required heat-transfer area satisfies the specified duty.

The engineering assessment also indicates that the calculated overall heat-transfer coefficient is acceptable for this service. The status is MARGINAL because the area, 30.08 m², is less than 5% above the 29.57 m² the duty requires.

For additional design information, use:

results.detailed_summary()

to obtain the complete calculation results, or

results.trace()

to view the engineering calculation trace generated during the design process.