412 |
412 |
|
q = np.hstack([q, tab["q_mvar"].values * active * scaling * sign]) |
413 |
413 |
|
b = np.hstack([b, tab["bus"].values]) |
414 |
414 |
|
|
415 |
|
- |
l_3ph = net["asymmetric_load"] |
416 |
|
- |
if len(l_3ph) > 0 and mode == "pf": |
417 |
|
- |
# TODO: Voltage dependent loads |
418 |
|
- |
vl = _is_elements["asymmetric_load"] * l_3ph["scaling"].values.T / np.float64(1000.) |
419 |
|
- |
q = np.hstack([q, np.sum(l_3ph[["q_a_mvar", "q_b_mvar", "q_c_mvar"]].values, axis=1) * vl]) |
420 |
|
- |
p = np.hstack([p, np.sum(l_3ph[["p_a_mw", "p_b_mw", "p_c_mw"]].values, axis=1) * vl]) |
421 |
|
- |
b = np.hstack([b, l_3ph["bus"].values]) |
422 |
|
- |
sgen_3ph = net["asymmetric_sgen"] |
423 |
|
- |
if len(sgen_3ph) > 0 and mode == "pf": |
424 |
|
- |
vl = _is_elements["sgen_3ph"] * sgen_3ph["scaling"].values.T / np.float64(1000.) |
425 |
|
- |
q = np.hstack([q, np.sum(sgen_3ph[["q_a_mvar", "q_b_mvar", "q_c_mvar"]].values, axis=1) * vl]) |
426 |
|
- |
p = np.hstack([p, np.sum(sgen_3ph[["p_a_mw", "p_b_mw", "p_c_mw"]].values, axis=1) * vl]) |
427 |
|
- |
b = np.hstack([b, sgen_3ph["bus"].values]) |
|
415 |
+ |
for element in ["asymmetric_load", "asymmetric_sgen"]: |
|
416 |
+ |
if len(net[element]) > 0 and mode == "pf": |
|
417 |
+ |
p_mw, q_mvar = _get_symmetric_pq_of_unsymetric_element(net, element) |
|
418 |
+ |
sign = -1 if element.endswith("sgen") else 1 |
|
419 |
+ |
p = np.hstack([p, p_mw * sign]) |
|
420 |
+ |
q = np.hstack([q, q_mvar * sign ]) |
|
421 |
+ |
b = np.hstack([b, net[element]["bus"].values]) |
428 |
422 |
|
|
429 |
423 |
|
# sum up p & q of bus elements |
430 |
424 |
|
if b.size: |