KamalShahid commited on
Commit
81e5bd0
·
verified ·
1 Parent(s): a7d69bd

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +68 -0
app.py ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+
3
+ # Constants
4
+ VOLTAGE_LEVELS = [220, 380, 440]
5
+ CABLE_SIZES = {10: 1.5, 20: 2.5, 40: 4, 60: 6, 80: 10, 100: 16}
6
+ TRANSFORMER_SIZES = [25, 50, 100, 200, 400, 630, 1000] # kVA
7
+
8
+ # Sidebar
9
+ st.set_page_config(page_title="Electrical Load Calculator", layout="wide")
10
+ st.sidebar.title("Electrical Load Calculation")
11
+ st.sidebar.markdown("### Input Parameters")
12
+
13
+ # Input: Load Details
14
+ total_load_kw = st.sidebar.number_input("Enter total load (kW)", min_value=0.0, step=0.1, value=0.0)
15
+ power_factor = st.sidebar.slider("Power Factor", 0.5, 1.0, 0.9, 0.01)
16
+ voltage_level = st.sidebar.selectbox("Select Voltage Level (V)", VOLTAGE_LEVELS)
17
+
18
+ # Input: Cable Sizing
19
+ distance_meters = st.sidebar.number_input("Enter distance to load (meters)", min_value=1, step=1, value=10)
20
+ st.sidebar.markdown("---")
21
+
22
+ # Columns for Input and Results
23
+ col1, col2 = st.columns(2)
24
+
25
+ # Input Parameters Display
26
+ with col1:
27
+ st.header("Input Parameters")
28
+ st.write(f"**Total Load (kW):** {total_load_kw} kW")
29
+ st.write(f"**Power Factor:** {power_factor}")
30
+ st.write(f"**Voltage Level:** {voltage_level} V")
31
+ st.write(f"**Distance to Load:** {distance_meters} meters")
32
+
33
+ # Calculations
34
+ total_load_kva = total_load_kw / power_factor
35
+ current_ampere = (total_load_kva * 1000) / voltage_level
36
+ recommended_cable_size = next((size for amp, size in CABLE_SIZES.items() if current_ampere <= amp), None)
37
+ transformer_size = next((size for size in TRANSFORMER_SIZES if total_load_kva <= size), None)
38
+
39
+ # Results Display
40
+ with col2:
41
+ st.header("Calculation Results")
42
+ st.write(f"**Total Load (kVA):** {total_load_kva:.2f} kVA")
43
+ st.write(f"**Current (Amps):** {current_ampere:.2f} A")
44
+ if recommended_cable_size:
45
+ st.write(f"**Recommended Cable Size:** {recommended_cable_size} mm²")
46
+ else:
47
+ st.error("No suitable cable size found. Increase input voltage or reduce load.")
48
+ if transformer_size:
49
+ st.write(f"**Recommended Transformer Size:** {transformer_size} kVA")
50
+ else:
51
+ st.error("No suitable transformer size found.")
52
+
53
+ # Visualization
54
+ st.markdown("---")
55
+ st.header("Visual Representation")
56
+ col3, col4 = st.columns(2)
57
+
58
+ with col3:
59
+ st.subheader("Load vs Transformer Capacity")
60
+ st.bar_chart([total_load_kva, transformer_size if transformer_size else 0])
61
+
62
+ with col4:
63
+ st.subheader("Load Distribution (kVA)")
64
+ st.pie_chart({"Used Load": total_load_kva, "Remaining Capacity": max(transformer_size - total_load_kva, 0) if transformer_size else 0})
65
+
66
+ # Footer
67
+ st.sidebar.markdown("---")
68
+ st.sidebar.markdown("Developed with ❤️ for Electrical Engineers")