diff --git a/src/power_grid_model_io/converters/pandapower_converter.py b/src/power_grid_model_io/converters/pandapower_converter.py index d1afe3d6..c272ec30 100644 --- a/src/power_grid_model_io/converters/pandapower_converter.py +++ b/src/power_grid_model_io/converters/pandapower_converter.py @@ -749,11 +749,10 @@ def _create_pgm_input_transformers(self): # pylint: disable=too-many-statements pgm_transformers["pk"] = vkr_percent * sn_mva * parallel * (1e6 * 1e-2) pgm_transformers["p0"] = pfe * parallel * 1e3 pgm_transformers["i0"] = i_no_load * 1e-2 - if any(np.less(pgm_transformers["i0"], pgm_transformers["p0"] / pgm_transformers["sn"])): - logger.warning("Minimum value of i0 is clipped to p0/sn") - pgm_transformers["i0"] = np.clip( - pgm_transformers["i0"], a_min=pgm_transformers["p0"] / pgm_transformers["sn"], a_max=None - ) + i0_min_threshold = pgm_transformers["p0"] / pgm_transformers["sn"] + if any(np.less(pgm_transformers["i0"], i0_min_threshold)): + logger.warning("Minimum value of i0_percent is clipped to p0/sn") + pgm_transformers["i0"] = np.clip(pgm_transformers["i0"], a_min=i0_min_threshold, a_max=None) pgm_transformers["clock"] = clocks pgm_transformers["winding_from"] = winding_types["winding_from"] pgm_transformers["winding_to"] = winding_types["winding_to"] @@ -880,8 +879,12 @@ def _create_pgm_input_three_winding_transformers(self): pgm_3wtransformers["pk_13"] = vkr_lv_percent * np.minimum(sn_hv_mva, sn_lv_mva) * (1e-2 * 1e6) pgm_3wtransformers["pk_23"] = vkr_mv_percent * np.minimum(sn_mv_mva, sn_lv_mva) * (1e-2 * 1e6) - pgm_3wtransformers["i0"] = self._get_pp_attr("trafo3w", "i0_percent", expected_type="f8") * 1e-2 pgm_3wtransformers["p0"] = self._get_pp_attr("trafo3w", "pfe_kw", expected_type="f8") * 1e3 + pgm_3wtransformers["i0"] = self._get_pp_attr("trafo3w", "i0_percent", expected_type="f8") * 1e-2 + i0_min_threshold = pgm_3wtransformers["p0"] / pgm_3wtransformers["sn_1"] + if any(np.less(pgm_3wtransformers["i0"], i0_min_threshold)): + logger.warning("Minimum value of i0_percent is clipped to p0/sn_1") + pgm_3wtransformers["i0"] = np.clip(pgm_3wtransformers["i0"], a_min=i0_min_threshold, a_max=None) pgm_3wtransformers["clock_12"] = clocks_12 pgm_3wtransformers["clock_13"] = clocks_13 pgm_3wtransformers["winding_1"] = winding_types["winding_1"] diff --git a/tests/unit/converters/test_pandapower_converter_input.py b/tests/unit/converters/test_pandapower_converter_input.py index 00a8864c..b25a04f4 100644 --- a/tests/unit/converters/test_pandapower_converter_input.py +++ b/tests/unit/converters/test_pandapower_converter_input.py @@ -1032,7 +1032,14 @@ def test_create_pgm_input_sym_gens(mock_init_array: MagicMock, two_pp_objs, conv @pytest.mark.parametrize( "kwargs", - [{"vk0_percent": 2}, {"vkr0_percent": 1}, {"mag0_percent": 5}, {"mag0_rx": 0.2}, {"si0_hv_partial": 0.3}], + [ + {"pfe_kw": 2}, + {"vk0_percent": 2}, + {"vkr0_percent": 1}, + {"mag0_percent": 5}, + {"mag0_rx": 0.2}, + {"si0_hv_partial": 0.3}, + ], ) @patch( "power_grid_model_io.converters.pandapower_converter.PandaPowerConverter.get_switch_states", @@ -1050,11 +1057,14 @@ def test_create_pgm_input_sym_gens(mock_init_array: MagicMock, two_pp_objs, conv "power_grid_model_io.converters.pandapower_converter.PandaPowerConverter._get_pgm_ids", new=MagicMock(return_value=pd.Series([0])), ) -def test_create_pgm_input_transformers__zero_sequence(kwargs) -> None: +def test_create_pgm_input_transformers__warnings(kwargs) -> None: # Arrange pp_net: pp.pandapowerNet = pp.create_empty_network() pp.create_bus(net=pp_net, vn_kv=0.0) args = [0, 0, 0, 0, 0, 0, 0, 0, 0] + if "pfe_kw" in kwargs: + args[-2] = kwargs["pfe_kw"] + kwargs = {} pp.create_transformer_from_parameters(pp_net, *args, **kwargs) converter = PandaPowerConverter() @@ -1388,6 +1398,7 @@ def test_create_pgm_input_transformers3w__default() -> None: @pytest.mark.parametrize( "kwargs", [ + {"pfe_kw": 2}, {"vk0_hv_percent": 1}, {"vkr0_hv_percent": 2}, {"vk0_mv_percent": 3}, @@ -1412,11 +1423,14 @@ def test_create_pgm_input_transformers3w__default() -> None: "power_grid_model_io.converters.pandapower_converter.PandaPowerConverter._get_pgm_ids", new=MagicMock(return_value=pd.Series([0])), ) -def test_create_pgm_input_transformers3w__zero_sequence(kwargs) -> None: +def test_create_pgm_input_transformers3w__warnings(kwargs) -> None: # Arrange pp_net: pp.pandapowerNet = pp.create_empty_network() pp.create_bus(net=pp_net, vn_kv=0.0) args = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + if "pfe_kw" in kwargs: + args[-2] = kwargs["pfe_kw"] + kwargs = {} pp.create_transformer3w_from_parameters(pp_net, *args, **kwargs) converter = PandaPowerConverter()