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