File size: 3,034 Bytes
560063f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ad0ed0e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
560063f
 
 
 
 
 
 
 
 
 
 
 
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
67
68
69
70
import streamlit as st
import pandas as pd
import numpy as np
from calculation import SteamPipe

# Load pre-arranged data
insulation_data = pd.read_csv("insulation_data.csv")
cladding_data = pd.read_csv("cladding_data.csv")

# Streamlit UI Design
st.set_page_config(page_title="Steam Pipe Calculator", layout="wide")
st.title("🔥 Steam Pipe Heat Loss & Insulation Calculator")

# Sidebar Inputs
st.sidebar.header("Input Parameters")
steam_flow = st.sidebar.number_input("🚀 Steam Flow (Kg/hr)", min_value=1, value=1000)
inlet_pressure = st.sidebar.number_input("🔥 Inlet Steam Pressure (Kg/cm²g)", min_value=1.0, value=10.0)
superheat = st.sidebar.number_input("🌡️ Degree of Superheat (°C)", min_value=0.0, value=50.0)
steam_temp = st.sidebar.number_input("🌡️ Steam Temperature (°C)", min_value=100.0, value=200.0)
line_size = st.sidebar.selectbox("📏 Line Size (Inch)", ["1", "2", "3", "4", "6", "8", "10"])
ambient_temp = st.sidebar.number_input("🌤️ Ambient Temperature (°C)", min_value=-50.0, value=25.0)
ambient_velocity = st.sidebar.number_input("💨 Ambient Air Velocity (m/s)", min_value=0.0, value=1.0)
insulation_material = st.sidebar.selectbox("🛡️ Insulation Material", insulation_data["Material"].unique())
cladding_material = st.sidebar.selectbox("🔩 Cladding Material", cladding_data["Material"].unique())
user_insulation_thickness = st.sidebar.number_input("📏 User-defined Insulation Thickness (mm)", min_value=0.0, value=0.0)

# Perform Calculations
pipe = SteamPipe(
    steam_flow, 
    inlet_pressure, 
    superheat, 
    steam_temp, 
    line_size, 
    ambient_temp, 
    ambient_velocity, 
    insulation_material, 
    cladding_material, 
    user_insulation_thickness if user_insulation_thickness > 0 else None
)

# Perform calculation with adjusted insulation thickness
def calculate_insulation_thickness():
    pipe_radius = float(line_size) * 0.0254 / 2  # Convert inches to meters
    k = insulation_data.loc[insulation_data["Material"] == insulation_material, "Thermal_Conductivity (W/mK)"].values
    
    if len(k) == 0:
        st.error("Thermal conductivity data not found for selected insulation material.")
        return 0.0
    
    k = k[0]
    target_heat_loss = 100  # Assumed target value (can be modified based on requirements)
    
    thickness = (np.exp((2 * np.pi * k * (steam_temp - ambient_temp)) / target_heat_loss) * pipe_radius) - pipe_radius
    return max(thickness, 0.01)  # Ensure minimum insulation thickness

required_thickness = calculate_insulation_thickness()
outlet_temp, heat_loss = pipe.calculate(required_thickness)

# Display Results
st.subheader("Results")
st.metric(label="Outlet Steam Temperature (°C)", value=f"{outlet_temp:.2f}")
st.metric(label="Required Insulation Thickness (m)", value=f"{required_thickness:.4f}")
st.metric(label="Heat Loss per Unit Length (W/m)", value=f"{heat_loss:.2f}")

# Run Streamlit App
if __name__ == "__main__":
    st.write("🔍 Adjust inputs in the sidebar and view results dynamically!")