diff --git a/cpp/powsybl-cpp/powsybl-cpp.cpp b/cpp/powsybl-cpp/powsybl-cpp.cpp index 968bc45c77..687dec0a7f 100644 --- a/cpp/powsybl-cpp/powsybl-cpp.cpp +++ b/cpp/powsybl-cpp/powsybl-cpp.cpp @@ -1583,6 +1583,7 @@ NadParameters::NadParameters(nad_parameters* src) { edge_info_displayed = static_cast(src->edge_info_displayed); voltage_level_details = (bool) src->voltage_level_details; injections_added = (bool) src->injections_added; + max_steps = src->max_steps; } void SldParameters::sld_to_c_struct(sld_parameters& res) const { @@ -1615,6 +1616,7 @@ void NadParameters::nad_to_c_struct(nad_parameters& res) const { res.edge_info_displayed = (int) edge_info_displayed; res.voltage_level_details = (unsigned char) voltage_level_details; res.injections_added = (unsigned char) injections_added; + res.max_steps = max_steps; } std::shared_ptr SldParameters::to_c_struct() const { diff --git a/cpp/powsybl-cpp/powsybl-cpp.h b/cpp/powsybl-cpp/powsybl-cpp.h index edace05fa6..ae6b5f8c16 100644 --- a/cpp/powsybl-cpp/powsybl-cpp.h +++ b/cpp/powsybl-cpp/powsybl-cpp.h @@ -451,6 +451,7 @@ class NadParameters { EdgeInfoType edge_info_displayed; bool voltage_level_details; bool injections_added; + int max_steps; }; //=======short-circuit analysis========== diff --git a/cpp/pypowsybl-cpp/bindings.cpp b/cpp/pypowsybl-cpp/bindings.cpp index 66fc70ac03..243798fc84 100644 --- a/cpp/pypowsybl-cpp/bindings.cpp +++ b/cpp/pypowsybl-cpp/bindings.cpp @@ -690,7 +690,8 @@ PYBIND11_MODULE(_pypowsybl, m) { .def_readwrite("radius_factor", &pypowsybl::NadParameters::radius_factor) .def_readwrite("edge_info_displayed",&pypowsybl::NadParameters::edge_info_displayed) .def_readwrite("voltage_level_details", &pypowsybl::NadParameters::voltage_level_details) - .def_readwrite("injections_added", &pypowsybl::NadParameters::injections_added); + .def_readwrite("injections_added", &pypowsybl::NadParameters::injections_added) + .def_readwrite("max_steps", &pypowsybl::NadParameters::max_steps); m.def("write_single_line_diagram_svg", &pypowsybl::writeSingleLineDiagramSvg, "Write single line diagram SVG", py::arg("network"), py::arg("container_id"), py::arg("svg_file"), py::arg("metadata_file"), py::arg("sld_parameters")); diff --git a/cpp/pypowsybl-java/powsybl-api.h b/cpp/pypowsybl-java/powsybl-api.h index c7aeb2b772..3240a06b11 100644 --- a/cpp/pypowsybl-java/powsybl-api.h +++ b/cpp/pypowsybl-java/powsybl-api.h @@ -377,6 +377,7 @@ typedef struct nad_parameters_struct { int edge_info_displayed; unsigned char voltage_level_details; unsigned char injections_added; + int max_steps; } nad_parameters; typedef enum { diff --git a/java/pypowsybl/src/main/java/com/powsybl/python/commons/PyPowsyblApiHeader.java b/java/pypowsybl/src/main/java/com/powsybl/python/commons/PyPowsyblApiHeader.java index dfc5620394..9ba90826f7 100644 --- a/java/pypowsybl/src/main/java/com/powsybl/python/commons/PyPowsyblApiHeader.java +++ b/java/pypowsybl/src/main/java/com/powsybl/python/commons/PyPowsyblApiHeader.java @@ -1171,6 +1171,12 @@ public interface NadParametersPointer extends PointerBase { @CField("injections_added") boolean isInjectionsAdded(); + + @CField("max_steps") + void setMaxSteps(int maxSteps); + + @CField("max_steps") + int getMaxSteps(); } @CStruct("dynamic_simulation_parameters") diff --git a/java/pypowsybl/src/main/java/com/powsybl/python/network/NetworkCFunctions.java b/java/pypowsybl/src/main/java/com/powsybl/python/network/NetworkCFunctions.java index f7cdf80275..7524a58af9 100644 --- a/java/pypowsybl/src/main/java/com/powsybl/python/network/NetworkCFunctions.java +++ b/java/pypowsybl/src/main/java/com/powsybl/python/network/NetworkCFunctions.java @@ -999,6 +999,7 @@ public static void copyToCNadParameters(NadParameters parameters, NadParametersP cParameters.setEdgeInfoDisplayed(edgeInfo); cParameters.setVoltageLevelDetails(parameters.getSvgParameters().isVoltageLevelDetails()); cParameters.setInjectionsAdded(parameters.getLayoutParameters().isInjectionsAdded()); + cParameters.setMaxSteps(parameters.getLayoutParameters().getMaxSteps()); } @CEntryPoint(name = "createNadParameters") @@ -1070,6 +1071,8 @@ public static NadParameters convertNadParameters(NadParametersPointer nadParamet .setBusLegend(nadParametersPointer.isBusLegend()) .setSubstationDescriptionDisplayed(nadParametersPointer.isSubstationDescriptionDisplayed()) .setEdgeInfoDisplayed(edgeInfo); + nadParameters.getLayoutParameters() + .setMaxSteps(nadParametersPointer.getMaxSteps()); return nadParameters; } diff --git a/pypowsybl/_pypowsybl.pyi b/pypowsybl/_pypowsybl.pyi index 2eda88ba10..3f18a6a5e9 100644 --- a/pypowsybl/_pypowsybl.pyi +++ b/pypowsybl/_pypowsybl.pyi @@ -411,6 +411,7 @@ class NadParameters: edge_info_displayed: EdgeInfoType voltage_level_details: bool injections_added: bool + max_steps: int def __init__(self) -> None: ... class SlackBusResult: diff --git a/pypowsybl/network/impl/nad_parameters.py b/pypowsybl/network/impl/nad_parameters.py index 505171efb7..be8aeea836 100644 --- a/pypowsybl/network/impl/nad_parameters.py +++ b/pypowsybl/network/impl/nad_parameters.py @@ -17,7 +17,8 @@ def __init__(self, edge_name_displayed: bool = False, id_displayed: bool = False current_value_precision: int = 0, voltage_value_precision: int = 1, bus_legend: bool = True, substation_description_displayed: bool = False, layout_type: NadLayoutType = NadLayoutType.FORCE_LAYOUT, scaling_factor: int = 150000, radius_factor: float = 150.0, - edge_info_displayed: EdgeInfoType = EdgeInfoType.ACTIVE_POWER, voltage_level_details: bool = True, injections_added: bool = False): + edge_info_displayed: EdgeInfoType = EdgeInfoType.ACTIVE_POWER, voltage_level_details: bool = True, + injections_added: bool = False, max_steps: int = 750): self._edge_name_displayed = edge_name_displayed self._edge_info_along_edge = edge_info_along_edge self._id_displayed = id_displayed @@ -33,6 +34,7 @@ def __init__(self, edge_name_displayed: bool = False, id_displayed: bool = False self._edge_info_displayed = edge_info_displayed self._voltage_level_details = voltage_level_details self._injections_added = injections_added + self._max_steps = max_steps @property def edge_name_displayed(self) -> bool: @@ -109,6 +111,11 @@ def injections_added(self) -> bool: """injections_added""" return self._injections_added + @property + def max_steps(self) -> int: + """max_steps""" + return self._max_steps + def _to_c_parameters(self) -> _pp.NadParameters: c_parameters = _pp.NadParameters() c_parameters.edge_name_displayed = self._edge_name_displayed @@ -126,6 +133,7 @@ def _to_c_parameters(self) -> _pp.NadParameters: c_parameters.edge_info_displayed = self._edge_info_displayed c_parameters.voltage_level_details = self._voltage_level_details c_parameters.injections_added = self._injections_added + c_parameters.max_steps = self._max_steps return c_parameters def __repr__(self) -> str: @@ -145,4 +153,5 @@ def __repr__(self) -> str: f", edge_info_displayed={self._edge_info_displayed}" \ f", voltage_level_details={self._voltage_level_details}" \ f", injections_added={self._injections_added}" \ + f", max_steps={self._max_steps}" \ f")"