MuhammadSajid commited on
Commit
54d5837
·
verified ·
1 Parent(s): 273bd6a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +30 -18
app.py CHANGED
@@ -8,12 +8,13 @@ available_capacitors = [25, 20, 15, 10, 5, 2.5, 1.5, 1]
8
  def calculate_power_parameters(voltage, current, power_factor):
9
  if voltage > 0 and current > 0:
10
  apparent_power = math.sqrt(3) * voltage * current
11
- real_power = apparent_power * power_factor / 1000
12
  try:
13
  reactive_power = math.sqrt((apparent_power / 1000) ** 2 - real_power ** 2)
14
  except ValueError:
15
  reactive_power = 0.0
16
  calculated_pf = real_power * 1000 / apparent_power if apparent_power > 0 else 0
 
17
  return {
18
  "apparent_power": round(apparent_power, 2),
19
  "real_power": round(real_power, 2),
@@ -27,26 +28,35 @@ def design_capacitor_bank(reactive_power, num_caps):
27
  if reactive_power > 0 and num_caps > 0:
28
  best_combo = None
29
  min_error = float('inf')
 
30
  for combo in itertools.combinations_with_replacement(available_capacitors, int(num_caps)):
31
  total = sum(combo)
32
  error = abs(total - reactive_power)
 
33
  if error < min_error:
34
  min_error = error
35
  best_combo = combo
 
36
  if error == 0:
37
  break
 
38
  if best_combo:
39
  suggested_capacitors = [f"{cap} kVAR" for cap in best_combo]
40
  total_kvar = sum(best_combo)
41
  message = f"Total Compensation: {round(total_kvar, 2)} kVAR"
42
- if abs(total_kvar - reactive_power) > 0.5:
43
- message += ". Small mismatch detected. Fine-tuning may be required."
 
44
  return {
45
  "suggested_capacitors": suggested_capacitors,
46
  "total_kvar": round(total_kvar, 2),
47
- "message": message
 
48
  }
49
- return None
 
 
 
50
 
51
  def three_phase_power_calculator(voltage, current, power_factor, frequency, num_caps):
52
  power_results = calculate_power_parameters(voltage, current, power_factor)
@@ -58,20 +68,22 @@ def three_phase_power_calculator(voltage, current, power_factor, frequency, num_
58
  calculated_pf_out = f"**Calculated Power Factor:** {power_results['calculated_pf']}"
59
  reactive_power_value = power_results['reactive_power']
60
  else:
61
- return (
62
- "⚠️ Please enter valid Voltage and Current!",
63
- "", "", "", "", "", ""
64
- )
65
 
66
- cap_bank_design = design_capacitor_bank(reactive_power_value, num_caps)
67
- if cap_bank_design:
68
- suggested_capacitors_text = "<br>".join(
69
- [f"🔹 Capacitor {i + 1}: **{cap}**" for i, cap in enumerate(cap_bank_design['suggested_capacitors'])]
70
- )
71
- total_kvar_out = f"{cap_bank_design['total_kvar']} kVAR"
72
- cap_bank_message = cap_bank_design['message']
 
 
 
 
 
73
  else:
74
- suggested_capacitors_text = "⚠️ Could not find a suitable capacitor combination."
75
  total_kvar_out = ""
76
  cap_bank_message = ""
77
 
@@ -106,7 +118,7 @@ iface = gr.Interface(
106
  ],
107
  title="⚙️ Three-Phase Power & Capacitor Bank Calculator",
108
  description="Enter voltage, current, and power factor to calculate three-phase power parameters and design a capacitor bank.",
109
- allow_flagging=False,
110
  examples=[
111
  [400, 100, 0.8, 50, 2],
112
  [220, 50, 0.95, 60, 3],
 
8
  def calculate_power_parameters(voltage, current, power_factor):
9
  if voltage > 0 and current > 0:
10
  apparent_power = math.sqrt(3) * voltage * current
11
+ real_power = apparent_power * power_factor / 1000 # W to kW
12
  try:
13
  reactive_power = math.sqrt((apparent_power / 1000) ** 2 - real_power ** 2)
14
  except ValueError:
15
  reactive_power = 0.0
16
  calculated_pf = real_power * 1000 / apparent_power if apparent_power > 0 else 0
17
+
18
  return {
19
  "apparent_power": round(apparent_power, 2),
20
  "real_power": round(real_power, 2),
 
28
  if reactive_power > 0 and num_caps > 0:
29
  best_combo = None
30
  min_error = float('inf')
31
+
32
  for combo in itertools.combinations_with_replacement(available_capacitors, int(num_caps)):
33
  total = sum(combo)
34
  error = abs(total - reactive_power)
35
+
36
  if error < min_error:
37
  min_error = error
38
  best_combo = combo
39
+
40
  if error == 0:
41
  break
42
+
43
  if best_combo:
44
  suggested_capacitors = [f"{cap} kVAR" for cap in best_combo]
45
  total_kvar = sum(best_combo)
46
  message = f"Total Compensation: {round(total_kvar, 2)} kVAR"
47
+ mismatch = abs(total_kvar - reactive_power) > 0.5
48
+ if mismatch:
49
+ message += ". Small mismatch detected."
50
  return {
51
  "suggested_capacitors": suggested_capacitors,
52
  "total_kvar": round(total_kvar, 2),
53
+ "message": message,
54
+ "mismatch": mismatch
55
  }
56
+ else:
57
+ return {"message": "No suitable combination found."}
58
+ else:
59
+ return None
60
 
61
  def three_phase_power_calculator(voltage, current, power_factor, frequency, num_caps):
62
  power_results = calculate_power_parameters(voltage, current, power_factor)
 
68
  calculated_pf_out = f"**Calculated Power Factor:** {power_results['calculated_pf']}"
69
  reactive_power_value = power_results['reactive_power']
70
  else:
71
+ return ("⚠️ Please enter valid Voltage and Current!", "", "", "", "", "", "")
 
 
 
72
 
73
+ if reactive_power_value > 0:
74
+ cap_bank_design = design_capacitor_bank(reactive_power_value, num_caps)
75
+ if cap_bank_design:
76
+ suggested_capacitors_text = "<br>".join(
77
+ [f"🔹 Capacitor {i+1}: {cap}" for i, cap in enumerate(cap_bank_design['suggested_capacitors'])]
78
+ )
79
+ total_kvar_out = f"{cap_bank_design['message']}"
80
+ cap_bank_message = cap_bank_design['message']
81
+ else:
82
+ suggested_capacitors_text = "⚠️ Could not find a suitable combination."
83
+ total_kvar_out = ""
84
+ cap_bank_message = ""
85
  else:
86
+ suggested_capacitors_text = "Please first calculate power parameters."
87
  total_kvar_out = ""
88
  cap_bank_message = ""
89
 
 
118
  ],
119
  title="⚙️ Three-Phase Power & Capacitor Bank Calculator",
120
  description="Enter voltage, current, and power factor to calculate three-phase power parameters and design a capacitor bank.",
121
+ flagging_mode="never",
122
  examples=[
123
  [400, 100, 0.8, 50, 2],
124
  [220, 50, 0.95, 60, 3],