Skip to content

Horizontal n-Propanol Condenser Rating

Problem

Evaluate the thermal and hydraulic performance of an existing horizontal shell & tube condenser used to condense n-propanol vapor. Unlike the previous design examples, this case operates in Rating Mode, where the exchanger geometry is already known and ProcessPI predicts its operating performance under the specified process conditions.

The condenser has the following specifications:

  • Service: Total Condenser
  • Hot fluid: n-Propanol Vapor
  • Hot fluid flow rate: 60,000 lb/h
  • Condensing temperature: 118°C
  • Operating pressure: 2.03 bar
  • Cooling medium: Water
  • Cooling water inlet temperature: 29.4°C
  • Cooling water outlet temperature: 40.6°C
  • Latent heat of condensation: 663 kJ/kg
  • Tube length: 8 ft
  • Tube OD: 0.75 in
  • Tube ID: 0.70 in
  • Number of tubes: 766
  • Shell diameter: 31 in
  • Tube passes: 4
  • Shell passes: 1
  • Tube layout: Triangular
  • Overall Heat Transfer Coefficient (assumed_U): 568 W/m²·K
  • Design Method: Bell–Delaware

Code

import logging

logging.basicConfig(
    level=logging.DEBUG,
    format="%(levelname)s:%(name)s:%(message)s"
)

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


# ============================================
# COMPONENTS
# ============================================

water = Water()
n_propanol = OrganicLiquid()


# ============================================
# HOT SIDE
# ============================================

hot_in = MaterialStream(
    "npropanol_vapor_in",
    component=n_propanol,
    phase="vapor",
    temperature=Temperature(118, "C"),
    pressure=Pressure(2.03, "bar"),
    mass_flow=MassFlowRate(60000, "lb/h"),
)

hot_out = MaterialStream(
    "npropanol_liquid_out",
    component=n_propanol,
    phase="liquid",
    temperature=Temperature(118, "C"),
)


# ============================================
# COLD SIDE
# ============================================

cold_in = MaterialStream(
    "cooling_water_in",
    component=water,
    phase="liquid",
    temperature=Temperature(29.4, "C"),
    pressure=Pressure(1, "bar"),
)

cold_out = MaterialStream(
    "cooling_water_out",
    component=water,
    temperature=Temperature(40.6, "C"),
)


# ============================================
# RATE EXISTING CONDENSER
# ============================================

hx = HeatExchangerEngine(
    method="bell_delaware"
)

hx.fit(

    hx_type="condenser",

    hot_in=hot_in,
    hot_out=hot_out,

    cold_in=cold_in,
    cold_out=cold_out,

    latent_heat=663000,

    orientation="horizontal",

    shell_passes=1,
    tube_passes=4,

    tube_length=Length(8, "ft").to("m").value,
    tube_od=Length(0.75, "in").to("m").value,
    tube_id=Length(0.70, "in").to("m").value,

    tube_count=766,

    shell_diameter=Length(31, "in").to("m").value,

    tube_pitch=Length(1.0625, "in").to("m").value,
    tube_layout="triangular",

    shell_dp=Pressure(2, "psi"),
    tube_dp=Pressure(10, "psi"),

    assumed_U=HeatTransferCoefficient(568, "W/m2K"),

    mode="rate",

    verbose=True,
)

results = hx.run()

print(results.summary())

# Complete engineering report
results.detailed_summary()

Output

Heat Exchanger Summary
==============================
Type                  : condenser
Type Selection        : explicit
Method                : bell_delaware
Heat Duty             : 5012.192 kW
Area                  : 111.784 m2
U Calculated          : 737.638 W/m2K
U Basis               : assumed
Tube Velocity         : 2.272 m/s
Shell Velocity        : 16.604 m/s
Tube Pressure Drop    : 69.983 kPa
Shell Pressure Drop   : 40.319 kPa
Tube Count            : 766
Tube Length           : 2.438 m
Status                : PRESSURE_DROP_FAILURE

Pressure Drop Assessment
------------------------------
Tube ΔP Limit        : 68.948 kPa
Tube ΔP Actual       : 69.983 kPa
Shell ΔP Limit       : 13.790 kPa
Shell ΔP Actual      : 40.319 kPa

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

Engineering Insights
------------------------------
• Heat-transfer coefficient within acceptable range.
• Tube-side velocity 2.27 m/s is above the 0.6-2 m/s range. Potential tube-side erosion/vibration risk.
• Shell-side velocity 16.60 m/s is within the 10-30 m/s range.
• Tube-side pressure drop exceeds allowable limit.
• Shell-side pressure drop exceeds allowable limit.

