ahmad123445 commited on
Commit
f040d18
·
verified ·
1 Parent(s): 2cb46c9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +140 -0
app.py CHANGED
@@ -0,0 +1,140 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+
3
+ # App Header
4
+ st.title("Temperature Conversion & Centrifugal Pump Design App")
5
+ st.write("Created by **Kamran Liaqat**")
6
+ st.write("Convert temperatures and calculate centrifugal pump power requirements from a unified interface.")
7
+
8
+ # ------------------------
9
+ # Section 1: Temperature Conversion
10
+ # ------------------------
11
+ st.header("Temperature Conversion")
12
+
13
+ # Conversion Logic
14
+ def convert_temperature(value, from_unit, to_unit):
15
+ try:
16
+ if from_unit == "Celsius":
17
+ if to_unit == "Kelvin":
18
+ return value + 273.15
19
+ elif to_unit == "Fahrenheit":
20
+ return (value * 9 / 5) + 32
21
+ elif to_unit == "Rankine":
22
+ return (value + 273.15) * 9 / 5
23
+ else:
24
+ return value
25
+ elif from_unit == "Fahrenheit":
26
+ if to_unit == "Celsius":
27
+ return (value - 32) * 5 / 9
28
+ elif to_unit == "Kelvin":
29
+ return (value - 32) * 5 / 9 + 273.15
30
+ elif to_unit == "Rankine":
31
+ return value + 459.67
32
+ else:
33
+ return value
34
+ elif from_unit == "Kelvin":
35
+ if to_unit == "Celsius":
36
+ return value - 273.15
37
+ elif to_unit == "Fahrenheit":
38
+ return (value - 273.15) * 9 / 5 + 32
39
+ elif to_unit == "Rankine":
40
+ return value * 9 / 5
41
+ else:
42
+ return value
43
+ elif from_unit == "Rankine":
44
+ if to_unit == "Celsius":
45
+ return (value - 491.67) * 5 / 9
46
+ elif to_unit == "Fahrenheit":
47
+ return value - 459.67
48
+ elif to_unit == "Kelvin":
49
+ return value * 5 / 9
50
+ else:
51
+ return value
52
+ except Exception as e:
53
+ st.error(f"Error: {str(e)}")
54
+ return None
55
+
56
+ # Input for Temperature Conversion
57
+ st.write("### Temperature Conversion Tool")
58
+ from_unit = st.selectbox("Convert From:", ["Celsius", "Fahrenheit", "Kelvin", "Rankine"])
59
+ to_unit = st.selectbox("Convert To:", ["Celsius", "Fahrenheit", "Kelvin", "Rankine"])
60
+ temp_value = st.number_input(f"Enter Temperature in {from_unit}:", value=0.0)
61
+
62
+ if st.button("Convert Temperature"):
63
+ converted_value = convert_temperature(temp_value, from_unit, to_unit)
64
+ if converted_value is not None:
65
+ st.success(f"{temp_value} {from_unit} = {converted_value:.2f} {to_unit}")
66
+
67
+ # ------------------------
68
+ # Section 2: Centrifugal Pump Design
69
+ # ------------------------
70
+ st.header("Centrifugal Pump Design Calculator")
71
+
72
+ # Inputs for Pump Design with Unit Conversion
73
+ st.write("### Input Parameters (with unit conversion)")
74
+
75
+ # Flow Rate (Q)
76
+ flow_rate = st.number_input("Flow Rate (Q):", min_value=0.0, value=10.0, step=0.1)
77
+ flow_rate_unit = st.selectbox("Select unit for Flow Rate:", ["m³/h", "L/s", "gpm"])
78
+
79
+ # Head (H)
80
+ head = st.number_input("Head (H):", min_value=0.0, value=20.0, step=0.1)
81
+ head_unit = st.selectbox("Select unit for Head:", ["m", "ft"])
82
+
83
+ # Efficiency (η)
84
+ efficiency = st.number_input("Efficiency (η) in %:", min_value=0.0, max_value=100.0, value=75.0, step=0.1)
85
+
86
+ # Fluid Density (ρ)
87
+ density = st.number_input("Fluid Density (ρ):", min_value=0.0, value=1000.0, step=1.0)
88
+ density_unit = st.selectbox("Select unit for Density:", ["kg/m³", "g/cm³"])
89
+
90
+ # Convert Units for Flow Rate
91
+ if flow_rate_unit == "L/s":
92
+ flow_rate_m3s = flow_rate / 1000 # Convert from L/s to m³/s
93
+ elif flow_rate_unit == "gpm":
94
+ flow_rate_m3s = flow_rate * 3.78541 / 60000 # Convert from gpm to m³/s
95
+ else:
96
+ flow_rate_m3s = flow_rate / 3600 # Convert from m³/h to m³/s
97
+
98
+ # Convert Units for Head
99
+ if head_unit == "ft":
100
+ head_m = head * 0.3048 # Convert from ft to meters
101
+ else:
102
+ head_m = head
103
+
104
+ # Convert Units for Fluid Density
105
+ if density_unit == "g/cm³":
106
+ density_kgm3 = density * 1000 # Convert from g/cm³ to kg/m³
107
+ else:
108
+ density_kgm3 = density
109
+
110
+ # Calculation Logic for Centrifugal Pump
111
+ def calculate_pump_power(flow_rate, head, efficiency, density):
112
+ try:
113
+ # Convert efficiency to decimal
114
+ efficiency = efficiency / 100
115
+
116
+ # Calculate hydraulic power (P_h = ρ * g * Q * H)
117
+ g = 9.81 # gravitational constant, m/s²
118
+ hydraulic_power = density * g * flow_rate * head # in watts
119
+
120
+ # Calculate shaft power (P_s = P_h / η)
121
+ shaft_power = hydraulic_power / efficiency # in watts
122
+
123
+ # Convert to kW
124
+ hydraulic_power_kw = hydraulic_power / 1000
125
+ shaft_power_kw = shaft_power / 1000
126
+
127
+ return hydraulic_power_kw, shaft_power_kw
128
+ except Exception as e:
129
+ st.error(f"Error: {str(e)}")
130
+ return None, None
131
+
132
+ # Perform calculation
133
+ if st.button("Calculate Pump Power"):
134
+ hydraulic_power_kw, shaft_power_kw = calculate_pump_power(flow_rate_m3s, head_m, efficiency, density_kgm3)
135
+
136
+ if hydraulic_power_kw is not None:
137
+ # Display Results
138
+ st.write(f"### Results:")
139
+ st.write(f"**Hydraulic Power (P_h):** {hydraulic_power_kw:.2f} kW")
140
+ st.write(f"**Shaft Power (P_s):** {shaft_power_kw:.2f} kW")