Skip to content
Snippets Groups Projects
Commit 1734d4c2 authored by Sreejith Pananchickal Sajeev's avatar Sreejith Pananchickal Sajeev
Browse files

added ppf

parent b19c6427
Branches main
No related tags found
No related merge requests found
[submodule "ppf"]
path = ppf
url = git@git-ce.rwth-aachen.de:sreejith12333/ppf.git
......@@ -22,9 +22,9 @@ p = str(this_file_folder)+"/examples/sample_data/areti"
xml_path = Path(p)
xml_files = [os.path.join(xml_path, "1.xml"),
os.path.join(xml_path, "2.xml"),
os.path.join(xml_path, "3.xml")
xml_files = [os.path.join(xml_path, "3.xml"),
os.path.join(xml_path, "2.xml"),
os.path.join(xml_path, "1.xml")
]
# Read cim files and create new network.System object
......@@ -38,11 +38,11 @@ results_pf, num_iter_cim = nv_powerflow.solve(system)
# --- State Estimation ---
""" Write here the percent uncertainties of the measurements"""
V_unc = 30
I_unc = 20
V_unc = 0
I_unc = 0
Sinj_unc = 0
S_unc = 0
Pmu_mag_unc = 70
Pmu_mag_unc = 0
Pmu_phase_unc = 0
# Create measurements data structures
......@@ -62,9 +62,7 @@ state_estimation_results = nv_state_estimator.DsseCall(system, measurements_set)
# Print node voltages
print("state_estimation_results.voltages: ")
for node in state_estimation_results.nodes:
print('{}={}'.format(node.topology_node.uuid, node.voltage))
print('{}={}'.format(node.topology_node.uuid, node.voltage_pu))
print(dir(node))
for node in state_estimation_results.nodes:
print('{}={}'.format(node.topology_node.type, node.voltage))
\ No newline at end of file
system.generate_sld(output_file='sld.png')
\ No newline at end of file
INFO:cimpy.cimimport:START of parsing file "/home/ubuntu/pyvolt-docker/examples/sample_data/areti/1.xml"
INFO:cimpy.cimimport:START of parsing file "/home/ubuntu/pyvolt-docker/examples/sample_data/areti/2.xml"
INFO:cimpy.cimimport:START of parsing file "/home/ubuntu/pyvolt-docker/examples/sample_data/areti/3.xml"
INFO:cimpy.cimimport:END of parsing file "/home/ubuntu/pyvolt-docker/examples/sample_data/areti/1.xml"
INFO:cimpy.cimimport:END of parsing file "/home/ubuntu/pyvolt-docker/examples/sample_data/areti/2.xml"
INFO:cimpy.cimimport:END of parsing file "/home/ubuntu/pyvolt-docker/examples/sample_data/areti/3.xml"
WARNING:cimpy.cimimport:Package information not found for class type : 1222 times
WARNING:cimpy.cimimport:Package information not found for class Terminal, attribute ConductingEquipment : 436 times
WARNING:cimpy.cimimport:'Terminal' has not attribute 'ConnectivityNode' : 436 times
WARNING:cimpy.cimimport:Package information not found for class Terminal, attribute name : 436 times
WARNING:cimpy.cimimport:Package information not found for class Terminal, attribute connected : 436 times
WARNING:cimpy.cimimport:Package information not found for class Terminal, attribute sequenceNumber : 436 times
WARNING:cimpy.cimimport:Referenced Terminal [PhaseCode.ABC] object missing. : 436 times
WARNING:cimpy.cimimport:'ConnectivityNode' has not attribute 'name' : 163 times
WARNING:cimpy.cimimport:'ConnectivityNode' has not attribute 'ConnectivityNodeContainer' : 163 times
WARNING:cimpy.cimimport:Package information not found for class Disconnector, attribute name : 112 times
WARNING:cimpy.cimimport:Package information not found for class Disconnector, attribute BaseVoltage : 112 times
WARNING:cimpy.cimimport:Package information not found for class Disconnector, attribute EquipmentContainer : 112 times
WARNING:cimpy.cimimport:Package information not found for class Disconnector, attribute normalOpen : 112 times
WARNING:cimpy.cimimport:Package information not found for class EnergyConsumer, attribute name : 52 times
WARNING:cimpy.cimimport:Package information not found for class EnergyConsumer, attribute EquipmentContainer : 52 times
WARNING:cimpy.cimimport:Package information not found for class EnergyConsumer, attribute aggregate : 52 times
WARNING:cimpy.cimimport:'EnergyConsumer' has not attribute 'pfixed' : 52 times
WARNING:cimpy.cimimport:'EnergyConsumer' has not attribute 'qfixed' : 52 times
WARNING:cimpy.cimimport:Package information not found for class Terminal, attribute TopologicalNode : 224 times
WARNING:cimpy.cimimport:Package information not found for class SvVoltage, attribute v : 57 times
WARNING:cimpy.cimimport:Package information not found for class SvVoltage, attribute angle : 57 times
WARNING:cimpy.cimimport:Package information not found for class SvVoltage, attribute TopologicalNode : 57 times
WARNING:cimpy.cimimport:Package information not found for class Substation, attribute name : 57 times
WARNING:cimpy.cimimport:Package information not found for class Substation, attribute Region : 57 times
WARNING:cimpy.cimimport:Package information not found for class TopologicalNode, attribute name : 57 times
WARNING:cimpy.cimimport:Package information not found for class TopologicalNode, attribute ConnectivityNodeContainer : 57 times
WARNING:cimpy.cimimport:Package information not found for class TopologicalNode, attribute TopologicalIsland : 57 times
WARNING:cimpy.cimimport:Package information not found for class TopologicalNode, attribute BaseVoltage : 57 times
WARNING:cimpy.cimimport:Package information not found for class SvPowerFlow, attribute p : 52 times
WARNING:cimpy.cimimport:Package information not found for class SvPowerFlow, attribute q : 52 times
WARNING:cimpy.cimimport:Package information not found for class SvPowerFlow, attribute Terminal : 52 times
WARNING:cimpy.cimimport:Package information not found for class VoltageLevel, attribute BaseVoltage : 58 times
WARNING:cimpy.cimimport:Package information not found for class VoltageLevel, attribute name : 58 times
WARNING:cimpy.cimimport:Package information not found for class VoltageLevel, attribute Substation : 58 times
WARNING:cimpy.cimimport:Package information not found for class ACLineSegment, attribute name : 54 times
WARNING:cimpy.cimimport:Package information not found for class ACLineSegment, attribute x : 54 times
WARNING:cimpy.cimimport:Package information not found for class ACLineSegment, attribute r : 54 times
WARNING:cimpy.cimimport:Package information not found for class ACLineSegment, attribute gch : 54 times
WARNING:cimpy.cimimport:Package information not found for class ACLineSegment, attribute bch : 54 times
WARNING:cimpy.cimimport:Package information not found for class ACLineSegment, attribute length : 54 times
WARNING:cimpy.cimimport:Package information not found for class ACLineSegment, attribute BaseVoltage : 54 times
WARNING:cimpy.cimimport:Package information not found for class ACLineSegment, attribute aggregate : 54 times
WARNING:cimpy.cimimport:Package information not found for class ACLineSegment, attribute EquipmentContainer : 54 times
WARNING:cimpy.cimimport:Package information not found for class BusbarSection, attribute name : 55 times
WARNING:cimpy.cimimport:Package information not found for class BusbarSection, attribute EquipmentContainer : 55 times
WARNING:cimpy.cimimport:Package information not found for class BusbarSection, attribute BaseVoltage : 55 times
WARNING:cimpy.cimimport:Package information not found for class Line, attribute name : 54 times
WARNING:cimpy.cimimport:Package information not found for class Line, attribute Region : 54 times
WARNING:cimpy.cimimport:Package information not found for class SubGeographicalRegion, attribute name : 3 times
WARNING:cimpy.cimimport:Package information not found for class SubGeographicalRegion, attribute Region : 3 times
WARNING:cimpy.cimimport:Package information not found for class TopologicalIsland, attribute name : 3 times
WARNING:cimpy.cimimport:Package information not found for class ExternalNetworkInjection, attribute aggregate : 3 times
WARNING:cimpy.cimimport:Package information not found for class ExternalNetworkInjection, attribute name : 3 times
WARNING:cimpy.cimimport:Package information not found for class ExternalNetworkInjection, attribute EquipmentContainer : 3 times
WARNING:cimpy.cimimport:Package information not found for class BaseVoltage, attribute nominalVoltage : 3 times
WARNING:cimpy.cimimport:Package information not found for class BaseVoltage, attribute name : 3 times
WARNING:cimpy.cimimport:Package information not found for class GeographicalRegion, attribute name : 3 times
INFO:cimpy.cimimport:CIM object Terminal created : 436 times
INFO:cimpy.cimimport:CIM object ConnectivityNode created : 163 times
INFO:cimpy.cimimport:CIM object Disconnector created : 112 times
INFO:cimpy.cimimport:CIM object EnergyConsumer created : 52 times
INFO:cimpy.cimimport:CIM object SvVoltage created : 57 times
INFO:cimpy.cimimport:CIM object Substation created : 57 times
INFO:cimpy.cimimport:CIM object TopologicalNode created : 57 times
INFO:cimpy.cimimport:CIM object SvPowerFlow created : 52 times
INFO:cimpy.cimimport:CIM object VoltageLevel created : 58 times
INFO:cimpy.cimimport:CIM object ACLineSegment created : 54 times
INFO:cimpy.cimimport:CIM object BusbarSection created : 55 times
INFO:cimpy.cimimport:CIM object Line created : 54 times
INFO:cimpy.cimimport:CIM object SubGeographicalRegion created : 3 times
INFO:cimpy.cimimport:CIM object TopologicalIsland created : 3 times
INFO:cimpy.cimimport:CIM object ExternalNetworkInjection created : 3 times
INFO:cimpy.cimimport:CIM object BaseVoltage created : 3 times
INFO:cimpy.cimimport:CIM object GeographicalRegion created : 3 times
INFO:cimpy.cimimport:Created totally 1207 CIM objects in 0.08458471298217773s
INFO:cimpy.cimimport:START of parsing file "/home/ubuntu/pyvolt-docker/examples/sample_data/CIGRE-MV-NoTap-WithBreaker/20191126T1535Z_YYY_EQ_.xml"
INFO:cimpy.cimimport:START of parsing file "/home/ubuntu/pyvolt-docker/examples/sample_data/CIGRE-MV-NoTap-WithBreaker/20191126T1535Z_XX_YYY_SV_.xml"
INFO:cimpy.cimimport:START of parsing file "/home/ubuntu/pyvolt-docker/examples/sample_data/CIGRE-MV-NoTap-WithBreaker/20191126T1535Z_XX_YYY_TP_.xml"
INFO:cimpy.cimimport:END of parsing file "/home/ubuntu/pyvolt-docker/examples/sample_data/CIGRE-MV-NoTap-WithBreaker/20191126T1535Z_YYY_EQ_.xml"
INFO:cimpy.cimimport:END of parsing file "/home/ubuntu/pyvolt-docker/examples/sample_data/CIGRE-MV-NoTap-WithBreaker/20191126T1535Z_XX_YYY_SV_.xml"
INFO:cimpy.cimimport:END of parsing file "/home/ubuntu/pyvolt-docker/examples/sample_data/CIGRE-MV-NoTap-WithBreaker/20191126T1535Z_XX_YYY_TP_.xml"
WARNING:cimpy.cimimport:Module LoadArea not implemented : 1 times
WARNING:cimpy.cimimport:Module SubLoadArea not implemented : 1 times
WARNING:cimpy.cimimport:'Terminal' has not attribute 'ConnectivityNode' : 51 times
WARNING:cimpy.cimimport:'ConnectivityNode' has not attribute 'ConnectivityNodeContainer' : 16 times
WARNING:cimpy.cimimport:'ConnectivityNode' has not attribute 'name' : 16 times
WARNING:cimpy.cimimport:Missing LoadArea object with uuid: _8c7f05c8-84a2-0f6a-eb5c-becc766dfb09 : 1 times
WARNING:cimpy.cimimport:'ConformLoadGroup' has not attribute 'SubLoadArea' : 1 times
WARNING:cimpy.cimimport:Missing SubLoadArea object with uuid: _f09a72ae-1f45-f5ee-4cb2-bf413e191602 : 1 times
INFO:cimpy.cimimport:CIM object ConformLoad created : 18 times
INFO:cimpy.cimimport:CIM object ACLineSegment created : 13 times
INFO:cimpy.cimimport:CIM object CurrentLimit created : 30 times
INFO:cimpy.cimimport:CIM object OperationalLimitSet created : 30 times
INFO:cimpy.cimimport:CIM object GeographicalRegion created : 1 times
INFO:cimpy.cimimport:CIM object SubGeographicalRegion created : 17 times
INFO:cimpy.cimimport:CIM object Substation created : 17 times
INFO:cimpy.cimimport:CIM object PowerTransformer created : 2 times
INFO:cimpy.cimimport:CIM object Terminal created : 51 times
INFO:cimpy.cimimport:CIM object VoltageLevel created : 16 times
INFO:cimpy.cimimport:CIM object ConnectivityNode created : 16 times
INFO:cimpy.cimimport:CIM object PowerTransformerEnd created : 4 times
INFO:cimpy.cimimport:CIM object VoltageLimit created : 16 times
INFO:cimpy.cimimport:CIM object LoadResponseCharacteristic created : 1 times
INFO:cimpy.cimimport:CIM object BaseVoltage created : 2 times
INFO:cimpy.cimimport:CIM object RegulatingControl created : 1 times
INFO:cimpy.cimimport:CIM object Breaker created : 1 times
INFO:cimpy.cimimport:CIM object OperationalLimitType created : 3 times
INFO:cimpy.cimimport:CIM object ExternalNetworkInjection created : 1 times
INFO:cimpy.cimimport:CIM object ConformLoadGroup created : 1 times
INFO:cimpy.cimimport:CIM object SvPowerFlow created : 19 times
INFO:cimpy.cimimport:CIM object SvVoltage created : 16 times
INFO:cimpy.cimimport:CIM object TopologicalIsland created : 1 times
INFO:cimpy.cimimport:CIM object TopologicalNode created : 16 times
INFO:cimpy.cimimport:Created totally 293 CIM objects in 0.027395963668823242s
INFO:cimpy.cimimport:START of parsing file "/home/ubuntu/pyvolt-docker/examples/sample_data/areti/3.xml"
INFO:cimpy.cimimport:START of parsing file "/home/ubuntu/pyvolt-docker/examples/sample_data/areti/2.xml"
INFO:cimpy.cimimport:START of parsing file "/home/ubuntu/pyvolt-docker/examples/sample_data/areti/1.xml"
INFO:cimpy.cimimport:END of parsing file "/home/ubuntu/pyvolt-docker/examples/sample_data/areti/3.xml"
INFO:cimpy.cimimport:END of parsing file "/home/ubuntu/pyvolt-docker/examples/sample_data/areti/2.xml"
INFO:cimpy.cimimport:END of parsing file "/home/ubuntu/pyvolt-docker/examples/sample_data/areti/1.xml"
WARNING:cimpy.cimimport:Package information not found for class type : 1222 times
WARNING:cimpy.cimimport:Package information not found for class Terminal, attribute ConductingEquipment : 436 times
WARNING:cimpy.cimimport:'Terminal' has not attribute 'ConnectivityNode' : 436 times
WARNING:cimpy.cimimport:Package information not found for class Terminal, attribute name : 436 times
WARNING:cimpy.cimimport:Package information not found for class Terminal, attribute connected : 436 times
WARNING:cimpy.cimimport:Package information not found for class Terminal, attribute sequenceNumber : 436 times
WARNING:cimpy.cimimport:Referenced Terminal [PhaseCode.ABC] object missing. : 436 times
WARNING:cimpy.cimimport:'ConnectivityNode' has not attribute 'name' : 163 times
WARNING:cimpy.cimimport:'ConnectivityNode' has not attribute 'ConnectivityNodeContainer' : 163 times
WARNING:cimpy.cimimport:Package information not found for class SvPowerFlow, attribute p : 52 times
WARNING:cimpy.cimimport:Package information not found for class SvPowerFlow, attribute q : 52 times
WARNING:cimpy.cimimport:Package information not found for class SvPowerFlow, attribute Terminal : 52 times
WARNING:cimpy.cimimport:Package information not found for class Terminal, attribute TopologicalNode : 224 times
WARNING:cimpy.cimimport:Package information not found for class ACLineSegment, attribute name : 54 times
WARNING:cimpy.cimimport:Package information not found for class ACLineSegment, attribute x : 54 times
WARNING:cimpy.cimimport:Package information not found for class ACLineSegment, attribute r : 54 times
WARNING:cimpy.cimimport:Package information not found for class ACLineSegment, attribute gch : 54 times
WARNING:cimpy.cimimport:Package information not found for class ACLineSegment, attribute bch : 54 times
WARNING:cimpy.cimimport:Package information not found for class ACLineSegment, attribute length : 54 times
WARNING:cimpy.cimimport:Package information not found for class ACLineSegment, attribute BaseVoltage : 54 times
WARNING:cimpy.cimimport:Package information not found for class ACLineSegment, attribute aggregate : 54 times
WARNING:cimpy.cimimport:Package information not found for class ACLineSegment, attribute EquipmentContainer : 54 times
WARNING:cimpy.cimimport:Package information not found for class Substation, attribute name : 57 times
WARNING:cimpy.cimimport:Package information not found for class Substation, attribute Region : 57 times
WARNING:cimpy.cimimport:Package information not found for class Disconnector, attribute name : 112 times
WARNING:cimpy.cimimport:Package information not found for class Disconnector, attribute BaseVoltage : 112 times
WARNING:cimpy.cimimport:Package information not found for class Disconnector, attribute EquipmentContainer : 112 times
WARNING:cimpy.cimimport:Package information not found for class Disconnector, attribute normalOpen : 112 times
WARNING:cimpy.cimimport:Package information not found for class VoltageLevel, attribute BaseVoltage : 58 times
WARNING:cimpy.cimimport:Package information not found for class VoltageLevel, attribute name : 58 times
WARNING:cimpy.cimimport:Package information not found for class VoltageLevel, attribute Substation : 58 times
WARNING:cimpy.cimimport:Package information not found for class SvVoltage, attribute v : 57 times
WARNING:cimpy.cimimport:Package information not found for class SvVoltage, attribute angle : 57 times
WARNING:cimpy.cimimport:Package information not found for class SvVoltage, attribute TopologicalNode : 57 times
WARNING:cimpy.cimimport:Package information not found for class EnergyConsumer, attribute name : 52 times
WARNING:cimpy.cimimport:Package information not found for class EnergyConsumer, attribute EquipmentContainer : 52 times
WARNING:cimpy.cimimport:Package information not found for class EnergyConsumer, attribute aggregate : 52 times
WARNING:cimpy.cimimport:'EnergyConsumer' has not attribute 'pfixed' : 52 times
WARNING:cimpy.cimimport:'EnergyConsumer' has not attribute 'qfixed' : 52 times
WARNING:cimpy.cimimport:Package information not found for class BusbarSection, attribute name : 55 times
WARNING:cimpy.cimimport:Package information not found for class BusbarSection, attribute EquipmentContainer : 55 times
WARNING:cimpy.cimimport:Package information not found for class BusbarSection, attribute BaseVoltage : 55 times
WARNING:cimpy.cimimport:Package information not found for class Line, attribute name : 54 times
WARNING:cimpy.cimimport:Package information not found for class Line, attribute Region : 54 times
WARNING:cimpy.cimimport:Package information not found for class TopologicalNode, attribute name : 57 times
WARNING:cimpy.cimimport:Package information not found for class TopologicalNode, attribute ConnectivityNodeContainer : 57 times
WARNING:cimpy.cimimport:Package information not found for class TopologicalNode, attribute TopologicalIsland : 57 times
WARNING:cimpy.cimimport:Package information not found for class TopologicalNode, attribute BaseVoltage : 57 times
WARNING:cimpy.cimimport:Package information not found for class TopologicalIsland, attribute name : 3 times
WARNING:cimpy.cimimport:Package information not found for class SubGeographicalRegion, attribute name : 3 times
WARNING:cimpy.cimimport:Package information not found for class SubGeographicalRegion, attribute Region : 3 times
WARNING:cimpy.cimimport:Package information not found for class BaseVoltage, attribute nominalVoltage : 3 times
WARNING:cimpy.cimimport:Package information not found for class BaseVoltage, attribute name : 3 times
WARNING:cimpy.cimimport:Package information not found for class ExternalNetworkInjection, attribute aggregate : 3 times
WARNING:cimpy.cimimport:Package information not found for class ExternalNetworkInjection, attribute name : 3 times
WARNING:cimpy.cimimport:Package information not found for class ExternalNetworkInjection, attribute EquipmentContainer : 3 times
WARNING:cimpy.cimimport:Package information not found for class GeographicalRegion, attribute name : 3 times
INFO:cimpy.cimimport:CIM object Terminal created : 436 times
INFO:cimpy.cimimport:CIM object ConnectivityNode created : 163 times
INFO:cimpy.cimimport:CIM object SvPowerFlow created : 52 times
INFO:cimpy.cimimport:CIM object ACLineSegment created : 54 times
INFO:cimpy.cimimport:CIM object Substation created : 57 times
INFO:cimpy.cimimport:CIM object Disconnector created : 112 times
INFO:cimpy.cimimport:CIM object VoltageLevel created : 58 times
INFO:cimpy.cimimport:CIM object SvVoltage created : 57 times
INFO:cimpy.cimimport:CIM object EnergyConsumer created : 52 times
INFO:cimpy.cimimport:CIM object BusbarSection created : 55 times
INFO:cimpy.cimimport:CIM object Line created : 54 times
INFO:cimpy.cimimport:CIM object TopologicalNode created : 57 times
INFO:cimpy.cimimport:CIM object TopologicalIsland created : 3 times
INFO:cimpy.cimimport:CIM object SubGeographicalRegion created : 3 times
INFO:cimpy.cimimport:CIM object BaseVoltage created : 3 times
INFO:cimpy.cimimport:CIM object ExternalNetworkInjection created : 3 times
INFO:cimpy.cimimport:CIM object GeographicalRegion created : 3 times
INFO:cimpy.cimimport:Created totally 1207 CIM objects in 0.08271288871765137s
examples/sld.png

657 KiB

Subproject commit 1227d9a98992e6c7e368369c0f7177af330f7403
No preview for this file type
......@@ -3,6 +3,8 @@ import numpy as np
from enum import Enum
import os
import hdf5storage
import matplotlib.pyplot as plt
from pypowsybl.network import Network
class BusType(Enum):
......@@ -440,4 +442,82 @@ class System():
)
self.Ymatrix_calc()
\ No newline at end of file
self.Ymatrix_calc()
def generate_sld(self, output_file=None):
"""
Generate and display a Single Line Diagram (SLD) of the network using pypowsybl.
This function:
- Builds a pypowsybl network instance from self.nodes and self.branches.
- Adds buses (ignoring nodes that are "ideally connected") and transmission lines.
- Invokes pypowsybl's SLD generator to produce a matplotlib figure for the SLD.
:param output_file: Optional file path to save the diagram (e.g., 'sld.png').
"""
# Create a new pypowsybl network instance.
# The parameters ("MyNetwork", "1.0", "DC") are placeholders; adjust as required.
try:
from pypowsybl.sld import SldGenerator
except ImportError:
SldGenerator = None
net = Network("MyNetwork", "1.0", "DC")
# Dictionary for mapping node indices to pypowsybl bus objects
bus_map = {}
# Add buses for nodes (skip ideally connected nodes)
for node in self.nodes:
if node.ideal_connected_with:
continue
# Map your node type to a string value compatible with pypowsybl.
if node.type == BusType.SLACK:
bus_type = 'SLACK'
elif node.type == BusType.PV:
bus_type = 'PV'
else:
bus_type = 'PQ'
# Create a bus in the pypowsybl network.
# NOTE: Replace 'create_bus' with the actual pypowsybl bus creation method if different.
# Here, it is assumed that create_bus takes the node index, name, voltage (magnitude) and type.
bus = net.create_bus(node.index, node.name, abs(node.voltage_pu), bus_type)
bus_map[node.index] = bus
# Add branches as transmission lines between the buses
for branch in self.branches:
start_idx = branch.start_node.index
end_idx = branch.end_node.index
# Only add the branch if both buses exist.
if start_idx not in bus_map or end_idx not in bus_map:
continue
# Add a transmission line between buses.
# NOTE: Replace 'add_line' with the corresponding pypowsybl API call as needed.
# It is assumed that the method accepts the two bus objects, the impedance value (absolute),
# and a name for the line.
net.add_line(bus_map[start_idx], bus_map[end_idx], abs(branch.z_pu), "Line")
# Verify that the SLD generation module is available.
if SldGenerator is None:
raise ImportError("pypowsybl SLD module not found. Ensure that you have installed the version of "
"pypowsybl that includes SLD support.")
# Generate the single line diagram.
# The SldGenerator.generate() method is assumed to return a matplotlib figure.
sld_generator = SldGenerator()
fig = sld_generator.generate(net)
# Save or display the SLD.
if output_file:
fig.savefig(output_file, dpi=300, bbox_inches='tight')
print(f"SLD saved to {output_file}")
else:
fig.show()
plt.close(fig)
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment