|
import streamlit as st |
|
import numpy as np |
|
import pandas as pd |
|
|
|
|
|
st.title("Shell and Tube Heat Exchanger Design") |
|
|
|
|
|
st.sidebar.header("Input Parameters") |
|
|
|
|
|
fluid_1 = st.sidebar.selectbox("Fluid on Shell Side", ["Water", "Oil", "Air"]) |
|
fluid_2 = st.sidebar.selectbox("Fluid on Tube Side", ["Water", "Oil", "Air"]) |
|
flow_rate_1 = st.sidebar.number_input("Flow Rate (Shell Side) [kg/s]", min_value=0.1, value=1.0, step=0.1) |
|
flow_rate_2 = st.sidebar.number_input("Flow Rate (Tube Side) [kg/s]", min_value=0.1, value=1.0, step=0.1) |
|
inlet_temp_1 = st.sidebar.number_input("Inlet Temperature (Shell Side) [°C]", min_value=-50.0, value=50.0, step=1.0) |
|
inlet_temp_2 = st.sidebar.number_input("Inlet Temperature (Tube Side) [°C]", min_value=-50.0, value=20.0, step=1.0) |
|
desired_outlet_temp_1 = st.sidebar.number_input("Desired Outlet Temperature (Shell Side) [°C]", min_value=-50.0, value=70.0, step=1.0) |
|
|
|
|
|
fluid_properties = { |
|
"Water": {"cp": 4186, "density": 997}, |
|
"Oil": {"cp": 2000, "density": 900}, |
|
"Air": {"cp": 1005, "density": 1.2}, |
|
} |
|
|
|
cp_1 = fluid_properties[fluid_1]["cp"] |
|
cp_2 = fluid_properties[fluid_2]["cp"] |
|
|
|
|
|
heat_duty = flow_rate_1 * cp_1 * (desired_outlet_temp_1 - inlet_temp_1) |
|
outlet_temp_2 = inlet_temp_2 + (heat_duty / (flow_rate_2 * cp_2)) |
|
|
|
|
|
st.header("Design Results") |
|
st.write(f"**Heat Duty:** {heat_duty / 1000:.2f} kW") |
|
st.write(f"**Estimated Outlet Temperature (Tube Side):** {outlet_temp_2:.2f} °C") |
|
|
|
|
|
U = 500 |
|
LMTD = ((desired_outlet_temp_1 - inlet_temp_2) - (inlet_temp_1 - outlet_temp_2)) / np.log( |
|
(desired_outlet_temp_1 - inlet_temp_2) / (inlet_temp_1 - outlet_temp_2) |
|
) |
|
area = heat_duty / (U * LMTD) |
|
|
|
st.write(f"**Log Mean Temperature Difference (LMTD):** {LMTD:.2f} °C") |
|
st.write(f"**Required Heat Transfer Area:** {area:.2f} m²") |
|
|
|
|
|
st.header("Additional Options") |
|
if st.checkbox("View Example Tube and Shell Details"): |
|
st.write("**Example Tube Details:**") |
|
st.write("- Material: Copper") |
|
st.write("- Inner Diameter: 15 mm") |
|
st.write("- Outer Diameter: 18 mm") |
|
st.write("- Length: 2.0 m") |
|
st.write("") |
|
st.write("**Example Shell Details:**") |
|
st.write("- Material: Carbon Steel") |
|
st.write("- Diameter: 0.5 m") |
|
st.write("- Length: 2.0 m") |
|
st.write("- Number of Tubes: 50") |
|
|
|
|
|
st.sidebar.write("Developed by a Chemical Engineering Enthusiast") |
|
|