Warnings
------------------------------
• [FLOW_BALANCE_INFO] HeatExchanger: calculated cold-side mass flow 107.035 kg/s from energy balance using hot-side flow 7.55987 kg/s.
• [GEOMETRY_WARNING] Bundle diameter uses Sinnott Table 12.4, which is for a pitch of 1.25 do; the pitch here is 1.417 do
• [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
• Tube velocity high (2.27 m/s)

Discussion

This example demonstrates the Rating Mode capabilities of the ProcessPI HeatExchangerEngine.

Unlike Design Mode, where the exchanger geometry is determined automatically, Rating Mode evaluates the performance of an existing exchanger using its known mechanical dimensions.

The engine performs a complete thermal and hydraulic assessment while preserving the specified geometry.

During the evaluation, ProcessPI calculates:

  • Heat duty
  • Heat-transfer area
  • Overall heat-transfer coefficient
  • Tube-side heat-transfer coefficient
  • Shell-side heat-transfer coefficient
  • LMTD
  • Reynolds number
  • Tube velocity
  • Shell velocity
  • Tube-side pressure drop
  • Shell-side pressure drop
  • Engineering feasibility
  • Hydraulic limitations
  • Design warnings
  • Engineering insights

Rating Results

Parameter Value
Service Total Condenser
Mode Rating
Method Bell–Delaware
Heat Duty 5012.19 kW
Heat Transfer Area 111.78 m²
Overall U (Calculated) 737.64 W/m²·K
Tube Count 766
Tube Length 2.438 m
Tube Velocity 2.272 m/s
Shell Velocity 16.604 m/s
Tube Pressure Drop 69.983 kPa
Shell Pressure Drop 40.319 kPa
Status PRESSURE_DROP_FAILURE

The heat duty is the latent duty of the condensing vapor, m·λ = 7.560 kg/s × 663 kJ/kg = 5012.2 kW. The cooling-water flow (107.0 kg/s) is calculated from the same duty, so the water takes it from 29.4 to 40.6°C. At the assumed U of 568 W/m²·K and the condensing LMTD of 82.87 K, the duty needs 106.5 m² of the 111.8 m² installed.


Engineering Assessment

The thermal check passes, with the 111.8 m² installed against the 106.5 m² the duty needs. The hydraulic evaluation shows that both pressure drops exceed their limits:

  • Tube side: 69.98 kPa against a 10 psi (68.95 kPa) limit
  • Shell side: 40.32 kPa against a 2 psi (13.79 kPa) limit

The engine also flags both velocities: the shell-side vapor velocity as high, and the 2.27 m/s cooling-water velocity as above the 2.0 m/s the condenser service allows in the tubes, so the hydraulic check fails as well. The pressure-drop failure ranks first, and the exchanger status is reported as PRESSURE_DROP_FAILURE.

This demonstrates one of the strengths of the ProcessPI HeatExchangerEngine—it evaluates both thermal and hydraulic performance, rather than relying solely on heat duty calculations.


Raw Engineering Data

In addition to the summary report, the engine returns an extensive engineering dataset, including:

  • Heat duty
  • LMTD
  • Overall U (assumed and calculated)
  • Tube and shell heat-transfer coefficients
  • Tube and shell Reynolds numbers
  • Pressure drops
  • Fluid assignment
  • Feasibility summary
  • Warning details
  • Optimization history
  • Convergence history
  • Engineering insights
  • Calculation trace

These values are available through:

results.detailed_summary()

Diagnostic Utilities

ProcessPI provides several reporting utilities for engineering analysis:

results.summary()

Produces a concise engineering report.

results.detailed_summary()

Returns the complete calculation dictionary.

results.trace()

Displays the engineering calculation trace grouped by thermal, hydraulic, geometry, and phase-change calculations.

results.debug_summary()

Returns diagnostic information including solver status, warnings, optimization actions, convergence information, and engineering validation results.


Conclusion

This example illustrates how Rating Mode can be used to assess existing heat exchangers during plant revamps, debottlenecking studies, troubleshooting, and performance monitoring.

Rather than redesigning the equipment, the ProcessPI HeatExchangerEngine predicts how an existing exchanger will perform under current operating conditions and clearly identifies thermal and hydraulic limitations that may affect long-term operation.