예제 #1
0
def _create_trafo3w_buses(net, init_results):
    from pandapower.create import create_buses
    hv_buses = net.bus.loc[net.trafo3w.hv_bus.values]
    bid = create_buses(net, nr_buses=len(net["trafo3w"]),
                       vn_kv=hv_buses.vn_kv.values,
                       in_service=net.trafo3w.in_service.values)
    net.trafo3w["ad_bus"] = bid
    if init_results:
        # TODO: this is probably slow, but the whole auxiliary bus creation should be included in
        #      pd2ppc anyways. LT
        for hv_bus, aux_bus in zip(hv_buses.index, bid):
            net.res_bus.loc[aux_bus] = net.res_bus.loc[hv_bus].values
예제 #2
0
def _create_xward_buses(net, init_results):
    from pandapower.create import create_buses
    main_buses = net.bus.loc[net.xward.bus.values]
    bid = create_buses(net, nr_buses=len(main_buses),
                       vn_kv=main_buses.vn_kv.values,
                       in_service=net["xward"]["in_service"].values)
    net.xward["ad_bus"] = bid
    if init_results:
        # TODO: this is probably slow, but the whole auxiliary bus creation should be included in
        #      pd2ppc anyways. LT
        for hv_bus, aux_bus in zip(main_buses.index, bid):
            net.res_bus.loc[aux_bus] = net.res_bus.loc[hv_bus].values
예제 #3
0
def _create_trafo3w_buses(net):
    from pandapower.create import create_buses
    init_results = net["_options"]["init_results"]

    hv_buses = net.bus.loc[net.trafo3w.hv_bus.values]
    bid = create_buses(net, nr_buses=len(net["trafo3w"]),
                       vn_kv=hv_buses.vn_kv.values,
                       in_service=net.trafo3w.in_service.values)
    net.trafo3w["ad_bus"] = bid
    if init_results:
        # TODO: this is probably slow, but the whole auxiliary bus creation should be included in
        #      pd2ppc anyways. LT
        net.res_bus=net.res_bus.append(pd.DataFrame(index=bid,data=net.res_bus.loc[hv_buses.index].values,columns=net.res_bus.columns))
예제 #4
0
def _create_xward_buses(net):
    from pandapower.create import create_buses
    init_results = net["_options"]["init_results"]

    main_buses = net.bus.loc[net.xward.bus.values]
    bid = create_buses(net,
                       nr_buses=len(main_buses),
                       vn_kv=main_buses.vn_kv.values,
                       in_service=net["xward"]["in_service"].values)
    net.xward["ad_bus"] = bid
    if init_results and len(net.res_bus) > 0:
        # TODO: this is probably slow, but the whole auxiliary bus creation should be included in
        #      pd2ppc anyways. LT
        net.res_bus = net.res_bus.append(
            pd.DataFrame(index=bid,
                         data=net.res_bus.loc[main_buses.index].values,
                         columns=net.res_bus.columns))
