From 71cd4d26a2289ad915412e7e40addfe5a7193bf5 Mon Sep 17 00:00:00 2001 From: Tiphaine Mouminous Date: Thu, 27 Jun 2024 16:53:43 +0200 Subject: [PATCH 01/11] starting to add parameters active, reactive and current unit Signed-off-by: Tiphaine Mouminous --- cpp/powsybl-cpp/powsybl-api.h | 3 +++ cpp/powsybl-cpp/powsybl-cpp.cpp | 6 +++++ cpp/powsybl-cpp/powsybl-cpp.h | 3 +++ cpp/pypowsybl-cpp/bindings.cpp | 5 +++- .../python/commons/PyPowsyblApiHeader.java | 18 ++++++++++++++ .../python/network/NetworkCFunctions.java | 8 ++++++- pypowsybl/_pypowsybl.pyi | 3 +++ pypowsybl/network/impl/sld_parameters.py | 24 ++++++++++++++++++- 8 files changed, 67 insertions(+), 3 deletions(-) diff --git a/cpp/powsybl-cpp/powsybl-api.h b/cpp/powsybl-cpp/powsybl-api.h index 178314a7c8..ac9056dadd 100644 --- a/cpp/powsybl-cpp/powsybl-api.h +++ b/cpp/powsybl-cpp/powsybl-api.h @@ -340,6 +340,9 @@ typedef struct sld_parameters_struct { unsigned char tooltip_enabled; unsigned char topological_coloring; char* component_library; + char* active_power_unit; + char* reactive_power_unit; + char* current_unit; } sld_parameters; typedef struct nad_parameters_struct { diff --git a/cpp/powsybl-cpp/powsybl-cpp.cpp b/cpp/powsybl-cpp/powsybl-cpp.cpp index f75f89df2b..3c665faeb8 100644 --- a/cpp/powsybl-cpp/powsybl-cpp.cpp +++ b/cpp/powsybl-cpp/powsybl-cpp.cpp @@ -1180,6 +1180,9 @@ SldParameters::SldParameters(sld_parameters* src) { tooltip_enabled = (bool) src->tooltip_enabled; topological_coloring = (bool) src->topological_coloring; component_library = toString(src->component_library); + active_power_unit = toString(src->active_power_unit); + reactive_power_unit = toString(src->reactive_power_unit); + current_unit = toString(src->active_power_unit); } NadParameters::NadParameters(nad_parameters* src) { @@ -1206,6 +1209,9 @@ void SldParameters::sld_to_c_struct(sld_parameters& res) const { res.tooltip_enabled = (unsigned char) tooltip_enabled; res.topological_coloring = (unsigned char) topological_coloring; res.component_library = copyStringToCharPtr(component_library); + res.active_power_unit = copyStringToCharPtr(active_power_unit); + res.reactive_power_unit = copyStringToCharPtr(reactive_power_unit); + res.current_unit = copyStringToCharPtr(current_unit); } void NadParameters::nad_to_c_struct(nad_parameters& res) const { diff --git a/cpp/powsybl-cpp/powsybl-cpp.h b/cpp/powsybl-cpp/powsybl-cpp.h index fad3939acb..fad25f944e 100644 --- a/cpp/powsybl-cpp/powsybl-cpp.h +++ b/cpp/powsybl-cpp/powsybl-cpp.h @@ -392,6 +392,9 @@ class SldParameters { bool tooltip_enabled; bool topological_coloring; std::string component_library; + std::string active_power_unit; + std::string reactive_power_unit; + std::string current_unit; }; enum class NadLayoutType { diff --git a/cpp/pypowsybl-cpp/bindings.cpp b/cpp/pypowsybl-cpp/bindings.cpp index 9e77112cba..6860ba437d 100644 --- a/cpp/pypowsybl-cpp/bindings.cpp +++ b/cpp/pypowsybl-cpp/bindings.cpp @@ -546,7 +546,10 @@ PYBIND11_MODULE(_pypowsybl, m) { .def_readwrite("nodes_infos", &pypowsybl::SldParameters::nodes_infos) .def_readwrite("tooltip_enabled", &pypowsybl::SldParameters::tooltip_enabled) .def_readwrite("topological_coloring", &pypowsybl::SldParameters::topological_coloring) - .def_readwrite("component_library", &pypowsybl::SldParameters::component_library); + .def_readwrite("component_library", &pypowsybl::SldParameters::component_library) + .def_readwrite("active_power_unit", &pypowsybl::SldParameters::active_power_unit) + .def_readwrite("reactive_power_unit", &pypowsybl::SldParameters::reactive_power_unit) + .def_readwrite("current_unit", &pypowsybl::SldParameters::current_unit); py::enum_(m, "NadLayoutType") .value("FORCE_LAYOUT", pypowsybl::NadLayoutType::FORCE_LAYOUT) diff --git a/java/src/main/java/com/powsybl/python/commons/PyPowsyblApiHeader.java b/java/src/main/java/com/powsybl/python/commons/PyPowsyblApiHeader.java index c2f1b765a3..16a7683f6d 100644 --- a/java/src/main/java/com/powsybl/python/commons/PyPowsyblApiHeader.java +++ b/java/src/main/java/com/powsybl/python/commons/PyPowsyblApiHeader.java @@ -1062,6 +1062,24 @@ public interface SldParametersPointer extends PointerBase { @CField("component_library") void setComponentLibrary(CCharPointer componentLibrary); + + @CField("active_power_unit") + void setActivePowerUnit(CCharPointer activePowerUnit); + + @CField("active_power_unit") + CCharPointer getActivePowerUnit(); + + @CField("reactive_power_unit") + void setReactivePowerUnit(CCharPointer reactivePowerUnit); + + @CField("reactive_power_unit") + CCharPointer getReactivePowerUnit(); + + @CField("current_unit") + void setCurrentUnit(CCharPointer currentUnit); + + @CField("current_unit") + CCharPointer getCurrentUnit(); } @CStruct("nad_parameters") diff --git a/java/src/main/java/com/powsybl/python/network/NetworkCFunctions.java b/java/src/main/java/com/powsybl/python/network/NetworkCFunctions.java index 8a5024cf3d..d7f34f7096 100644 --- a/java/src/main/java/com/powsybl/python/network/NetworkCFunctions.java +++ b/java/src/main/java/com/powsybl/python/network/NetworkCFunctions.java @@ -878,6 +878,9 @@ public static void copyToCSldParameters(SldParameters parameters, SldParametersP cParameters.setAddNodesInfos(parameters.getSvgParameters().isAddNodesInfos()); cParameters.setTooltipEnabled(parameters.getSvgParameters().isTooltipEnabled()); cParameters.setComponentLibrary(CTypeUtil.toCharPtr(parameters.getComponentLibrary().getName())); + cParameters.setActivePowerUnit(CTypeUtil.toCharPtr(parameters.getSvgParameters().getActivePowerUnit())); + cParameters.setReactivePowerUnit(CTypeUtil.toCharPtr(parameters.getSvgParameters().getReactivePowerUnit())); + cParameters.setCurrentUnit(CTypeUtil.toCharPtr(parameters.getSvgParameters().getCurrentUnit())); } public static SldParametersPointer convertToSldParametersPointer(SldParameters parameters) { @@ -952,7 +955,10 @@ public static SldParameters convertSldParameters(SldParametersPointer sldParamet .setLabelCentered(sldParametersPtr.isCenterName()) .setLabelDiagonal(sldParametersPtr.isDiagonalLabel()) .setAddNodesInfos(sldParametersPtr.isAddNodesInfos()) - .setTooltipEnabled(sldParametersPtr.getTooltipEnabled()); + .setTooltipEnabled(sldParametersPtr.getTooltipEnabled()) + .setActivePowerUnit(CTypeUtil.toString(sldParametersPtr.getActivePowerUnit())) + .setReactivePowerUnit(CTypeUtil.toString(sldParametersPtr.getReactivePowerUnit())) + .setCurrentUnit(CTypeUtil.toString(sldParametersPtr.getCurrentUnit())); return sldParameters; } diff --git a/pypowsybl/_pypowsybl.pyi b/pypowsybl/_pypowsybl.pyi index e582855650..198a1e36ae 100644 --- a/pypowsybl/_pypowsybl.pyi +++ b/pypowsybl/_pypowsybl.pyi @@ -266,6 +266,9 @@ class SldParameters: tooltip_enabled: bool topological_coloring: bool component_library: str + active_power_unit: str + reactive_power_unit: str + current_unit: str def __init__(self) -> None: ... class NadLayoutType: diff --git a/pypowsybl/network/impl/sld_parameters.py b/pypowsybl/network/impl/sld_parameters.py index 82d642464a..7288098a66 100644 --- a/pypowsybl/network/impl/sld_parameters.py +++ b/pypowsybl/network/impl/sld_parameters.py @@ -13,7 +13,8 @@ class SldParameters: def __init__(self, use_name: bool = False, center_name: bool = False, diagonal_label: bool = False, nodes_infos: bool = False, tooltip_enabled: bool = False, topological_coloring: bool = True, - component_library: str = 'Convergence'): + component_library: str = 'Convergence', active_power_unit: str = "", reactive_power_unit: str = "", + current_unit: str = ""): self._use_name = use_name self._center_name = center_name self._diagonal_label = diagonal_label @@ -21,6 +22,9 @@ def __init__(self, use_name: bool = False, center_name: bool = False, diagonal_l self._tooltip_enabled = tooltip_enabled self._topological_coloring = topological_coloring self._component_library = component_library + self._active_power_unit = active_power_unit + self._reactive_power_unit = reactive_power_unit + self._current_unit = current_unit @property def use_name(self) -> bool: @@ -57,6 +61,21 @@ def component_library(self) -> str: """name of the library used for component""" return self._component_library + @property + def active_power_unit(self) -> str: + """unit of active power""" + return self._active_power_unit + + @property + def reactive_power_unit(self) -> str: + """unit of reactive power""" + return self._reactive_power_unit + + @property + def current_unit(self) -> str: + """unit of current""" + return self._current_unit + def _to_c_parameters(self) -> _pp.SldParameters: c_parameters = _pp.SldParameters() c_parameters.use_name = self._use_name @@ -66,4 +85,7 @@ def _to_c_parameters(self) -> _pp.SldParameters: c_parameters.nodes_infos = self._nodes_infos c_parameters.tooltip_enabled = self._tooltip_enabled c_parameters.component_library = self._component_library + c_parameters.active_power_unit = self._active_power_unit + c_parameters.reactive_power_unit = self._reactive_power_unit + c_parameters.current_unit = self._current_unit return c_parameters From f73d8428808ad1aef4a16a208885f081924e608c Mon Sep 17 00:00:00 2001 From: Tiphaine Mouminous Date: Fri, 28 Jun 2024 10:23:15 +0200 Subject: [PATCH 02/11] add active and reactive units with current_unit commented waiting for parameter current_feedr_info Signed-off-by: Tiphaine Mouminous --- cpp/powsybl-cpp/powsybl-api.h | 2 +- cpp/powsybl-cpp/powsybl-cpp.cpp | 4 ++-- cpp/powsybl-cpp/powsybl-cpp.h | 2 +- cpp/pypowsybl-cpp/bindings.cpp | 4 ++-- .../python/commons/PyPowsyblApiHeader.java | 17 +++++++++-------- .../python/network/NetworkCFunctions.java | 6 +++--- pypowsybl/_pypowsybl.pyi | 2 +- pypowsybl/network/impl/sld_parameters.py | 16 ++++++++-------- 8 files changed, 27 insertions(+), 26 deletions(-) diff --git a/cpp/powsybl-cpp/powsybl-api.h b/cpp/powsybl-cpp/powsybl-api.h index ac9056dadd..f893fd749e 100644 --- a/cpp/powsybl-cpp/powsybl-api.h +++ b/cpp/powsybl-cpp/powsybl-api.h @@ -342,7 +342,7 @@ typedef struct sld_parameters_struct { char* component_library; char* active_power_unit; char* reactive_power_unit; - char* current_unit; + //char* current_unit; } sld_parameters; typedef struct nad_parameters_struct { diff --git a/cpp/powsybl-cpp/powsybl-cpp.cpp b/cpp/powsybl-cpp/powsybl-cpp.cpp index 3c665faeb8..e9887dc306 100644 --- a/cpp/powsybl-cpp/powsybl-cpp.cpp +++ b/cpp/powsybl-cpp/powsybl-cpp.cpp @@ -1182,7 +1182,7 @@ SldParameters::SldParameters(sld_parameters* src) { component_library = toString(src->component_library); active_power_unit = toString(src->active_power_unit); reactive_power_unit = toString(src->reactive_power_unit); - current_unit = toString(src->active_power_unit); + //current_unit = toString(src->active_power_unit); } NadParameters::NadParameters(nad_parameters* src) { @@ -1211,7 +1211,7 @@ void SldParameters::sld_to_c_struct(sld_parameters& res) const { res.component_library = copyStringToCharPtr(component_library); res.active_power_unit = copyStringToCharPtr(active_power_unit); res.reactive_power_unit = copyStringToCharPtr(reactive_power_unit); - res.current_unit = copyStringToCharPtr(current_unit); + //res.current_unit = copyStringToCharPtr(current_unit); } void NadParameters::nad_to_c_struct(nad_parameters& res) const { diff --git a/cpp/powsybl-cpp/powsybl-cpp.h b/cpp/powsybl-cpp/powsybl-cpp.h index fad25f944e..0424b4dcf8 100644 --- a/cpp/powsybl-cpp/powsybl-cpp.h +++ b/cpp/powsybl-cpp/powsybl-cpp.h @@ -394,7 +394,7 @@ class SldParameters { std::string component_library; std::string active_power_unit; std::string reactive_power_unit; - std::string current_unit; + //std::string current_unit; }; enum class NadLayoutType { diff --git a/cpp/pypowsybl-cpp/bindings.cpp b/cpp/pypowsybl-cpp/bindings.cpp index 6860ba437d..41ff67ede9 100644 --- a/cpp/pypowsybl-cpp/bindings.cpp +++ b/cpp/pypowsybl-cpp/bindings.cpp @@ -548,8 +548,8 @@ PYBIND11_MODULE(_pypowsybl, m) { .def_readwrite("topological_coloring", &pypowsybl::SldParameters::topological_coloring) .def_readwrite("component_library", &pypowsybl::SldParameters::component_library) .def_readwrite("active_power_unit", &pypowsybl::SldParameters::active_power_unit) - .def_readwrite("reactive_power_unit", &pypowsybl::SldParameters::reactive_power_unit) - .def_readwrite("current_unit", &pypowsybl::SldParameters::current_unit); + .def_readwrite("reactive_power_unit", &pypowsybl::SldParameters::reactive_power_unit); + //.def_readwrite("current_unit", &pypowsybl::SldParameters::current_unit); py::enum_(m, "NadLayoutType") .value("FORCE_LAYOUT", pypowsybl::NadLayoutType::FORCE_LAYOUT) diff --git a/java/src/main/java/com/powsybl/python/commons/PyPowsyblApiHeader.java b/java/src/main/java/com/powsybl/python/commons/PyPowsyblApiHeader.java index 16a7683f6d..990dc21653 100644 --- a/java/src/main/java/com/powsybl/python/commons/PyPowsyblApiHeader.java +++ b/java/src/main/java/com/powsybl/python/commons/PyPowsyblApiHeader.java @@ -1064,22 +1064,23 @@ public interface SldParametersPointer extends PointerBase { void setComponentLibrary(CCharPointer componentLibrary); @CField("active_power_unit") - void setActivePowerUnit(CCharPointer activePowerUnit); + CCharPointer getActivePowerUnit(); @CField("active_power_unit") - CCharPointer getActivePowerUnit(); + void setActivePowerUnit(CCharPointer activePowerUnit); @CField("reactive_power_unit") - void setReactivePowerUnit(CCharPointer reactivePowerUnit); + CCharPointer getReactivePowerUnit(); @CField("reactive_power_unit") - CCharPointer getReactivePowerUnit(); + void setReactivePowerUnit(CCharPointer reactivePowerUnit); - @CField("current_unit") - void setCurrentUnit(CCharPointer currentUnit); +// @CField("current_unit") +// CCharPointer getCurrentUnit(); +// +// @CField("current_unit") +// void setCurrentUnit(CCharPointer currentUnit); - @CField("current_unit") - CCharPointer getCurrentUnit(); } @CStruct("nad_parameters") diff --git a/java/src/main/java/com/powsybl/python/network/NetworkCFunctions.java b/java/src/main/java/com/powsybl/python/network/NetworkCFunctions.java index d7f34f7096..7117cd2fdf 100644 --- a/java/src/main/java/com/powsybl/python/network/NetworkCFunctions.java +++ b/java/src/main/java/com/powsybl/python/network/NetworkCFunctions.java @@ -880,7 +880,7 @@ public static void copyToCSldParameters(SldParameters parameters, SldParametersP cParameters.setComponentLibrary(CTypeUtil.toCharPtr(parameters.getComponentLibrary().getName())); cParameters.setActivePowerUnit(CTypeUtil.toCharPtr(parameters.getSvgParameters().getActivePowerUnit())); cParameters.setReactivePowerUnit(CTypeUtil.toCharPtr(parameters.getSvgParameters().getReactivePowerUnit())); - cParameters.setCurrentUnit(CTypeUtil.toCharPtr(parameters.getSvgParameters().getCurrentUnit())); + //cParameters.setCurrentUnit(CTypeUtil.toCharPtr(parameters.getSvgParameters().getCurrentUnit())); } public static SldParametersPointer convertToSldParametersPointer(SldParameters parameters) { @@ -957,8 +957,8 @@ public static SldParameters convertSldParameters(SldParametersPointer sldParamet .setAddNodesInfos(sldParametersPtr.isAddNodesInfos()) .setTooltipEnabled(sldParametersPtr.getTooltipEnabled()) .setActivePowerUnit(CTypeUtil.toString(sldParametersPtr.getActivePowerUnit())) - .setReactivePowerUnit(CTypeUtil.toString(sldParametersPtr.getReactivePowerUnit())) - .setCurrentUnit(CTypeUtil.toString(sldParametersPtr.getCurrentUnit())); + .setReactivePowerUnit(CTypeUtil.toString(sldParametersPtr.getReactivePowerUnit())); + //.setCurrentUnit(CTypeUtil.toString(sldParametersPtr.getCurrentUnit())); return sldParameters; } diff --git a/pypowsybl/_pypowsybl.pyi b/pypowsybl/_pypowsybl.pyi index 198a1e36ae..910bcd2c66 100644 --- a/pypowsybl/_pypowsybl.pyi +++ b/pypowsybl/_pypowsybl.pyi @@ -268,7 +268,7 @@ class SldParameters: component_library: str active_power_unit: str reactive_power_unit: str - current_unit: str + #current_unit: str def __init__(self) -> None: ... class NadLayoutType: diff --git a/pypowsybl/network/impl/sld_parameters.py b/pypowsybl/network/impl/sld_parameters.py index 7288098a66..e0a9c68e18 100644 --- a/pypowsybl/network/impl/sld_parameters.py +++ b/pypowsybl/network/impl/sld_parameters.py @@ -13,8 +13,8 @@ class SldParameters: def __init__(self, use_name: bool = False, center_name: bool = False, diagonal_label: bool = False, nodes_infos: bool = False, tooltip_enabled: bool = False, topological_coloring: bool = True, - component_library: str = 'Convergence', active_power_unit: str = "", reactive_power_unit: str = "", - current_unit: str = ""): + component_library: str = 'Convergence', active_power_unit: str = "", reactive_power_unit: str = ""): + #current_unit: str = ""): self._use_name = use_name self._center_name = center_name self._diagonal_label = diagonal_label @@ -24,7 +24,7 @@ def __init__(self, use_name: bool = False, center_name: bool = False, diagonal_l self._component_library = component_library self._active_power_unit = active_power_unit self._reactive_power_unit = reactive_power_unit - self._current_unit = current_unit + #self._current_unit = current_unit @property def use_name(self) -> bool: @@ -71,10 +71,10 @@ def reactive_power_unit(self) -> str: """unit of reactive power""" return self._reactive_power_unit - @property - def current_unit(self) -> str: - """unit of current""" - return self._current_unit + # @property + # def current_unit(self) -> str: + # """unit of current""" + # return self._current_unit def _to_c_parameters(self) -> _pp.SldParameters: c_parameters = _pp.SldParameters() @@ -87,5 +87,5 @@ def _to_c_parameters(self) -> _pp.SldParameters: c_parameters.component_library = self._component_library c_parameters.active_power_unit = self._active_power_unit c_parameters.reactive_power_unit = self._reactive_power_unit - c_parameters.current_unit = self._current_unit + # c_parameters.current_unit = self._current_unit return c_parameters From b74c651598efb724f93769d2376366b48634cebe Mon Sep 17 00:00:00 2001 From: Tiphaine Mouminous Date: Fri, 28 Jun 2024 10:32:45 +0200 Subject: [PATCH 03/11] add active and reactive power unit parameters with current_unit commented Signed-off-by: Tiphaine Mouminous --- tests/test_network.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/test_network.py b/tests/test_network.py index f3a7a89650..94f398a4f4 100644 --- a/tests/test_network.py +++ b/tests/test_network.py @@ -784,10 +784,13 @@ def test_sld_parameters(): assert not parameters.nodes_infos assert parameters.topological_coloring assert parameters.component_library == 'Convergence' + assert parameters.active_power_unit == "" + assert parameters.reactive_power_unit == "" + #assert parameters.current_unit == "" parameters = SldParameters(use_name=True, center_name=True, diagonal_label=True, nodes_infos=True, tooltip_enabled=True, topological_coloring=False, - component_library='FlatDesign') + component_library='FlatDesign', active_power_unit='a', reactive_power_unit='b') #,current_unit = 'c' assert parameters.use_name assert parameters.center_name assert parameters.diagonal_label @@ -795,6 +798,9 @@ def test_sld_parameters(): assert parameters.tool_tip_enabled assert not parameters.topological_coloring assert parameters.component_library == 'FlatDesign' + assert parameters.active_power_unit == 'a' + assert parameters.reactive_power_unit == 'b' + #assert parameters.current_unit == 'c' def test_layout_parameters(): From e57bd7769aaa25e53cf0043c7cdf13a285d6cc7f Mon Sep 17 00:00:00 2001 From: Tiphaine Mouminous Date: Fri, 28 Jun 2024 10:55:12 +0200 Subject: [PATCH 04/11] add parameters in doc but waiting for current feeder info Signed-off-by: Tiphaine Mouminous --- .../ieee14_SldParam_activepowerunit.svg | 364 ++++++++++++++++++ .../ieee14_SldParam_reactivepowerunit.svg | 364 ++++++++++++++++++ docs/user_guide/network_visualization.rst | 34 ++ 3 files changed, 762 insertions(+) create mode 100644 docs/_static/images/ieee14_SldParam_activepowerunit.svg create mode 100644 docs/_static/images/ieee14_SldParam_reactivepowerunit.svg diff --git a/docs/_static/images/ieee14_SldParam_activepowerunit.svg b/docs/_static/images/ieee14_SldParam_activepowerunit.svg new file mode 100644 index 0000000000..bba4031294 --- /dev/null +++ b/docs/_static/images/ieee14_SldParam_activepowerunit.svg @@ -0,0 +1,364 @@ + + + + + + + + B4 + + + + + + + + + + + + + + + 48 MW + + + + + -4 + + + + + + + + + + + + + + + B4-L + + + + + + + + + + + + + + + + 3 + + + + + -54 MW + + + + + + + + + + + + L2-4-1 + + + + + + + + + + + + + + + + 24 MW + + + + + -5 + + + + + + + + + + + + L3-4-1 + + + + + + + + + + + + + + + + 16 + + + + + -61 MW + + + + + + + + + + + + L4-5-1 + + + + + + + + + + + + + + + + 28 MW + + + + + -10 + + + + + + + + + + + + + + T4-7-1 + + + + + + + + + + + + + + + + -0 + + + + + 16 MW + + + + + + + + + + + + + + T4-9-1 + + + + diff --git a/docs/_static/images/ieee14_SldParam_reactivepowerunit.svg b/docs/_static/images/ieee14_SldParam_reactivepowerunit.svg new file mode 100644 index 0000000000..4bb7792314 --- /dev/null +++ b/docs/_static/images/ieee14_SldParam_reactivepowerunit.svg @@ -0,0 +1,364 @@ + + + + + + + + B4 + + + + + + + + + + + + + + + 48 + + + + + -4 MVAR + + + + + + + + + + + + + + + B4-L + + + + + + + + + + + + + + + + 3 MVAR + + + + + -54 + + + + + + + + + + + + L2-4-1 + + + + + + + + + + + + + + + + 24 + + + + + -5 MVAR + + + + + + + + + + + + L3-4-1 + + + + + + + + + + + + + + + + 16 MVAR + + + + + -61 + + + + + + + + + + + + L4-5-1 + + + + + + + + + + + + + + + + 28 + + + + + -10 MVAR + + + + + + + + + + + + + + T4-7-1 + + + + + + + + + + + + + + + + -0 MVAR + + + + + 16 + + + + + + + + + + + + + + T4-9-1 + + + + diff --git a/docs/user_guide/network_visualization.rst b/docs/user_guide/network_visualization.rst index 18f12b40b0..e6a2e700ba 100644 --- a/docs/user_guide/network_visualization.rst +++ b/docs/user_guide/network_visualization.rst @@ -43,6 +43,10 @@ Single-line diagrams can be customized through SldParameters: - tooltip_enabled: if true, display the name of the component pointed by the cursor (default value false) - topological_coloring: if true, set each electrical nodes with a different colour (default value true) - component_library: choose component library (default value 'Convergence') +- active_power_unit: display unit of active power (default value "") +- reactive_power_unit: display unit of reactive power (default value "") +- current_unit: display unit of current (default value "") + Let's see some examples down below: @@ -140,6 +144,36 @@ Let's see some examples down below: .. image:: ../_static/images/ieee14_SldParam_complib_flatdesign.svg :class: forced-white-background +- with active_power_unit = "MW" + +.. code-block:: python + + >>> param = pn.SldParameters(active_power_unit = "MW") + >>> network.get_single_line_diagram('VL4', parameters = param) + +.. image:: ../_static/images/ieee14_SldParam_activepowerunit.svg + :class: forced-white-background + +- with reactive_power_unit = "MVAR" + +.. code-block:: python + + >>> param = pn.SldParameters(reactive_power_unit = "MVAR") + >>> network.get_single_line_diagram('VL4', parameters = param) + +.. image:: ../_static/images/ieee14_SldParam_reactivepowerunit.svg + :class: forced-white-background + + +- with current_unit = "A" + +.. code-block:: python + + >>> param = pn.SldParameters(current_unit = "A") + >>> network.get_single_line_diagram('VL4', parameters = param) + +.. image:: ../_static/images/ieee14_SldParam_currentunit.svg + :class: forced-white-background It is also possible to display a multi-substation single line diagram (currently a beta feature): From 54df9ee422d5e9d7976db52ba95a52bccc2a6b79 Mon Sep 17 00:00:00 2001 From: Tiphaine Mouminous Date: Fri, 28 Jun 2024 11:22:48 +0200 Subject: [PATCH 05/11] fix doc Signed-off-by: Tiphaine Mouminous --- docs/user_guide/network_visualization.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/user_guide/network_visualization.rst b/docs/user_guide/network_visualization.rst index e6a2e700ba..05690ffc7a 100644 --- a/docs/user_guide/network_visualization.rst +++ b/docs/user_guide/network_visualization.rst @@ -133,7 +133,7 @@ Let's see some examples down below: .. image:: ../_static/images/SldParam_topologicalcoloringfalse.svg :class: forced-white-background -- with component_library = "FlatDesign" +- with component_library = "FlatDesign" .. code-block:: python From b32b234088d8159facd6ebebe8265968eb74e144 Mon Sep 17 00:00:00 2001 From: Tiphaine Mouminous Date: Fri, 28 Jun 2024 11:39:42 +0200 Subject: [PATCH 06/11] fix doc Signed-off-by: Tiphaine Mouminous --- docs/user_guide/network_visualization.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/user_guide/network_visualization.rst b/docs/user_guide/network_visualization.rst index 05690ffc7a..e6a2e700ba 100644 --- a/docs/user_guide/network_visualization.rst +++ b/docs/user_guide/network_visualization.rst @@ -133,7 +133,7 @@ Let's see some examples down below: .. image:: ../_static/images/SldParam_topologicalcoloringfalse.svg :class: forced-white-background -- with component_library = "FlatDesign" +- with component_library = "FlatDesign" .. code-block:: python From 9db23b02e481124899904e7ed6726f5ac97c4e0b Mon Sep 17 00:00:00 2001 From: Tiphaine Mouminous Date: Tue, 9 Jul 2024 11:35:08 +0200 Subject: [PATCH 07/11] fix merge Signed-off-by: Tiphaine Mouminous --- cpp/pypowsybl-cpp/bindings.cpp | 2 +- .../main/java/com/powsybl/python/network/NetworkCFunctions.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cpp/pypowsybl-cpp/bindings.cpp b/cpp/pypowsybl-cpp/bindings.cpp index 86ec09f8d6..03c9c7a97b 100644 --- a/cpp/pypowsybl-cpp/bindings.cpp +++ b/cpp/pypowsybl-cpp/bindings.cpp @@ -548,7 +548,7 @@ PYBIND11_MODULE(_pypowsybl, m) { .def_readwrite("tooltip_enabled", &pypowsybl::SldParameters::tooltip_enabled) .def_readwrite("topological_coloring", &pypowsybl::SldParameters::topological_coloring) .def_readwrite("component_library", &pypowsybl::SldParameters::component_library) - .def_readwrite("display_current_feeder_info", &pypowsybl::SldParameters::display_current_feeder_info); + .def_readwrite("display_current_feeder_info", &pypowsybl::SldParameters::display_current_feeder_info) .def_readwrite("component_library", &pypowsybl::SldParameters::component_library) .def_readwrite("active_power_unit", &pypowsybl::SldParameters::active_power_unit) .def_readwrite("reactive_power_unit", &pypowsybl::SldParameters::reactive_power_unit); diff --git a/java/src/main/java/com/powsybl/python/network/NetworkCFunctions.java b/java/src/main/java/com/powsybl/python/network/NetworkCFunctions.java index 47ea82cf23..7c04e394fe 100644 --- a/java/src/main/java/com/powsybl/python/network/NetworkCFunctions.java +++ b/java/src/main/java/com/powsybl/python/network/NetworkCFunctions.java @@ -957,7 +957,7 @@ public static SldParameters convertSldParameters(SldParametersPointer sldParamet .setLabelDiagonal(sldParametersPtr.isDiagonalLabel()) .setAddNodesInfos(sldParametersPtr.isAddNodesInfos()) .setTooltipEnabled(sldParametersPtr.getTooltipEnabled()) - .setDisplayCurrentFeederInfo(sldParametersPtr.isDisplayCurrentFeederInfo()); + .setDisplayCurrentFeederInfo(sldParametersPtr.isDisplayCurrentFeederInfo()) .setTooltipEnabled(sldParametersPtr.getTooltipEnabled()) .setActivePowerUnit(CTypeUtil.toString(sldParametersPtr.getActivePowerUnit())) .setReactivePowerUnit(CTypeUtil.toString(sldParametersPtr.getReactivePowerUnit())); From 09d6fecd75ceafa2c65e91351b614d5103ac95b2 Mon Sep 17 00:00:00 2001 From: Tiphaine Mouminous Date: Tue, 9 Jul 2024 16:02:22 +0200 Subject: [PATCH 08/11] add current unit Signed-off-by: Tiphaine Mouminous --- cpp/powsybl-cpp/powsybl-api.h | 2 +- cpp/powsybl-cpp/powsybl-cpp.cpp | 4 ++-- cpp/powsybl-cpp/powsybl-cpp.h | 2 +- cpp/pypowsybl-cpp/bindings.cpp | 5 ++--- .../python/commons/PyPowsyblApiHeader.java | 10 +++++----- .../powsybl/python/network/NetworkCFunctions.java | 6 +++--- pypowsybl/_pypowsybl.pyi | 2 +- pypowsybl/network/impl/sld_parameters.py | 15 +++++++-------- 8 files changed, 22 insertions(+), 24 deletions(-) diff --git a/cpp/powsybl-cpp/powsybl-api.h b/cpp/powsybl-cpp/powsybl-api.h index ce8dd8d74a..2e5256de1b 100644 --- a/cpp/powsybl-cpp/powsybl-api.h +++ b/cpp/powsybl-cpp/powsybl-api.h @@ -344,7 +344,7 @@ typedef struct sld_parameters_struct { unsigned char display_current_feeder_info; char* active_power_unit; char* reactive_power_unit; - //char* current_unit; + char* current_unit; } sld_parameters; typedef struct nad_parameters_struct { diff --git a/cpp/powsybl-cpp/powsybl-cpp.cpp b/cpp/powsybl-cpp/powsybl-cpp.cpp index b8e4f9abb5..4930eba5d9 100644 --- a/cpp/powsybl-cpp/powsybl-cpp.cpp +++ b/cpp/powsybl-cpp/powsybl-cpp.cpp @@ -1202,7 +1202,7 @@ SldParameters::SldParameters(sld_parameters* src) { display_current_feeder_info = (bool) src->display_current_feeder_info; active_power_unit = toString(src->active_power_unit); reactive_power_unit = toString(src->reactive_power_unit); - //current_unit = toString(src->active_power_unit); + current_unit = toString(src->current_unit); } NadParameters::NadParameters(nad_parameters* src) { @@ -1232,7 +1232,7 @@ void SldParameters::sld_to_c_struct(sld_parameters& res) const { res.display_current_feeder_info = (unsigned char) display_current_feeder_info; res.active_power_unit = copyStringToCharPtr(active_power_unit); res.reactive_power_unit = copyStringToCharPtr(reactive_power_unit); - //res.current_unit = copyStringToCharPtr(current_unit); + res.current_unit = copyStringToCharPtr(current_unit); } void NadParameters::nad_to_c_struct(nad_parameters& res) const { diff --git a/cpp/powsybl-cpp/powsybl-cpp.h b/cpp/powsybl-cpp/powsybl-cpp.h index 3c6970dc29..2e6e930204 100644 --- a/cpp/powsybl-cpp/powsybl-cpp.h +++ b/cpp/powsybl-cpp/powsybl-cpp.h @@ -396,7 +396,7 @@ class SldParameters { bool display_current_feeder_info; std::string active_power_unit; std::string reactive_power_unit; - //std::string current_unit; + std::string current_unit; }; enum class NadLayoutType { diff --git a/cpp/pypowsybl-cpp/bindings.cpp b/cpp/pypowsybl-cpp/bindings.cpp index 03c9c7a97b..763e5110ca 100644 --- a/cpp/pypowsybl-cpp/bindings.cpp +++ b/cpp/pypowsybl-cpp/bindings.cpp @@ -549,10 +549,9 @@ PYBIND11_MODULE(_pypowsybl, m) { .def_readwrite("topological_coloring", &pypowsybl::SldParameters::topological_coloring) .def_readwrite("component_library", &pypowsybl::SldParameters::component_library) .def_readwrite("display_current_feeder_info", &pypowsybl::SldParameters::display_current_feeder_info) - .def_readwrite("component_library", &pypowsybl::SldParameters::component_library) .def_readwrite("active_power_unit", &pypowsybl::SldParameters::active_power_unit) - .def_readwrite("reactive_power_unit", &pypowsybl::SldParameters::reactive_power_unit); - //.def_readwrite("current_unit", &pypowsybl::SldParameters::current_unit); + .def_readwrite("reactive_power_unit", &pypowsybl::SldParameters::reactive_power_unit) + .def_readwrite("current_unit", &pypowsybl::SldParameters::current_unit); py::enum_(m, "NadLayoutType") .value("FORCE_LAYOUT", pypowsybl::NadLayoutType::FORCE_LAYOUT) diff --git a/java/src/main/java/com/powsybl/python/commons/PyPowsyblApiHeader.java b/java/src/main/java/com/powsybl/python/commons/PyPowsyblApiHeader.java index 1241daa091..ebf9a44992 100644 --- a/java/src/main/java/com/powsybl/python/commons/PyPowsyblApiHeader.java +++ b/java/src/main/java/com/powsybl/python/commons/PyPowsyblApiHeader.java @@ -1087,11 +1087,11 @@ public interface SldParametersPointer extends PointerBase { @CField("reactive_power_unit") void setReactivePowerUnit(CCharPointer reactivePowerUnit); -// @CField("current_unit") -// CCharPointer getCurrentUnit(); -// -// @CField("current_unit") -// void setCurrentUnit(CCharPointer currentUnit); + @CField("current_unit") + CCharPointer getCurrentUnit(); + + @CField("current_unit") + void setCurrentUnit(CCharPointer currentUnit); } diff --git a/java/src/main/java/com/powsybl/python/network/NetworkCFunctions.java b/java/src/main/java/com/powsybl/python/network/NetworkCFunctions.java index 7c04e394fe..d37b946c63 100644 --- a/java/src/main/java/com/powsybl/python/network/NetworkCFunctions.java +++ b/java/src/main/java/com/powsybl/python/network/NetworkCFunctions.java @@ -881,7 +881,7 @@ public static void copyToCSldParameters(SldParameters parameters, SldParametersP cParameters.setDisplayCurrentFeederInfo(parameters.getSvgParameters().isDisplayCurrentFeederInfo()); cParameters.setActivePowerUnit(CTypeUtil.toCharPtr(parameters.getSvgParameters().getActivePowerUnit())); cParameters.setReactivePowerUnit(CTypeUtil.toCharPtr(parameters.getSvgParameters().getReactivePowerUnit())); - //cParameters.setCurrentUnit(CTypeUtil.toCharPtr(parameters.getSvgParameters().getCurrentUnit())); + cParameters.setCurrentUnit(CTypeUtil.toCharPtr(parameters.getSvgParameters().getCurrentUnit())); } public static SldParametersPointer convertToSldParametersPointer(SldParameters parameters) { @@ -960,8 +960,8 @@ public static SldParameters convertSldParameters(SldParametersPointer sldParamet .setDisplayCurrentFeederInfo(sldParametersPtr.isDisplayCurrentFeederInfo()) .setTooltipEnabled(sldParametersPtr.getTooltipEnabled()) .setActivePowerUnit(CTypeUtil.toString(sldParametersPtr.getActivePowerUnit())) - .setReactivePowerUnit(CTypeUtil.toString(sldParametersPtr.getReactivePowerUnit())); - //.setCurrentUnit(CTypeUtil.toString(sldParametersPtr.getCurrentUnit())); + .setReactivePowerUnit(CTypeUtil.toString(sldParametersPtr.getReactivePowerUnit())) + .setCurrentUnit(CTypeUtil.toString(sldParametersPtr.getCurrentUnit())); return sldParameters; } diff --git a/pypowsybl/_pypowsybl.pyi b/pypowsybl/_pypowsybl.pyi index 0c82e029b5..b3ed28dd7d 100644 --- a/pypowsybl/_pypowsybl.pyi +++ b/pypowsybl/_pypowsybl.pyi @@ -269,7 +269,7 @@ class SldParameters: display_current_feeder_info: bool active_power_unit: str reactive_power_unit: str - #current_unit: str + current_unit: str def __init__(self) -> None: ... class NadLayoutType: diff --git a/pypowsybl/network/impl/sld_parameters.py b/pypowsybl/network/impl/sld_parameters.py index 6f16b0b5bc..6a4283ce69 100644 --- a/pypowsybl/network/impl/sld_parameters.py +++ b/pypowsybl/network/impl/sld_parameters.py @@ -14,8 +14,7 @@ class SldParameters: def __init__(self, use_name: bool = False, center_name: bool = False, diagonal_label: bool = False, nodes_infos: bool = False, tooltip_enabled: bool = False, topological_coloring: bool = True, component_library: str = 'Convergence', display_current_feeder_info: bool = False, - active_power_unit: str = "", reactive_power_unit: str = ""): - #current_unit: str = ""): + active_power_unit: str = "", reactive_power_unit: str = "", current_unit: str = ""): self._use_name = use_name self._center_name = center_name self._diagonal_label = diagonal_label @@ -26,7 +25,7 @@ def __init__(self, use_name: bool = False, center_name: bool = False, diagonal_l self._display_current_feeder_info = display_current_feeder_info self._active_power_unit = active_power_unit self._reactive_power_unit = reactive_power_unit - #self._current_unit = current_unit + self._current_unit = current_unit @property def use_name(self) -> bool: @@ -78,10 +77,10 @@ def reactive_power_unit(self) -> str: """unit of reactive power""" return self._reactive_power_unit - # @property - # def current_unit(self) -> str: - # """unit of current""" - # return self._current_unit + @property + def current_unit(self) -> str: + """unit of current""" + return self._current_unit def _to_c_parameters(self) -> _pp.SldParameters: c_parameters = _pp.SldParameters() @@ -95,5 +94,5 @@ def _to_c_parameters(self) -> _pp.SldParameters: c_parameters.display_current_feeder_info = self._display_current_feeder_info c_parameters.active_power_unit = self._active_power_unit c_parameters.reactive_power_unit = self._reactive_power_unit - # c_parameters.current_unit = self._current_unit + c_parameters.current_unit = self._current_unit return c_parameters From e19063a0c4de5d7ce98a6545deaeb2ba53d98ca8 Mon Sep 17 00:00:00 2001 From: Tiphaine Mouminous Date: Tue, 9 Jul 2024 16:03:54 +0200 Subject: [PATCH 09/11] update tests Signed-off-by: Tiphaine Mouminous --- tests/test_network.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_network.py b/tests/test_network.py index ee349f81f9..9852113c9a 100644 --- a/tests/test_network.py +++ b/tests/test_network.py @@ -787,12 +787,12 @@ def test_sld_parameters(): assert parameters.component_library == 'Convergence' assert parameters.active_power_unit == "" assert parameters.reactive_power_unit == "" - #assert parameters.current_unit == "" + assert parameters.current_unit == "" parameters = SldParameters(use_name=True, center_name=True, diagonal_label=True, nodes_infos=True, tooltip_enabled=True, topological_coloring=False, component_library='FlatDesign', display_current_feeder_info=True, - active_power_unit='a', reactive_power_unit='b') #,current_unit = 'c' + active_power_unit='a', reactive_power_unit='b', current_unit='c') assert parameters.use_name assert parameters.center_name assert parameters.diagonal_label @@ -803,7 +803,7 @@ def test_sld_parameters(): assert parameters.component_library == 'FlatDesign' assert parameters.active_power_unit == 'a' assert parameters.reactive_power_unit == 'b' - #assert parameters.current_unit == 'c' + assert parameters.current_unit == 'c' def test_layout_parameters(): From 99aa6aed5661c187fdf9d72d86af98bd4f7d67d7 Mon Sep 17 00:00:00 2001 From: Tiphaine Mouminous Date: Tue, 9 Jul 2024 16:04:44 +0200 Subject: [PATCH 10/11] update docs Signed-off-by: Tiphaine Mouminous --- .../images/ieee14_SldParam_currentunit.svg | 394 ++++++++++++++++++ docs/user_guide/network_visualization.rst | 2 +- 2 files changed, 395 insertions(+), 1 deletion(-) create mode 100644 docs/_static/images/ieee14_SldParam_currentunit.svg diff --git a/docs/_static/images/ieee14_SldParam_currentunit.svg b/docs/_static/images/ieee14_SldParam_currentunit.svg new file mode 100644 index 0000000000..f26f7c180c --- /dev/null +++ b/docs/_static/images/ieee14_SldParam_currentunit.svg @@ -0,0 +1,394 @@ + + + + + + + + B4 + + + + + + + + + + + + + + + 48 + + + + + -4 + + + + + 202 A + + + + + + + + + + + + + + + B4-L + + + + + + + + + + + + + + + + 229 A + + + + + 3 + + + + + -54 + + + + + + + + + + + + L2-4-1 + + + + + + + + + + + + + + + + 24 + + + + + -5 + + + + + 101 A + + + + + + + + + + + + L3-4-1 + + + + + + + + + + + + + + + + 265 A + + + + + 16 + + + + + -61 + + + + + + + + + + + + L4-5-1 + + + + + + + + + + + + + + + + 28 + + + + + -10 + + + + + 125 A + + + + + + + + + + + + + + T4-7-1 + + + + + + + + + + + + + + + + 68 A + + + + + -0 + + + + + 16 + + + + + + + + + + + + + + T4-9-1 + + + + diff --git a/docs/user_guide/network_visualization.rst b/docs/user_guide/network_visualization.rst index 434b918ef9..4d85fbc70a 100644 --- a/docs/user_guide/network_visualization.rst +++ b/docs/user_guide/network_visualization.rst @@ -180,7 +180,7 @@ Let's see some examples down below: .. code-block:: python - >>> param = pn.SldParameters(current_unit = "A") + >>> param = pn.SldParameters(display_current_feeder_info = True, current_unit = "A") >>> network.get_single_line_diagram('VL4', parameters = param) .. image:: ../_static/images/ieee14_SldParam_currentunit.svg From e4c230222c3c3b7757e87a11ec1af14083815f83 Mon Sep 17 00:00:00 2001 From: Tiphaine Mouminous Date: Wed, 10 Jul 2024 09:58:36 +0200 Subject: [PATCH 11/11] fix typo in docs Signed-off-by: Tiphaine Mouminous --- docs/user_guide/network_visualization.rst | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/user_guide/network_visualization.rst b/docs/user_guide/network_visualization.rst index 4d85fbc70a..44b7760ae6 100644 --- a/docs/user_guide/network_visualization.rst +++ b/docs/user_guide/network_visualization.rst @@ -62,7 +62,7 @@ Let's see some examples down below: .. image:: ../_static/images/ieee14_SldParam_default.svg :class: forced-white-background -- with use_name = true +- with use_name = True .. code-block:: python @@ -72,7 +72,7 @@ Let's see some examples down below: .. image:: ../_static/images/ieee14_SldParam_usename.svg :class: forced-white-background -- with center_name = true +- with center_name = True .. code-block:: python @@ -82,7 +82,7 @@ Let's see some examples down below: .. image:: ../_static/images/ieee14_SldParam_centername.svg :class: forced-white-background -- with diagonal_label = true +- with diagonal_label = True .. code-block:: python @@ -92,7 +92,7 @@ Let's see some examples down below: .. image:: ../_static/images/ieee14_SldParam_diagonallabel.svg :class: forced-white-background -- with nodes_infos = true +- with nodes_infos = True .. code-block:: python @@ -102,7 +102,7 @@ Let's see some examples down below: .. image:: ../_static/images/ieee14_SldParam_nodesinfos.svg :class: forced-white-background -- with tooltip enabled +- with tooltip_enabled = True .. code-block:: python @@ -112,7 +112,7 @@ Let's see some examples down below: .. image:: ../_static/images/ieee14_SldParam_tooltipenabledtrue.png :class: forced-white-background -- with topological coloring = true +- with topological_coloring = True .. code-block:: python @@ -124,7 +124,7 @@ Let's see some examples down below: .. image:: ../_static/images/SldParam_topologicalcoloringtrue.svg :class: forced-white-background -- with topological coloring = false +- with topological_coloring = False .. code-block:: python @@ -145,7 +145,7 @@ Let's see some examples down below: .. image:: ../_static/images/ieee14_SldParam_complib_flatdesign.svg :class: forced-white-background -- with display current feeder info +- with display_current_feeder_info = True .. code-block:: python