def pole_to_cim(pb: PBPole, network_service: NetworkService) -> Optional[Pole]: cim = Pole(mrid=pb.mrid(), classification=pb.classification) for mrid in pb.streetlightMRIDs: network_service.resolve_or_defer_reference(resolver.streetlights(cim), mrid) structure_to_cim(pb.st, cim, network_service) return cim if network_service.add(cim) else None
def control_to_cim(pb: PBControl, network_service: NetworkService) -> Optional[Control]: cim = Control(mrid=pb.mrid()) network_service.resolve_or_defer_reference(resolver.remote_control(cim), pb.remoteControlMRID) iopoint_to_cim(pb.ip, cim, network_service) return cim if network_service.add(cim) else None
def equipmentcontainer_to_cim(pb: PBEquipmentContainer, cim: EquipmentContainer, network_service: NetworkService): for mrid in pb.equipmentMRIDs: network_service.resolve_or_defer_reference(resolver.ec_equipment(cim), mrid) connectivitynodecontainer_to_cim(pb.cnc, cim, network_service)
def asset_to_cim(pb: PBAsset, cim: Asset, network_service: NetworkService): network_service.resolve_or_defer_reference(resolver.at_location(cim), pb.locationMRID) for mrid in pb.organisationRoleMRIDs: network_service.resolve_or_defer_reference( resolver.organisation_roles(cim), mrid) identifiedobject_to_cim(pb.io, cim, network_service)
def remotesource_to_cim( pb: PBRemoteSource, network_service: NetworkService) -> Optional[RemoteSource]: cim = RemoteSource(mrid=pb.mrid()) network_service.resolve_or_defer_reference(resolver.measurement(cim), pb.measurementMRID) remotepoint_to_cim(pb.rp, cim, network_service) return cim if network_service.add(cim) else None
def energysourcephase_to_cim( pb: PBEnergySourcePhase, network_service: NetworkService) -> Optional[EnergySourcePhase]: cim = EnergySourcePhase(mrid=pb.mrid(), phase=phasekind_by_id(pb.phase)) network_service.resolve_or_defer_reference(resolver.energy_source(cim), pb.energySourceMRID) powersystemresource_to_cim(pb.psr, cim, network_service) return cim if network_service.add(cim) else None
def measurement_to_cim(pb: PBMeasurement, cim: Measurement, service: NetworkService): cim.power_system_resource_mrid = pb.powerSystemResourceMRID cim.terminal_mrid = pb.terminalMRID cim.phases = phasecode_by_id(pb.phases) cim.unitSymbol = unit_symbol_from_id(pb.unitSymbol) service.resolve_or_defer_reference(resolver.remote_source(cim), pb.remoteSourceMRID) identifiedobject_to_cim(pb.io, cim, service)
def geographicalregion_to_cim( pb: PBGeographicalRegion, network_service: NetworkService) -> Optional[GeographicalRegion]: cim = GeographicalRegion(mrid=pb.mrid()) for mrid in pb.subGeographicalRegionMRIDs: network_service.resolve_or_defer_reference( resolver.sub_geographical_regions(cim), mrid) identifiedobject_to_cim(pb.io, cim, network_service) return cim if network_service.add(cim) else None
def aclinesegment_to_cim( pb: PBAcLineSegment, network_service: NetworkService) -> Optional[AcLineSegment]: cim = AcLineSegment(mrid=pb.mrid()) network_service.resolve_or_defer_reference( resolver.per_length_sequence_impedance(cim), pb.perLengthSequenceImpedanceMRID) conductor_to_cim(pb.cd, cim, network_service) return cim if network_service.add(cim) else None
def connectivitynode_to_cim( pb: PBConnectivityNode, network_service: NetworkService) -> Optional[ConnectivityNode]: cim = ConnectivityNode(mrid=pb.mrid()) for mrid in pb.terminalMRIDs: network_service.resolve_or_defer_reference(resolver.cn_terminals(cim), mrid) identifiedobject_to_cim(pb.io, cim, network_service) return cim if network_service.add(cim) else None
def conductingequipment_to_cim(pb: PBConductingEquipment, cim: ConductingEquipment, network_service: NetworkService): network_service.resolve_or_defer_reference(resolver.ce_base_voltage(cim), pb.baseVoltageMRID) for mrid in pb.terminalMRIDs: network_service.resolve_or_defer_reference(resolver.ce_terminals(cim), mrid) equipment_to_cim(pb.eq, cim, network_service)
def operationalrestriction_to_cim( pb: PBOperationalRestriction, network_service: NetworkService) -> Optional[OperationalRestriction]: cim = OperationalRestriction(mrid=pb.mrid()) for mrid in pb.equipmentMRIDs: network_service.resolve_or_defer_reference(resolver.or_equipment(cim), mrid) document_to_cim(pb.doc, cim, network_service) return cim if network_service.add(cim) else None
def enddevice_to_cim(pb: PBEndDevice, cim: EndDevice, network_service: NetworkService): for mrid in pb.usagePointMRIDs: network_service.resolve_or_defer_reference( resolver.ed_usage_points(cim), mrid) cim.customer_mrid = pb.customerMRID if pb.customerMRID else None network_service.resolve_or_defer_reference(resolver.service_location(cim), pb.serviceLocationMRID) assetcontainer_to_cim(pb.ac, cim, network_service)
def streetlight_to_cim( pb: PBStreetlight, network_service: NetworkService) -> Optional[Streetlight]: cim = Streetlight(mrid=pb.mrid(), light_rating=pb.lightRating, lamp_kind=StreetlightLampKind(pb.lampKind)) network_service.resolve_or_defer_reference(resolver.pole(cim), pb.poleMRID) asset_to_cim(pb.at, cim, network_service) return cim if network_service.add(cim) else None
def circuit_to_cim(pb: PBCircuit, network_service: NetworkService) -> Optional[Circuit]: cim = Circuit(mrid=pb.mrid()) for mrid in pb.endTerminalMRIDs: network_service.resolve_or_defer_reference(resolver.end_terminal(cim), mrid) for mrid in pb.endSubstationMRIDs: network_service.resolve_or_defer_reference( resolver.end_substation(cim), mrid) line_to_cim(pb.l, cim, network_service) return cim if network_service.add(cim) else None
def powertransformer_to_cim( pb: PBPowerTransformer, network_service: NetworkService) -> Optional[PowerTransformer]: cim = PowerTransformer(mrid=pb.mrid(), vector_group=VectorGroup(pb.vectorGroup), transformer_utilisation=pb.transformerUtilisation) for mrid in pb.powerTransformerEndMRIDs: network_service.resolve_or_defer_reference(resolver.ends(cim), mrid) network_service.resolve_or_defer_reference( resolver.power_transformer_info(cim), pb.asset_info_mrid()) conductingequipment_to_cim(pb.ce, cim, network_service) return cim if network_service.add(cim) else None
def terminal_to_cim(pb: PBTerminal, network_service: NetworkService) -> Optional[Terminal]: cim = Terminal(mrid=pb.mrid(), phases=phasecode_by_id(pb.phases), sequence_number=pb.sequenceNumber) network_service.resolve_or_defer_reference( resolver.conducting_equipment(cim), pb.conductingEquipmentMRID) cim.traced_phases._normal_status = pb.tracedPhases.normalStatus cim.traced_phases._current_status = pb.tracedPhases.currentStatus network_service.resolve_or_defer_reference(resolver.connectivity_node(cim), pb.connectivityNodeMRID) acdcterminal_to_cim(pb.ad, cim, network_service) return cim if network_service.add(cim) else None
def energyconsumerphase_to_cim( pb: PBEnergyConsumerPhase, network_service: NetworkService) -> Optional[EnergyConsumerPhase]: cim = EnergyConsumerPhase(mrid=pb.mrid(), phase=phasekind_by_id(pb.phase), p=pb.p, p_fixed=pb.pFixed, q=pb.q, q_fixed=pb.qFixed) network_service.resolve_or_defer_reference(resolver.energy_consumer(cim), pb.energyConsumerMRID) powersystemresource_to_cim(pb.psr, cim, network_service) return cim if network_service.add(cim) else None
def energyconsumer_to_cim( pb: PBEnergyConsumer, network_service: NetworkService) -> Optional[EnergyConsumer]: cim = EnergyConsumer(mrid=pb.mrid(), customer_count=pb.customerCount, grounded=pb.grounded, p=pb.p, p_fixed=pb.pFixed, q=pb.q, q_fixed=pb.qFixed, phase_connection=PhaseShuntConnectionKind( pb.phaseConnection)) for mrid in pb.energyConsumerPhasesMRIDs: network_service.resolve_or_defer_reference(resolver.ec_phases(cim), mrid) energyconnection_to_cim(pb.ec, cim, network_service) return cim if network_service.add(cim) else None
def substation_to_cim(pb: PBSubstation, network_service: NetworkService) -> Optional[Substation]: cim = Substation(mrid=pb.mrid()) network_service.resolve_or_defer_reference( resolver.sub_geographical_region(cim), pb.subGeographicalRegionMRID) for mrid in pb.normalEnergizedFeederMRIDs: network_service.resolve_or_defer_reference( resolver.normal_energizing_feeders(cim), mrid) for mrid in pb.loopMRIDs: network_service.resolve_or_defer_reference(resolver.loops(cim), mrid) for mrid in pb.normalEnergizedLoopMRIDs: network_service.resolve_or_defer_reference( resolver.normal_energized_loops(cim), mrid) for mrid in pb.circuitMRIDs: network_service.resolve_or_defer_reference(resolver.circuits(cim), mrid) equipmentcontainer_to_cim(pb.ec, cim, network_service) return cim if network_service.add(cim) else None
def powertransformerend_to_cim( pb: PBPowerTransformerEnd, network_service: NetworkService) -> Optional[PowerTransformerEnd]: cim = PowerTransformerEnd(mrid=pb.mrid(), rated_s=pb.ratedS, rated_u=pb.ratedU, r=pb.r, r0=pb.r0, x=pb.x, x0=pb.x0, b=pb.b, b0=pb.b0, g=pb.g, g0=pb.g0, connection_kind=WindingConnection( pb.connectionKind), phase_angle_clock=pb.phaseAngleClock) network_service.resolve_or_defer_reference(resolver.power_transformer(cim), pb.powerTransformerMRID) transformerend_to_cim(pb.te, cim, network_service) return cim if network_service.add(cim) else None
def energysource_to_cim( pb: PBEnergySource, network_service: NetworkService) -> Optional[EnergySource]: cim = EnergySource(mrid=pb.mrid(), active_power=pb.activePower, reactive_power=pb.reactivePower, voltage_angle=pb.voltageAngle, voltage_magnitude=pb.voltageMagnitude, r=pb.r, x=pb.x, p_max=pb.pMax, p_min=pb.pMin, r0=pb.r0, rn=pb.rn, x0=pb.x0, xn=pb.xn) for mrid in pb.energySourcePhasesMRIDs: network_service.resolve_or_defer_reference(resolver.es_phases(cim), mrid) energyconnection_to_cim(pb.ec, cim, network_service) return cim if network_service.add(cim) else None
def equipment_to_cim(pb: PBEquipment, cim: Equipment, network_service: NetworkService): cim.in_service = pb.inService cim.normally_in_service = pb.normallyInService for mrid in pb.equipmentContainerMRIDs: network_service.resolve_or_defer_reference(resolver.containers(cim), mrid) for mrid in pb.usagePointMRIDs: network_service.resolve_or_defer_reference( resolver.eq_usage_points(cim), mrid) for mrid in pb.operationalRestrictionMRIDs: network_service.resolve_or_defer_reference( resolver.operational_restrictions(cim), mrid) for mrid in pb.currentFeederMRIDs: network_service.resolve_or_defer_reference( resolver.current_feeders(cim), mrid) powersystemresource_to_cim(pb.psr, cim, network_service)
def loop_to_cim(pb: PBLoop, network_service: NetworkService) -> Optional[Loop]: cim = Loop(mrid=pb.mrid()) for mrid in pb.circuitMRIDs: network_service.resolve_or_defer_reference(resolver.loop_circuits(cim), mrid) for mrid in pb.substationMRIDs: network_service.resolve_or_defer_reference( resolver.loop_substations(cim), mrid) for mrid in pb.normalEnergizingSubstationMRIDs: network_service.resolve_or_defer_reference( resolver.loop_energizing_substations(cim), mrid) identifiedobject_to_cim(pb.io, cim, network_service) return cim if network_service.add(cim) else None
def usagepoint_to_cim(pb: PBUsagePoint, network_service: NetworkService) -> Optional[UsagePoint]: cim = UsagePoint(mrid=pb.mrid()) network_service.resolve_or_defer_reference( resolver.usage_point_location(cim), pb.usagePointLocationMRID) for mrid in pb.equipmentMRIDs: network_service.resolve_or_defer_reference(resolver.up_equipment(cim), mrid) for mrid in pb.endDeviceMRIDs: network_service.resolve_or_defer_reference(resolver.end_devices(cim), mrid) identifiedobject_to_cim(pb.io, cim, network_service) return cim if network_service.add(cim) else None
def transformerend_to_cim(pb: PBTransformerEnd, cim: TransformerEnd, network_service: NetworkService): network_service.resolve_or_defer_reference(resolver.te_terminal(cim), pb.terminalMRID) network_service.resolve_or_defer_reference(resolver.te_base_voltage(cim), pb.baseVoltageMRID) network_service.resolve_or_defer_reference(resolver.ratio_tap_changer(cim), pb.ratioTapChangerMRID) cim.end_number = pb.endNumber cim.grounded = pb.grounded cim.r_ground = pb.rGround cim.x_ground = pb.xGround identifiedobject_to_cim(pb.io, cim, network_service)
def feeder_to_cim(pb: PBFeeder, network_service: NetworkService) -> Optional[Feeder]: cim = Feeder(mrid=pb.mrid()) network_service.resolve_or_defer_reference( resolver.normal_head_terminal(cim), pb.normalHeadTerminalMRID) network_service.resolve_or_defer_reference( resolver.normal_energizing_substation(cim), pb.normalEnergizingSubstationMRID) for mrid in pb.currentEquipmentMRIDs: network_service.resolve_or_defer_reference( resolver.current_equipment(cim), mrid) equipmentcontainer_to_cim(pb.ec, cim, network_service) return cim if network_service.add(cim) else None
def auxiliaryequipment_to_cim(pb: PBAuxiliaryEquipment, cim: AuxiliaryEquipment, network_service: NetworkService): network_service.resolve_or_defer_reference(resolver.ae_terminal(cim), pb.terminalMRID) equipment_to_cim(pb.eq, cim, network_service)
def conductor_to_cim(pb: PBConductor, cim: Conductor, network_service: NetworkService): cim.length = pb.length network_service.resolve_or_defer_reference(resolver.asset_info(cim), pb.asset_info_mrid()) conductingequipment_to_cim(pb.ce, cim, network_service)
def powersystemresource_to_cim(pb: PBPowerSystemResource, cim: PowerSystemResource, network_service: NetworkService): network_service.resolve_or_defer_reference(resolver.psr_location(cim), pb.locationMRID) identifiedobject_to_cim(pb.io, cim, network_service)