File size: 2,632 Bytes
6e8da79 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
import streamlit as st
import numpy as np
import pandas as pd
# App title
st.title("Shell and Tube Heat Exchanger Design")
# Sidebar for user inputs
st.sidebar.header("Input Parameters")
# 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)
# Thermal properties
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"]
# Calculations
heat_duty = flow_rate_1 * cp_1 * (desired_outlet_temp_1 - inlet_temp_1) # Heat duty in Watts
outlet_temp_2 = inlet_temp_2 + (heat_duty / (flow_rate_2 * cp_2)) # Estimate outlet temperature for tube side
# Display results
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")
# Preliminary sizing
U = 500 # Overall heat transfer coefficient (W/m^2.K), assumed
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) # Heat transfer area (m^2)
st.write(f"**Log Mean Temperature Difference (LMTD):** {LMTD:.2f} °C")
st.write(f"**Required Heat Transfer Area:** {area:.2f} m²")
# Additional features
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")
# Footer
st.sidebar.write("Developed by a Chemical Engineering Enthusiast")
|