Skip to content

Commit ba52c39

Browse files
committed
update tests to cover both cases of trafo_loading options, added seperate test cases for balanced and un-balanced load for trafo_loading
Signed-off-by: furqan463 <[email protected]>
1 parent aaf2e66 commit ba52c39

File tree

3 files changed

+37
-19
lines changed

3 files changed

+37
-19
lines changed

tests/data/pandapower/pp_validation.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
@lru_cache
1111
def pp_net() -> pp.pandapowerNet:
12-
# (ext #1) shunt - [104] - 3w - [105] - sym_gen
12+
# (ext #1) shunt - [104] - 3w - [105] - asym_gen, asym_load
1313
# | |
1414
# [101] ---OO- [102] ---------- [103]
1515
# | |
@@ -109,7 +109,7 @@ def pp_net_3ph() -> pp.pandapowerNet:
109109
"""
110110
Creates a pandapower net used for validating 3 phase calculations
111111
112-
(ext #1) shunt - [104], sym_gen - [105], motor, ward, asym_load, asym_gen
112+
(ext #1) sym_gen , asym_load, asym_gen
113113
| |
114114
[101] ---OO- [102] ---------- [103]
115115
| |
@@ -208,11 +208,11 @@ def pp_net_3ph_minimal_trafo():
208208
2,
209209
0.33,
210210
0.34,
211-
0.00,
211+
0.001,
212212
600,
213213
r0_ohm_per_km=0.66,
214214
x0_ohm_per_km=0.65,
215-
c0_nf_per_km=0.00,
215+
c0_nf_per_km=0.001,
216216
g_us_per_km=0,
217217
g0_us_per_km=0,
218218
)
@@ -235,5 +235,5 @@ def pp_net_3ph_minimal_trafo():
235235
mag0_rx=0,
236236
si0_hv_partial=0.9,
237237
)
238-
pp.create_asymmetric_load(net, 2, 0.2, 0.2, 0.2, 0.05, 0.05, 0.05, 0, type="wye")
238+
pp.create_asymmetric_load(net, 2, 0.2, 0.19, 0.21, 0.05, 0.049, 0.052, 0, type="wye")
239239
return net

tests/validation/converters/test_pandapower_converter_input.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from power_grid_model_io.data_types import ExtraInfo
1717
from power_grid_model_io.utils.json import JsonEncoder
1818

19-
from ...data.pandapower.pp_validation import pp_net
19+
from ...data.pandapower.pp_validation import pp_net, pp_net_3ph_minimal_trafo
2020
from ..utils import compare_extra_info, component_attributes, component_objects, load_json_single_dataset, select_values
2121

2222
VALIDATION_FILE = Path(__file__).parents[2] / "data" / "pandapower" / "pgm_input_data.json"
@@ -116,3 +116,8 @@ def test_extra_info__serializable(extra_info):
116116

117117
# Assert
118118
json.dumps(actual, cls=JsonEncoder) # expect no exception
119+
120+
def test_pgm_input_lines__cnf_zero():
121+
pp_net = pp_net_3ph_minimal_trafo()
122+
pp_converter = PandaPowerConverter()
123+

tests/validation/converters/test_pandapower_converter_output.py

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
PGM_ASYM_OUTPUT_FILE = PGM_PP_TEST_DATA / "pgm_asym_output_data.json"
2727
PP_V2_NET_OUTPUT_FILE = PGM_PP_TEST_DATA / "pp_v2_net_output.json"
2828
PP_V2_NET_3PH_OUTPUT_FILE = PGM_PP_TEST_DATA / "pp_v2_net_3ph_output.json"
29+
PP_V2_NET_3PH_OUTPUT_FILE_CURRENT_LOADING = PGM_PP_TEST_DATA / "pp_v2_net_3ph_output_current_loading.json"
2930

3031

3132
@contextmanager
@@ -47,12 +48,12 @@ def load_and_convert_pgm_data() -> PandaPowerData:
4748

4849

4950
@lru_cache
50-
def load_and_convert_pgm_data_3ph() -> PandaPowerData:
51+
def load_and_convert_pgm_data_3ph(trafo_loading="power") -> PandaPowerData:
5152
"""
5253
Load and convert the power_grid_model results
5354
"""
5455
data, _ = load_json_single_dataset(PGM_ASYM_OUTPUT_FILE, data_type="asym_output")
55-
converter = PandaPowerConverter(trafo_loading="power")
56+
converter = PandaPowerConverter(trafo_loading=trafo_loading)
5657
converter.load_input_data(load_validation_data_3ph(), make_extra_info=False)
5758
return converter.convert(data=data)
5859

@@ -66,11 +67,14 @@ def load_validation_data() -> PandaPowerData:
6667

6768

6869
@lru_cache
69-
def load_validation_data_3ph() -> PandaPowerData:
70+
def load_validation_data_3ph(trafo_loading="power") -> PandaPowerData:
7071
"""
7172
Load the validation data from the pp file
7273
"""
73-
return pp.file_io.from_json(PP_V2_NET_3PH_OUTPUT_FILE)
74+
if trafo_loading == "power":
75+
return pp.file_io.from_json(PP_V2_NET_3PH_OUTPUT_FILE)
76+
else:
77+
return pp.file_io.from_json(PP_V2_NET_3PH_OUTPUT_FILE_CURRENT_LOADING)
7478

7579

7680
@pytest.fixture
@@ -83,13 +87,13 @@ def output_data() -> Tuple[PandaPowerData, PandaPowerData]:
8387
return actual, expected
8488

8589

86-
@pytest.fixture
87-
def output_data_3ph() -> Tuple[PandaPowerData, PandaPowerData]:
90+
@pytest.fixture(params = ["power", "current"])
91+
def output_data_3ph(request) -> Tuple[PandaPowerData, PandaPowerData]:
8892
"""
8993
Load the pandapower network and the json file, and return the output_data
9094
"""
91-
actual = load_and_convert_pgm_data_3ph()
92-
expected = load_validation_data_3ph()
95+
actual = load_and_convert_pgm_data_3ph(request.param)
96+
expected = load_validation_data_3ph(request.param)
9397
return actual, expected
9498

9599

@@ -202,11 +206,23 @@ def compare_result(actual, expected, *, rtol):
202206

203207
pgm_net = pp_net_3ph_minimal_trafo()
204208
pp_net = pp_net_3ph_minimal_trafo()
209+
# Asymmetric Load
210+
pp.runpp_pgm(pgm_net, symmetric=False)
211+
pp.runpp_3ph(pp_net)
212+
check_result(pgm_net)
213+
check_result(pp_net)
214+
compare_result(pgm_net, pp_net, rtol=0.04)
215+
216+
# Symmetric Load
217+
pgm_net.asymmetric_load.loc[:, ['p_a_mw', 'p_b_mw', 'p_c_mw']] = 0.2
218+
pgm_net.asymmetric_load.loc[:, ['q_a_mvar', 'q_b_mvar', 'q_c_mar']] = 0.05
219+
pp_net.asymmetric_load.loc[:, ['p_a_mw', 'p_b_mw', 'p_c_mw']] = 0.2
220+
pp_net.asymmetric_load.loc[:, ['q_a_mvar', 'q_b_mvar', 'q_c_mar']] = 0.05
205221
pp.runpp_pgm(pgm_net, symmetric=False)
206222
pp.runpp_3ph(pp_net)
207223
check_result(pgm_net)
208224
check_result(pp_net)
209-
compare_result(pgm_net, pp_net, rtol=0.004)
225+
compare_result(pgm_net, pp_net, rtol=0.005)
210226

211227

212228
def test_output_data(output_data: Tuple[PandaPowerData, PandaPowerData]):
@@ -247,10 +263,7 @@ def test_attributes(output_data: Tuple[PandaPowerData, PandaPowerData], componen
247263
pd.testing.assert_series_equal(actual_values, expected_values, atol=5e-4, rtol=1e-4)
248264

249265

250-
# The following test only works for those components where valid data is returned by
251-
# load_and_convert_pgm_data_3ph. since this is failing for trafo_output_3ph (returning
252-
# from first "if", this function's output is not being tested currently.
253-
@pytest.mark.parametrize(("component", "attribute"), component_attributes_df(load_and_convert_pgm_data_3ph()))
266+
@pytest.mark.parametrize(("component", "attribute"), component_attributes_df(load_and_convert_pgm_data_3ph()))
254267
def test_attributes_3ph(output_data_3ph: Tuple[PandaPowerData, PandaPowerData], component: str, attribute: str):
255268
"""
256269
For each attribute, check if the actual values are consistent with the expected values for asym

0 commit comments

Comments
 (0)