예제 #5
0
def _add_aux_elements_for_bb_switch(net, bus_to_be_fused):
    """
    Add auxiliary elements (bus, bb switch, line) to the pandapower net to avoid
    automatic fuse of buses connected with bb switch with elements on it
    :param net: pandapower net
    :return: None
    """
    def get_bus_branch_mapping(net, bus_to_be_fused):
        bus_with_elements = set(net.load.bus).union(set(net.sgen.bus)).union(
            set(net.shunt.bus)).union(set(net.gen.bus)).union(
                set(net.ext_grid.bus)).union(set(net.ward.bus)).union(
                    set(net.xward.bus))
        #        bus_with_pq_measurement = set(net.measurement[(net.measurement.measurement_type=='p')&(net.measurement.element_type=='bus')].element.values)
        #        bus_with_elements = bus_with_elements.union(bus_with_pq_measurement)

        bus_ppci = pd.DataFrame(data=net._pd2ppc_lookups['bus'],
                                columns=["bus_ppci"])
        bus_ppci['bus_with_elements'] = bus_ppci.index.isin(bus_with_elements)
        existed_bus = bus_ppci[bus_ppci.index.isin(net.bus.index)]
        bus_ppci['vn_kv'] = net.bus.loc[existed_bus.index, 'vn_kv']
        ppci_bus_with_elements = bus_ppci.groupby(
            'bus_ppci')['bus_with_elements'].sum()
        bus_ppci.loc[:, 'elements_in_cluster'] = ppci_bus_with_elements[
            bus_ppci['bus_ppci'].values].values
        bus_ppci['bus_to_be_fused'] = False
        if bus_to_be_fused is not None:
            bus_ppci.loc[bus_to_be_fused, 'bus_to_be_fused'] = True
            bus_cluster_to_be_fused_mask = bus_ppci.groupby(
                'bus_ppci')['bus_to_be_fused'].any()
            bus_ppci.loc[bus_cluster_to_be_fused_mask[bus_ppci['bus_ppci'].
                                                      values].values,
                         'bus_to_be_fused'] = True
        return bus_ppci

    # find the buses which was fused together in the pp2ppc conversion with elements on them
    # the first one will be skipped
    rundcpp(net)
    bus_ppci_mapping = get_bus_branch_mapping(net, bus_to_be_fused)
    bus_to_be_handled = bus_ppci_mapping[(bus_ppci_mapping ['elements_in_cluster']>=2)&\
                                          bus_ppci_mapping ['bus_with_elements']&\
                                          (~bus_ppci_mapping ['bus_to_be_fused'])]
    bus_to_be_handled = bus_to_be_handled[
        bus_to_be_handled['bus_ppci'].duplicated(keep='first')]

    # create auxiliary buses for the buses need to be handled
    aux_bus_index = create_buses(net,
                                 bus_to_be_handled.shape[0],
                                 bus_to_be_handled.vn_kv.values,
                                 name=AUX_BUS_NAME)
    bus_aux_mapping = pd.Series(aux_bus_index,
                                index=bus_to_be_handled.index.values)

    # create auxiliary switched and disable original switches connected to the related buses
    net.switch.loc[:, 'original_closed'] = net.switch.loc[:, 'closed']
    switch_to_be_replaced_sel = (
        (net.switch.et == 'b') &
        (net.switch.element.isin(bus_to_be_handled.index)
         | net.switch.bus.isin(bus_to_be_handled.index)))
    net.switch.loc[switch_to_be_replaced_sel, 'closed'] = False

    # create aux switches with selecting the existed switches
    aux_switch = net.switch.loc[
        switch_to_be_replaced_sel,
        ['bus', 'closed', 'element', 'et', 'name', 'original_closed', 'z_ohm']]
    aux_switch.loc[:, 'name'] = AUX_SWITCH_NAME

    # replace the original bus with the correspondent auxiliary bus
    bus_to_be_replaced = aux_switch.loc[
        aux_switch.bus.isin(bus_to_be_handled.index), 'bus']
    element_to_be_replaced = aux_switch.loc[
        aux_switch.element.isin(bus_to_be_handled.index), 'element']
    aux_switch.loc[bus_to_be_replaced.index, 'bus'] =\
        bus_aux_mapping[bus_to_be_replaced].values.astype(int)
    aux_switch.loc[element_to_be_replaced.index, 'element'] =\
        bus_aux_mapping[element_to_be_replaced].values.astype(int)
    aux_switch['closed'] = aux_switch['original_closed']

    net.switch = net.switch.append(aux_switch, ignore_index=True)
    # PY34 compatibility
    #    net.switch = net.switch.append(aux_switch, ignore_index=True, sort=False)

    # create auxiliary lines as small impedance
    for bus_ori, bus_aux in bus_aux_mapping.iteritems():
        create_line_from_parameters(net,
                                    bus_ori,
                                    bus_aux,
                                    length_km=1,
                                    name=AUX_LINE_NAME,
                                    r_ohm_per_km=0.15,
                                    x_ohm_per_km=0.2,
                                    c_nf_per_km=0,
                                    max_i_ka=1)