sheikhzain185 commited on
Commit
6e8da79
·
verified ·
1 Parent(s): 04ce1ee

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +65 -0
app.py ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import numpy as np
3
+ import pandas as pd
4
+
5
+ # App title
6
+ st.title("Shell and Tube Heat Exchanger Design")
7
+
8
+ # Sidebar for user inputs
9
+ st.sidebar.header("Input Parameters")
10
+
11
+ # Input parameters
12
+ fluid_1 = st.sidebar.selectbox("Fluid on Shell Side", ["Water", "Oil", "Air"])
13
+ fluid_2 = st.sidebar.selectbox("Fluid on Tube Side", ["Water", "Oil", "Air"])
14
+ flow_rate_1 = st.sidebar.number_input("Flow Rate (Shell Side) [kg/s]", min_value=0.1, value=1.0, step=0.1)
15
+ flow_rate_2 = st.sidebar.number_input("Flow Rate (Tube Side) [kg/s]", min_value=0.1, value=1.0, step=0.1)
16
+ inlet_temp_1 = st.sidebar.number_input("Inlet Temperature (Shell Side) [°C]", min_value=-50.0, value=50.0, step=1.0)
17
+ inlet_temp_2 = st.sidebar.number_input("Inlet Temperature (Tube Side) [°C]", min_value=-50.0, value=20.0, step=1.0)
18
+ desired_outlet_temp_1 = st.sidebar.number_input("Desired Outlet Temperature (Shell Side) [°C]", min_value=-50.0, value=70.0, step=1.0)
19
+
20
+ # Thermal properties
21
+ fluid_properties = {
22
+ "Water": {"cp": 4186, "density": 997},
23
+ "Oil": {"cp": 2000, "density": 900},
24
+ "Air": {"cp": 1005, "density": 1.2},
25
+ }
26
+
27
+ cp_1 = fluid_properties[fluid_1]["cp"]
28
+ cp_2 = fluid_properties[fluid_2]["cp"]
29
+
30
+ # Calculations
31
+ heat_duty = flow_rate_1 * cp_1 * (desired_outlet_temp_1 - inlet_temp_1) # Heat duty in Watts
32
+ outlet_temp_2 = inlet_temp_2 + (heat_duty / (flow_rate_2 * cp_2)) # Estimate outlet temperature for tube side
33
+
34
+ # Display results
35
+ st.header("Design Results")
36
+ st.write(f"**Heat Duty:** {heat_duty / 1000:.2f} kW")
37
+ st.write(f"**Estimated Outlet Temperature (Tube Side):** {outlet_temp_2:.2f} °C")
38
+
39
+ # Preliminary sizing
40
+ U = 500 # Overall heat transfer coefficient (W/m^2.K), assumed
41
+ LMTD = ((desired_outlet_temp_1 - inlet_temp_2) - (inlet_temp_1 - outlet_temp_2)) / np.log(
42
+ (desired_outlet_temp_1 - inlet_temp_2) / (inlet_temp_1 - outlet_temp_2)
43
+ )
44
+ area = heat_duty / (U * LMTD) # Heat transfer area (m^2)
45
+
46
+ st.write(f"**Log Mean Temperature Difference (LMTD):** {LMTD:.2f} °C")
47
+ st.write(f"**Required Heat Transfer Area:** {area:.2f} m²")
48
+
49
+ # Additional features
50
+ st.header("Additional Options")
51
+ if st.checkbox("View Example Tube and Shell Details"):
52
+ st.write("**Example Tube Details:**")
53
+ st.write("- Material: Copper")
54
+ st.write("- Inner Diameter: 15 mm")
55
+ st.write("- Outer Diameter: 18 mm")
56
+ st.write("- Length: 2.0 m")
57
+ st.write("")
58
+ st.write("**Example Shell Details:**")
59
+ st.write("- Material: Carbon Steel")
60
+ st.write("- Diameter: 0.5 m")
61
+ st.write("- Length: 2.0 m")
62
+ st.write("- Number of Tubes: 50")
63
+
64
+ # Footer
65
+ st.sidebar.write("Developed by a Chemical Engineering Enthusiast")