Skip to content

Commit 9cef355

Browse files
committed
Minor adjustments
1 parent 2430a4d commit 9cef355

File tree

4 files changed

+57
-19
lines changed

4 files changed

+57
-19
lines changed

pypsdm/models/gwr.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ def participants(self):
3131
def raw_grid(self):
3232
return self.grid.raw_grid
3333

34+
@property
35+
def primary_data(self):
36+
return self.grid.primary_data
37+
3438
@property
3539
def nodes(self):
3640
return self.grid.nodes
@@ -322,9 +326,9 @@ def empty(cls):
322326
return GridWithResults(GridContainer.empty(), GridResultContainer.empty())
323327

324328
@staticmethod
325-
def _calc_pq(uuid, nodal_result: GridResultContainer):
329+
def _calc_complex_power(uuid, nodal_result: GridResultContainer):
326330
"""
327331
NOTE: Utility function for parallel processing of building ExtendedNodesResult
328332
"""
329-
pq = nodal_result.participants.sum()
330-
return uuid, pq
333+
complex_power = nodal_result.participants.sum()
334+
return uuid, complex_power

pypsdm/models/input/utils.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
from pypsdm import RawGridContainer, Transformers2W
2+
3+
4+
def find_slack_downstream(rg: RawGridContainer) -> str:
5+
"""
6+
Find the downstream node of the slack node, which is the node on the transformer's
7+
lower voltage side.
8+
"""
9+
slack_node = rg.nodes.get_slack_nodes()
10+
if len(slack_node.data) != 1:
11+
raise ValueError("Currently only implemented for singular slack nodes.")
12+
transformers = rg.transformers_2_w
13+
slack_transformers = Transformers2W(
14+
transformers.data[
15+
(transformers.node_a.isin(slack_node.uuid.to_list()))
16+
| (transformers.node_b.isin(slack_node.uuid.to_list()))
17+
]
18+
)
19+
slack_connected_node = (
20+
set(slack_transformers.node_a)
21+
.union(slack_transformers.node_b)
22+
.difference(slack_node.uuid)
23+
)
24+
if len(slack_connected_node) > 1:
25+
raise ValueError(
26+
"There are multiple nodes connected to the slack node via a transformer."
27+
)
28+
elif len(slack_connected_node) == 0:
29+
raise ValueError("Did not find a slack node!")
30+
return slack_connected_node.pop()

pypsdm/models/result/participant/flex_options.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,15 @@ def p_ref(self):
3939
return self.data["p_ref"]
4040

4141
def p_max_as_power(self) -> ComplexPower:
42-
return self._p_to_pq_res(self.p_max())
42+
return self._p_to_complex_power(self.p_max())
4343

4444
def p_ref_as_power(self) -> ComplexPower:
45-
return self._p_to_pq_res(self.p_ref())
45+
return self._p_to_complex_power(self.p_ref())
4646

4747
def p_min_as_pq(self) -> ComplexPower:
48-
return self._p_to_pq_res(self.p_min())
48+
return self._p_to_complex_power(self.p_min())
4949

50-
def _p_to_pq_res(self, p_series: Series) -> ComplexPower:
50+
def _p_to_complex_power(self, p_series: Series) -> ComplexPower:
5151
data = p_series.rename("p").to_frame()
5252
data["q"] = 0
5353
return ComplexPower(data)

pypsdm/plots/results/power.py

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ def plot_apparent_power_components(
4949
):
5050
"""
5151
Plots apparent power components (magnitude, active, reactive, angle) for a given
52-
pq result.
52+
complex power.
5353
5454
Args
55-
pq: ComplexPower
55+
power: ComplexPower
5656
resolution: Resolution of the plot
5757
title: Optional title of the plot
5858
"""
@@ -256,9 +256,9 @@ def plot_aggregated_load_and_generation(
256256
):
257257
if with_residual:
258258
fig, axs = plt.subplots(2, 1, figsize=(10, 5), sharex=True, sharey=True)
259-
pq_results = _get_pq_results_from_union(participants)
259+
complex_powers = _get_complex_power_from_union(participants)
260260
all_load, all_generation = zip(
261-
*[pq_result.divide_load_generation() for pq_result in pq_results]
261+
*[cp.divide_load_generation() for cp in complex_powers]
262262
)
263263
agg_load = ComplexPower.sum(all_load)
264264
agg_generation = ComplexPower.sum(all_generation)
@@ -339,7 +339,7 @@ def plot_all_participants(
339339
return fig, axs
340340

341341

342-
def _get_pq_results_from_union(
342+
def _get_complex_power_from_union(
343343
participants: Union[SystemParticipantsResultContainer, list[ComplexPower]],
344344
) -> list[ComplexPower]:
345345
return (
@@ -363,27 +363,31 @@ def ax_plot_participants(
363363
resolution: Resolution | None = None,
364364
**kwargs,
365365
):
366-
pq_results = _get_pq_results_from_union(participants)
366+
complex_powers = _get_complex_power_from_union(participants)
367367
if stack:
368-
plot_kwargs = [kwargs for _ in range(len(pq_results))]
369-
ax_plot_stacked_pq(
368+
plot_kwargs = [kwargs for _ in range(len(complex_powers))]
369+
ax_plot_stacked_power(
370370
ax,
371-
pq_results,
371+
complex_powers,
372372
hourly_mean=hourly_mean,
373373
resolution=resolution,
374374
plot_kwargs=plot_kwargs,
375375
)
376376
else:
377377
[
378378
ax_plot_active_power(
379-
ax, pq_result, hourly_mean=hourly_mean, resolution=resolution, **kwargs
379+
ax,
380+
complex_power,
381+
hourly_mean=hourly_mean,
382+
resolution=resolution,
383+
**kwargs,
380384
)
381-
for pq_result in pq_results
385+
for complex_power in complex_powers
382386
]
383387
legend_with_distinct_labels(ax)
384388

385389

386-
def ax_plot_stacked_pq(
390+
def ax_plot_stacked_power(
387391
ax: Axes,
388392
results: list[ComplexPower],
389393
hourly_mean: bool = False,

0 commit comments

Comments
 (0)