Bus-Branch Transmission Modeling
Creating a BusBranchModel
Import all required libraries for data profile, connection parameters, database, and BusBranchModel:
[ ]:
import cimgraph.data_profile.rc4_2021 as cim
from cimgraph import ConnectionParameters
from cimgraph.databases.blazegraph import BlazegraphConnection
from cimgraph.models import BusBranchModel
[ ]:
# Blazegraph Connection
params = ConnectionParameters(url = "http://localhost:8889/bigdata/namespace/kb/sparql",
cim_profile='rc4_2021', iec61970_301=8)
blazegraph = BlazegraphConnection(params)
Create CIM EquipmentContainer object:
[ ]:
model_mrid = "1783D2A8-1204-4781-A0B4-7A73A2FA6038" #IEEE 118 Bus
container = cim.ConnectivityNodeContainer(mRID=model_mrid)
[ ]:
network = BusBranchModel(connection=blazegraph, container=container, distributed=False)
[ ]:
network.get_all_edges(cim.ACLineSegment)
network.pprint(cim.ACLineSegment)
[1]:
cim_profile = 'cimhub_2023'
cim = importlib.import_module('cimgraph.data_profile.' + cim_profile)
# RDFLib File Reader Connection
params = ConnectionParameters(filename="../cimgraph/tests/test_models/IEEE118_CIM.xml", cim_profile='cimhub_2023', iec61970_301=8)
rdf = RDFlibConnection(params)
model_mrid = "1783D2A8-1204-4781-A0B4-7A73A2FA6038" #IEEE 118 Bus"
container = cim.ConnectivityNodeContainer(mRID = model_mrid)
network = BusBranchModel(connection=rdf, container=container, distributed=False)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[1], line 2
1 cim_profile = 'cimhub_2023'
----> 2 cim = importlib.import_module('cimgraph.data_profile.' + cim_profile)
4 # RDFLib File Reader Connection
5 params = ConnectionParameters(filename="../cimgraph/tests/test_models/IEEE118_CIM.xml", cim_profile='cimhub_2023', iec61970_301=8)
NameError: name 'importlib' is not defined
[ ]:
load_nodes = []
gen_nodes = []
cap_nodes = []
inv_nodes = []
for node in network.graph[cim.ConnectivityNode].values():
print("\n listing equipment for node", node.name)
for terminal in node.Terminals:
equipment = terminal.ConductingEquipment
# print(equipment.__class__.__name__, equipment.mRID)
type = equipment.__class__.__name__
load_types = ['EnergyConsumer', 'ConformLoad', 'NonConformLoad']
gen_types = ['RotatingMachine', 'SynchronousMachine', 'AsynchronousMachine']
cap_types = ['ShuntCompensator', 'LinearShuntCompensator']
inv_types = ['PowerElectronicsConnection']
if type in load_types:
load_nodes.append(node.mRID)
if type in gen_types:
print('gen node')
if type in
[ ]:
network.get_all_edges(cim.EnergyConsumer)
network.get_all_edges(cim.ConformLoad)
network.get_all_edges(cim.NonConformLoad)
for load in network.graph[cim.EnergyConsumer].values():
print(f"name:{load.name}, bus:{load.Terminals[0].ConnectivityNode.name}, p:{float(load.p)/1e6} MW, q:{float(load.q)/1e6} MVAr")
[ ]:
network.get_all_edges(cim.BaseVoltage)
load_by_voltage = {}
for id in network.graph[cim.BaseVoltage].values():
nomv = id.nominalVoltage
load_by_voltage[id.mRID] = []
for equipment in id.ConductingEquipment:
type = equipment.__class__.__name__
load_types = ['EnergyConsumer', 'ConformLoad', 'NonConformLoad']
if type in load_types:
load_by_voltage[id.mRID].append(equipment)
[ ]:
for id in list(load_by_voltage.keys()):
nomv = network.graph[cim.BaseVoltage][id].nominalVoltage
print(nomv)
for load in load_by_voltage[id]:
print(load.name, load.p, load.q, load.Terminals[0].ConnectivityNode.name)