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)