Spaces:
Sleeping
Sleeping
| 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!") | |