/
test_sc_multi_bus.py
100 lines (83 loc) · 4.33 KB
/
test_sc_multi_bus.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# -*- coding: utf-8 -*-
# Copyright (c) 2016-2020 by University of Kassel and Fraunhofer Institute for Energy Economics
# and Energy System Technology (IEE), Kassel. All rights reserved.
import os
import pytest
import numpy as np
import pandapower as pp
import pandapower.shortcircuit as sc
from pandapower.test.shortcircuit.test_meshing_detection import meshed_grid
@pytest.fixture
def radial_grid():
net = pp.create_empty_network(sn_mva=2.)
b0 = pp.create_bus(net, 220)
b1 = pp.create_bus(net, 110)
b2 = pp.create_bus(net, 110)
b3 = pp.create_bus(net, 110)
pp.create_ext_grid(net, b0, s_sc_max_mva=100., s_sc_min_mva=80., rx_min=0.4, rx_max=0.4)
pp.create_transformer(net, b0, b1, "100 MVA 220/110 kV")
pp.create_line(net, b1, b2, std_type="305-AL1/39-ST1A 110.0" , length_km=20.)
pp.create_line(net, b2, b3, std_type="N2XS(FL)2Y 1x185 RM/35 64/110 kV" , length_km=15.)
return net
@pytest.fixture
def three_bus_big_sgen_example():
net = pp.create_empty_network()
b1 = pp.create_bus(net, 110)
b2 = pp.create_bus(net, 110)
b3 = pp.create_bus(net, 110)
pp.create_ext_grid(net, b1, s_sc_max_mva=100., s_sc_min_mva=80., rx_min=0.4, rx_max=0.4)
pp.create_line(net, b1, b2, std_type="305-AL1/39-ST1A 110.0" , length_km=20.)
pp.create_line(net, b2, b3, std_type="N2XS(FL)2Y 1x185 RM/35 64/110 kV" , length_km=15.)
net.line["endtemp_degree"] = 80
pp.create_sgen(net, b2, sn_mva=200., p_mw=0, k=1.2)
return net
def test_radial_network(radial_grid):
net = radial_grid
sc_bus = 3
sc.calc_sc(net)
ik = net.res_bus_sc.ikss_ka.at[sc_bus]
sc.calc_sc(net, bus=sc_bus, inverse_y=False, branch_results=True, return_all_currents=True)
assert np.isclose(net.res_bus_sc.ikss_ka.at[sc_bus], ik)
assert np.isclose(net.res_line_sc.ikss_ka.loc[(1, sc_bus)], ik)
assert np.isclose(net.res_line_sc.ikss_ka.loc[(0, sc_bus)], ik)
assert np.isclose(net.res_trafo_sc.ikss_lv_ka.loc[(0, sc_bus)], ik)
trafo_ratio = net.trafo.vn_lv_kv.values / net.trafo.vn_hv_kv.values
assert np.isclose(net.res_trafo_sc.ikss_hv_ka.loc[(0, sc_bus)], ik*trafo_ratio)
sc_bus = 2
sc.calc_sc(net)
ik = net.res_bus_sc.ikss_ka.at[sc_bus]
sc.calc_sc(net, bus=sc_bus, inverse_y=False, branch_results=True, return_all_currents=True)
assert np.isclose(net.res_bus_sc.ikss_ka.at[sc_bus], ik)
assert np.isclose(net.res_line_sc.ikss_ka.loc[(1, sc_bus)], 0)
assert np.isclose(net.res_line_sc.ikss_ka.loc[(0, sc_bus)], ik)
assert np.isclose(net.res_trafo_sc.ikss_lv_ka.loc[(0, sc_bus)], ik)
trafo_ratio = net.trafo.vn_lv_kv.values / net.trafo.vn_hv_kv.values
assert np.isclose(net.res_trafo_sc.ikss_hv_ka.loc[(0, sc_bus)], ik*trafo_ratio)
def test_meshed_network(meshed_grid):
net = meshed_grid
sc.calc_sc(net)
sc_bus = 5
ik = net.res_bus_sc.ikss_ka.at[sc_bus]
sc.calc_sc(net, bus=sc_bus, inverse_y=False, branch_results=True, return_all_currents=True)
assert np.isclose(net.res_bus_sc.ikss_ka.at[sc_bus], ik)
line_ix = net.line[(net.line.to_bus==sc_bus) | (net.line.from_bus==sc_bus)].index
line_flow_into_sc = net.res_line_sc.loc[(line_ix, sc_bus), "ikss_ka"].sum()
assert np.isclose(line_flow_into_sc, ik, atol=2e-3)
def test_big_gen_network(three_bus_big_sgen_example):
net = three_bus_big_sgen_example
sc_bus = [0, 1, 2]
sc.calc_sc(net, bus=sc_bus, branch_results=True, return_all_currents=True, inverse_y=False)
assert np.isclose(net.res_line_sc.loc[(0, 0),"ikss_ka"], 1.25967331, atol=1e-3)
assert np.isclose(net.res_line_sc.loc[(1, 0),"ikss_ka"], 0., atol=2e-3)
assert np.isclose(net.res_line_sc.loc[(0, 2),"ikss_ka"], 0.46221808, atol=1e-3)
assert np.isclose(net.res_line_sc.loc[(1, 2),"ikss_ka"], 1.72233192, atol=1e-3)
def test_big_gen_network_v2(three_bus_big_sgen_example):
net = three_bus_big_sgen_example
sc_bus = [0, 2]
sc.calc_sc(net, bus=sc_bus, branch_results=True, return_all_currents=True, inverse_y=False)
assert np.isclose(net.res_line_sc.loc[(0, 0),"ikss_ka"], 1.25967331, atol=1e-3)
assert np.isclose(net.res_line_sc.loc[(1, 0),"ikss_ka"], 0., atol=2e-3)
assert np.isclose(net.res_line_sc.loc[(0, 2),"ikss_ka"], 0.46221808, atol=1e-3)
assert np.isclose(net.res_line_sc.loc[(1, 2),"ikss_ka"], 1.72233192, atol=1e-3)
if __name__ == '__main__':
pytest.main([__file__])