Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| def design_pump(flow_rate, head, efficiency, pump_speed, impeller_diameter): | |
| """ | |
| Perform a complete design for a centrifugal pump. | |
| Args: | |
| flow_rate (float): Flow rate in m³/hr. | |
| head (float): Head in meters. | |
| efficiency (float): Efficiency in percentage. | |
| pump_speed (float): Pump speed in RPM. | |
| impeller_diameter (float): Impeller diameter in meters. | |
| Returns: | |
| tuple: Calculated pump parameters including power, NPSH, specific speed, and more. | |
| """ | |
| try: | |
| # Validate efficiency | |
| if efficiency <= 0 or efficiency > 100: | |
| return "Error: Efficiency must be between 0 and 100.", "", "", "", "", "", "", "" | |
| # Constants | |
| density = 1000 # Water density (kg/m³) | |
| gravity = 9.81 # Acceleration due to gravity (m/s²) | |
| # Calculate flow rate in m³/s | |
| flow_rate_m3s = flow_rate / 3600 # Convert m³/hr to m³/s | |
| # Calculate output power (kW) | |
| output_power = (flow_rate_m3s * head * density * gravity) / 1000 # Convert to kW | |
| # Calculate input power considering efficiency | |
| input_power = output_power / (efficiency / 100) | |
| # Calculate NPSH | |
| npsh = head * 0.1 # Example: assume 10% of the head as NPSH for simplicity | |
| # Calculate specific speed (Ns) | |
| specific_speed = ( | |
| pump_speed * (flow_rate_m3s ** 0.5) / (head ** 0.75) | |
| ) # Simplified formula for specific speed | |
| # Calculate impeller peripheral velocity (U) | |
| peripheral_velocity = (3.14 * impeller_diameter * pump_speed) / 60 # m/s | |
| # Shaft power (mechanical power needed) | |
| shaft_power = input_power * 1.1 # Add a safety factor of 10% | |
| return ( | |
| f"{output_power:.2f} kW", | |
| f"{input_power:.2f} kW", | |
| f"{npsh:.2f} m", | |
| f"{specific_speed:.2f} (dimensionless)", | |
| f"{peripheral_velocity:.2f} m/s", | |
| f"{shaft_power:.2f} kW", | |
| f"{flow_rate_m3s:.4f} m³/s", | |
| ) | |
| except Exception as e: | |
| return f"Error: {str(e)}", "", "", "", "", "", "" | |
| # Gradio Interface | |
| with gr.Blocks() as demo: | |
| gr.Markdown("# Comprehensive Centrifugal Pump Design Tool") | |
| gr.Markdown("Enter the required specifications to calculate pump design parameters.") | |
| with gr.Row(): | |
| flow_rate = gr.Number(label="Flow Rate (m³/hr)", value=50, precision=2) | |
| head = gr.Number(label="Head (m)", value=20, precision=2) | |
| efficiency = gr.Number(label="Efficiency (%)", value=75, precision=2) | |
| pump_speed = gr.Number(label="Pump Speed (RPM)", value=1450, precision=0) | |
| impeller_diameter = gr.Number( | |
| label="Impeller Diameter (m)", value=0.3, precision=2 | |
| ) | |
| with gr.Row(): | |
| output_power = gr.Textbox(label="Output Power (kW)", interactive=False) | |
| input_power = gr.Textbox(label="Input Power (kW)", interactive=False) | |
| npsh = gr.Textbox(label="Net Positive Suction Head (NPSH) (m)", interactive=False) | |
| specific_speed = gr.Textbox(label="Specific Speed (dimensionless)", interactive=False) | |
| peripheral_velocity = gr.Textbox(label="Peripheral Velocity (m/s)", interactive=False) | |
| shaft_power = gr.Textbox(label="Shaft Power (kW)", interactive=False) | |
| flow_rate_m3s = gr.Textbox(label="Flow Rate (m³/s)", interactive=False) | |
| calculate_button = gr.Button("Calculate") | |
| calculate_button.click( | |
| design_pump, | |
| inputs=[flow_rate, head, efficiency, pump_speed, impeller_diameter], | |
| outputs=[ | |
| output_power, | |
| input_power, | |
| npsh, | |
| specific_speed, | |
| peripheral_velocity, | |
| shaft_power, | |
| flow_rate_m3s, | |
| ], | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() |