File size: 2,321 Bytes
841181d
 
7c08ff9
 
841181d
 
 
 
 
 
 
 
 
 
 
 
 
ed741cc
 
 
 
 
 
 
 
841181d
 
ed741cc
 
841181d
ed741cc
 
 
 
 
 
 
 
841181d
ed741cc
 
7c08ff9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import streamlit as st
import math
import matplotlib.pyplot as plt
import numpy as np

# Function to calculate pipe diameter
def calculate_diameter(flow_rate, velocity):
    try:
        # Calculate diameter (D = sqrt((4 * Q) / (pi * v)))
        diameter = math.sqrt((4 * flow_rate) / (math.pi * velocity))
        return diameter
    except ZeroDivisionError:
        return "Velocity cannot be zero"
    except Exception as e:
        return f"Error: {e}"

# Streamlit application UI
st.set_page_config(page_title="Pipe Sizing Helper", page_icon="🔧")  # Adding an icon and page title
st.title("Pipe Sizing Helper 🔧")

# Adding some description to make the interface more engaging
st.markdown("""
This tool helps you to calculate the **recommended pipe diameter** based on the **flow rate** and **permissible velocity**. 
Fill in the required inputs and click **Calculate Pipe Diameter** to get the result.
""")

# Input fields for flow rate and permissible velocity
flow_rate = st.number_input("Enter the Flow Rate (m³/s):", min_value=0.0, step=0.01, format="%.2f")
velocity = st.number_input("Enter the Permissible Velocity (m/s):", min_value=0.1, step=0.1, format="%.2f")

# Button to trigger pipe diameter calculation
if st.button("Calculate Pipe Diameter"):
    # Only calculate if both inputs are positive
    if flow_rate > 0 and velocity > 0:
        diameter = calculate_diameter(flow_rate, velocity)
        st.success(f"Recommended Pipe Diameter: {diameter:.2f} meters")
    else:
        st.error("Please enter valid positive values for flow rate and velocity.")
else:
    st.info("Click the button to calculate the pipe diameter.")

# Plot the relationship between flow rate and pipe diameter for a fixed velocity
if velocity > 0:
    # Generate a range of flow rates for the graph
    flow_rate_range = np.linspace(0.1, 10, 100)  # Flow rates from 0.1 to 10 m³/s
    diameters = [calculate_diameter(q, velocity) for q in flow_rate_range]

    # Create the plot
    plt.figure(figsize=(8, 6))
    plt.plot(flow_rate_range, diameters, label=f"Velocity = {velocity} m/s", color='b')
    plt.title("Flow Rate vs Pipe Diameter")
    plt.xlabel("Flow Rate (m³/s)")
    plt.ylabel("Pipe Diameter (meters)")
    plt.grid(True)
    plt.legend()
    st.pyplot(plt)  # Display the plot in the Streamlit app