Skip to content

Commit a6ab569

Browse files
authored
Merge pull request #8 from DAI-Lab/results_change
Improve Results.py
2 parents 4b80a84 + b785c8b commit a6ab569

File tree

3 files changed

+35
-7
lines changed

3 files changed

+35
-7
lines changed

pygridsim/core.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,9 @@ def results(self, queries: list[str], export_path=""):
179179
180180
Args:
181181
queries (list[str]):
182-
A list of queries to the circuit ("Voltages", "Losses", "TotalPower")
182+
A list of queries to the circuit: one of ("Voltages", "Losses", "TotalPower")
183+
or partial queries ("RealLoss", "ReactiveLoss", "RealPower", "ReactivePower")
184+
that query one component of Losses/TotalPower
183185
export_path (str, optional):
184186
The file path to export results. If empty, results are not exported.
185187
Defaults to "".

pygridsim/results.py

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,33 @@
88

99

1010
def _query_solution(query):
11-
match query:
12-
case "Voltages":
11+
query_fix = query.lower().replace(" ", "")
12+
vector_losses = altdss.Losses()
13+
vector_power = altdss.TotalPower()
14+
match query_fix:
15+
case "voltages":
1316
bus_vmags = {}
1417
for bus_name, bus_vmag in zip(altdss.BusNames(), altdss.BusVMag()):
1518
bus_vmags[bus_name] = float(bus_vmag)
1619
return bus_vmags
17-
case "Losses":
18-
vector_losses = altdss.Losses()
20+
case "losses" | "loss":
1921
losses = {}
2022
losses["Active Power Loss"] = vector_losses.real
2123
losses["Reactive Power Loss"] = vector_losses.imag
2224
return losses
23-
case "TotalPower":
24-
return altdss.TotalPower()
25+
case "totalpower" | "power":
26+
power = {}
27+
power["Active Power"] = vector_power.real
28+
power["Reactive Power"] = vector_power.imag
29+
return power
30+
case "activeloss" | "activepowerloss" | "realloss" | "realpowerloss":
31+
return vector_losses.real
32+
case "reactiveloss" | "reactivepowerloss":
33+
return vector_losses.imag
34+
case "activepower" | "realpower":
35+
return vector_power.real
36+
case "reactivepower":
37+
return vector_power.imag
2538
case _:
2639
return "Invalid"
2740

tests/test_circuit.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,19 @@ def test_011_configs(self):
162162
with self.assertRaises(Exception):
163163
circuit.update_source(source_type=SourceType.TURBINE)
164164

165+
def test_012_all_results(self):
166+
circuit = PyGridSim()
167+
circuit.update_source()
168+
circuit.add_load_nodes()
169+
circuit.add_generators(num=2, gen_type="small")
170+
circuit.add_lines([("source", "load0"), ("generator0", "load0")])
171+
circuit.solve()
172+
# Should be flexible with capitalization, spaces
173+
queries = ["Voltages", "losses", "Total Power"]
174+
# Add "partial" queries to just parts of losses/total power
175+
queries += ["realpowerloss", "reactive Loss", "Active Power", "reactivepower"]
176+
print(circuit.results(queries))
177+
165178

166179
class TestCustomizedCircuit(unittest.TestCase):
167180
"""

0 commit comments

Comments
 (0)