import streamlit as st import math def design_heat_exchanger(duty, t_hot_in, t_hot_out, t_cold_in, t_cold_out, overall_heat_transfer_coeff, fouling_factor): """ Calculate heat transfer area and LMTD for shell-and-tube heat exchanger. Parameters: - duty: Heat duty (kW) - t_hot_in: Hot fluid inlet temperature (°C) - t_hot_out: Hot fluid outlet temperature (°C) - t_cold_in: Cold fluid inlet temperature (°C) - t_cold_out: Cold fluid outlet temperature (°C) - overall_heat_transfer_coeff: Overall heat transfer coefficient (W/m²°C) - fouling_factor: Fouling resistance (m²°C/W) Returns: - Heat transfer area (m²) - Log Mean Temperature Difference (°C) """ try: # Convert duty from kW to W duty_w = duty * 1000 # Calculate Log Mean Temperature Difference (LMTD) delta_t1 = t_hot_in - t_cold_out delta_t2 = t_hot_out - t_cold_in if delta_t1 <= 0 or delta_t2 <= 0: return "Invalid temperature inputs!", "N/A" lmtd = (delta_t1 - delta_t2) / math.log(delta_t1 / delta_t2) # Calculate heat transfer area effective_u = overall_heat_transfer_coeff * (1 - fouling_factor) if effective_u <= 0: return "Invalid fouling factor or heat transfer coefficient!", "N/A" area = duty_w / (effective_u * lmtd) return round(area, 2), round(lmtd, 2) except Exception as e: return str(e), "N/A" # Streamlit App st.title("Shell-and-Tube Heat Exchanger Design") st.write("Enter the design parameters to calculate the heat transfer area and LMTD.") # Input fields duty = st.number_input("Heat Duty (kW)", min_value=0.1, step=0.1) t_hot_in = st.number_input("Hot Fluid Inlet Temperature (°C)", step=0.1) t_hot_out = st.number_input("Hot Fluid Outlet Temperature (°C)", step=0.1) t_cold_in = st.number_input("Cold Fluid Inlet Temperature (°C)", step=0.1) t_cold_out = st.number_input("Cold Fluid Outlet Temperature (°C)", step=0.1) overall_heat_transfer_coeff = st.number_input("Overall Heat Transfer Coefficient (W/m²°C)", min_value=1.0, step=0.1) fouling_factor = st.number_input("Fouling Factor (m²°C/W)", min_value=0.0, max_value=1.0, step=0.01) # Perform calculation on button click if st.button("Calculate"): area, lmtd = design_heat_exchanger( duty, t_hot_in, t_hot_out, t_cold_in, t_cold_out, overall_heat_transfer_coeff, fouling_factor ) st.write("### Results") st.write(f"**Heat Transfer Area:** {area} m²") st.write(f"**Log Mean Temperature Difference:** {lmtd} °C")