Pump / app.py
ahmad123445's picture
Update app.py
f040d18 verified
import streamlit as st
# App Header
st.title("Temperature Conversion & Centrifugal Pump Design App")
st.write("Created by **Kamran Liaqat**")
st.write("Convert temperatures and calculate centrifugal pump power requirements from a unified interface.")
# ------------------------
# Section 1: Temperature Conversion
# ------------------------
st.header("Temperature Conversion")
# Conversion Logic
def convert_temperature(value, from_unit, to_unit):
try:
if from_unit == "Celsius":
if to_unit == "Kelvin":
return value + 273.15
elif to_unit == "Fahrenheit":
return (value * 9 / 5) + 32
elif to_unit == "Rankine":
return (value + 273.15) * 9 / 5
else:
return value
elif from_unit == "Fahrenheit":
if to_unit == "Celsius":
return (value - 32) * 5 / 9
elif to_unit == "Kelvin":
return (value - 32) * 5 / 9 + 273.15
elif to_unit == "Rankine":
return value + 459.67
else:
return value
elif from_unit == "Kelvin":
if to_unit == "Celsius":
return value - 273.15
elif to_unit == "Fahrenheit":
return (value - 273.15) * 9 / 5 + 32
elif to_unit == "Rankine":
return value * 9 / 5
else:
return value
elif from_unit == "Rankine":
if to_unit == "Celsius":
return (value - 491.67) * 5 / 9
elif to_unit == "Fahrenheit":
return value - 459.67
elif to_unit == "Kelvin":
return value * 5 / 9
else:
return value
except Exception as e:
st.error(f"Error: {str(e)}")
return None
# Input for Temperature Conversion
st.write("### Temperature Conversion Tool")
from_unit = st.selectbox("Convert From:", ["Celsius", "Fahrenheit", "Kelvin", "Rankine"])
to_unit = st.selectbox("Convert To:", ["Celsius", "Fahrenheit", "Kelvin", "Rankine"])
temp_value = st.number_input(f"Enter Temperature in {from_unit}:", value=0.0)
if st.button("Convert Temperature"):
converted_value = convert_temperature(temp_value, from_unit, to_unit)
if converted_value is not None:
st.success(f"{temp_value} {from_unit} = {converted_value:.2f} {to_unit}")
# ------------------------
# Section 2: Centrifugal Pump Design
# ------------------------
st.header("Centrifugal Pump Design Calculator")
# Inputs for Pump Design with Unit Conversion
st.write("### Input Parameters (with unit conversion)")
# Flow Rate (Q)
flow_rate = st.number_input("Flow Rate (Q):", min_value=0.0, value=10.0, step=0.1)
flow_rate_unit = st.selectbox("Select unit for Flow Rate:", ["m³/h", "L/s", "gpm"])
# Head (H)
head = st.number_input("Head (H):", min_value=0.0, value=20.0, step=0.1)
head_unit = st.selectbox("Select unit for Head:", ["m", "ft"])
# Efficiency (η)
efficiency = st.number_input("Efficiency (η) in %:", min_value=0.0, max_value=100.0, value=75.0, step=0.1)
# Fluid Density (ρ)
density = st.number_input("Fluid Density (ρ):", min_value=0.0, value=1000.0, step=1.0)
density_unit = st.selectbox("Select unit for Density:", ["kg/m³", "g/cm³"])
# Convert Units for Flow Rate
if flow_rate_unit == "L/s":
flow_rate_m3s = flow_rate / 1000 # Convert from L/s to m³/s
elif flow_rate_unit == "gpm":
flow_rate_m3s = flow_rate * 3.78541 / 60000 # Convert from gpm to m³/s
else:
flow_rate_m3s = flow_rate / 3600 # Convert from m³/h to m³/s
# Convert Units for Head
if head_unit == "ft":
head_m = head * 0.3048 # Convert from ft to meters
else:
head_m = head
# Convert Units for Fluid Density
if density_unit == "g/cm³":
density_kgm3 = density * 1000 # Convert from g/cm³ to kg/m³
else:
density_kgm3 = density
# Calculation Logic for Centrifugal Pump
def calculate_pump_power(flow_rate, head, efficiency, density):
try:
# Convert efficiency to decimal
efficiency = efficiency / 100
# Calculate hydraulic power (P_h = ρ * g * Q * H)
g = 9.81 # gravitational constant, m/s²
hydraulic_power = density * g * flow_rate * head # in watts
# Calculate shaft power (P_s = P_h / η)
shaft_power = hydraulic_power / efficiency # in watts
# Convert to kW
hydraulic_power_kw = hydraulic_power / 1000
shaft_power_kw = shaft_power / 1000
return hydraulic_power_kw, shaft_power_kw
except Exception as e:
st.error(f"Error: {str(e)}")
return None, None
# Perform calculation
if st.button("Calculate Pump Power"):
hydraulic_power_kw, shaft_power_kw = calculate_pump_power(flow_rate_m3s, head_m, efficiency, density_kgm3)
if hydraulic_power_kw is not None:
# Display Results
st.write(f"### Results:")
st.write(f"**Hydraulic Power (P_h):** {hydraulic_power_kw:.2f} kW")
st.write(f"**Shaft Power (P_s):** {shaft_power_kw:.2f} kW")