def panda_four_load_branch():
    """
    This function creates a simple six bus system with four radial low voltage nodes connected to \
    a medium voltage slack bus. At every low voltage node the same load is connected.

    OUTPUT:
         **net** - Returns the required four load system

    EXAMPLE:
         import pandapower.networks as pn

         net_four_load = pn.panda_four_load_branch()
    """
    net = pp.create_empty_network()

    busnr1 = pp.create_bus(net, name="bus1", vn_kv=10., geodata=[0, 0])
    busnr2 = pp.create_bus(net, name="bus2", vn_kv=.4, geodata=[0, -1])
    busnr3 = pp.create_bus(net, name="bus3", vn_kv=.4, geodata=[0, -2])
    busnr4 = pp.create_bus(net, name="bus4", vn_kv=.4, geodata=[0, -3])
    busnr5 = pp.create_bus(net, name="bus5", vn_kv=.4, geodata=[0, -4])
    busnr6 = pp.create_bus(net, name="bus6", vn_kv=.4, geodata=[0, -5])

    pp.create_ext_grid(net, busnr1)

    pp.create_transformer(net, busnr1, busnr2, std_type="0.25 MVA 10/0.4 kV")

    pp.create_line(net,
                   busnr2,
                   busnr3,
                   name="line1",
                   length_km=0.05,
                   std_type="NAYY 4x120 SE")
    pp.create_line(net,
                   busnr3,
                   busnr4,
                   name="line2",
                   length_km=0.05,
                   std_type="NAYY 4x120 SE")
    pp.create_line(net,
                   busnr4,
                   busnr5,
                   name="line3",
                   length_km=0.05,
                   std_type="NAYY 4x120 SE")
    pp.create_line(net,
                   busnr5,
                   busnr6,
                   name="line4",
                   length_km=0.05,
                   std_type="NAYY 4x120 SE")

    pp.create_load(net, busnr3, 0.030, 0.010)
    pp.create_load(net, busnr4, 0.030, 0.010)
    pp.create_load(net, busnr5, 0.030, 0.010)
    pp.create_load(net, busnr6, 0.030, 0.010)
    return net
예제 #2
0
def test_drop_inactive_elements():
    for service in (False, True):
        net = pp.create_empty_network()
        bus_sl = pp.create_bus(net, vn_kv=.4, in_service=service)
        pp.create_ext_grid(net, bus_sl, in_service=service)
        bus0 = pp.create_bus(net, vn_kv=.4, in_service=service)
        pp.create_switch(net, bus_sl, bus0, 'b', not service)
        bus1 = pp.create_bus(net, vn_kv=.4, in_service=service)
        pp.create_transformer(net, bus0, bus1, in_service=service,
                              std_type='63 MVA 110/20 kV')
        bus2 = pp.create_bus(net, vn_kv=.4, in_service=service)
        pp.create_line(net, bus1, bus2, length_km=1, in_service=service,
                       std_type='149-AL1/24-ST1A 10.0')
        pp.create_load(net, bus2, p_mw=0., in_service=service)
        pp.create_sgen(net, bus2, p_mw=0., in_service=service)
        bus3 = pp.create_bus(net, vn_kv=.4, in_service=service)
        bus4 = pp.create_bus(net, vn_kv=.4, in_service=service)
        pp.create_transformer3w_from_parameters(net, bus2, bus3, bus4, 0.4, 0.4, 0.4, 100, 50, 50,
                                                3, 3, 3, 1, 1, 1, 5, 1)
        # drop them
        tb.drop_inactive_elements(net)

        sum_of_elements = 0
        for element, table in net.items():
            # skip this one since we expect items here
            if element.startswith("_") or not isinstance(table, pd.DataFrame):
                continue
            try:
                if service and (element == 'ext_grid' or (element == 'bus' and len(net.bus) == 1)):
                    # if service==True, the 1 ext_grid and its bus are not dropped
                    continue
                if len(table) > 0:
                    sum_of_elements += len(table)
                    print(element)
            except TypeError:
                # _ppc is initialized with None and clashes when checking
                continue

        assert sum_of_elements == 0
        if service:
            assert len(net.ext_grid) == 1
            assert len(net.bus) == 1
            assert bus_sl in net.bus.index.values

    net = pp.create_empty_network()

    bus0 = pp.create_bus(net, vn_kv=.4, in_service=True)
    pp.create_ext_grid(net, bus0, in_service=True)
    bus1 = pp.create_bus(net, vn_kv=.4, in_service=False)
    pp.create_line(net, bus0, bus1, length_km=1, in_service=False,
                   std_type='149-AL1/24-ST1A 10.0')
    gen0 = pp.create_gen(net, bus=bus1, p_mw=0.001)

    tb.drop_inactive_elements(net)

    assert gen0 not in net.gen.index
예제 #3
0
def test_zero_injection_aux_bus():
    net = pp.create_empty_network()
    bus1 = pp.create_bus(net, name="bus1", vn_kv=10.)
    bus2 = pp.create_bus(net, name="bus2", vn_kv=10.)
    bus3 = pp.create_bus(net, name="bus3", vn_kv=10.)
    bus4 = pp.create_bus(net, name="bus4", vn_kv=110.)
    
    pp.create_line_from_parameters(net, bus1, bus2, 10, r_ohm_per_km=.59, x_ohm_per_km=.35, c_nf_per_km=10.1,
                                   max_i_ka=1)
    pp.create_line_from_parameters(net, bus2, bus3, 10, r_ohm_per_km=.59, x_ohm_per_km=.35, c_nf_per_km=10.1,
                                   max_i_ka=1)
    pp.create_transformer(net, bus4, bus1, std_type="40 MVA 110/10 kV")
    pp.create_ext_grid(net, bus=bus4, vm_pu=1.0)
    pp.create_load(net, bus1, p_mw=.350, q_mvar=.100)
    pp.create_load(net, bus2, p_mw=.450, q_mvar=.100)
    pp.create_load(net, bus3, p_mw=.250, q_mvar=.100)
    
    net.bus.at[bus3, 'in_service'] = False

    # Created bb switch
    pp.runpp(net, calculate_voltage_angles=True)

    pp.create_measurement(net, "v", "bus", r2(net.res_bus.vm_pu.iloc[bus1], .002), .002, element=bus1)
    pp.create_measurement(net, "v", "bus", r2(net.res_bus.vm_pu.iloc[bus4], .002), .002, element=bus4)

    pp.create_measurement(net, "p", "bus", -r2(net.res_bus.p_mw.iloc[bus4], .002), .002, element=bus4)
    pp.create_measurement(net, "q", "bus", -r2(net.res_bus.q_mvar.iloc[bus4], .002), .002, element=bus4)

    # If measurement on the bus with bb-switch activated, it will incluence the results of the merged bus
    pp.create_measurement(net, "p", "bus", -r2(net.res_bus.p_mw.iloc[bus2], .001), .001, element=bus2)
    pp.create_measurement(net, "q", "bus", -r2(net.res_bus.q_mvar.iloc[bus2], .001), .001, element=bus2)
    pp.create_measurement(net, "p", "bus", -r2(net.res_bus.p_mw.iloc[bus1], .001), .001, element=bus1)
    pp.create_measurement(net, "q", "bus", -r2(net.res_bus.q_mvar.iloc[bus1], .001), .001, element=bus1)

    pp.create_measurement(net, "p", "line", r2(net.res_line.p_from_mw.iloc[0], .002), .002, 0, side='from')
    pp.create_measurement(net, "q", "line", r2(net.res_line.q_from_mvar.iloc[0], .002), .002, 0, side='from')

    pp.create_measurement(net, "p", "trafo", r2(net.res_trafo.p_hv_mw.iloc[0], .001), .01,
                          side="hv", element=0)  
    pp.create_measurement(net, "q", "trafo", r2(net.res_trafo.q_hv_mvar.iloc[0], .001), .01,
                          side="hv", element=0) 
    
    net_auto = deepcopy(net)
    net_aux = deepcopy(net)
    
    success_none = estimate(net, tolerance=1e-5, zero_injection=None)
    
    # In this case zero_injection in mode "aux_bus" and "auto" should be exact the same
    success_aux = estimate(net_aux, tolerance=1e-5, zero_injection='aux_bus')
    success_auto = estimate(net_auto, tolerance=1e-5, zero_injection='auto')
    assert success_none and success_aux and success_auto
    assert np.allclose(net_auto.res_bus_est.va_degree.values,net_aux.res_bus_est.va_degree.values, 1e-4, equal_nan=True)
    assert np.allclose(net_auto.res_bus_est.vm_pu.values,net_aux.res_bus_est.vm_pu.values, 1e-4, equal_nan=True)
    
    # in case zero injection was set to none, the results should be different
    assert ~np.allclose(net.res_bus_est.vm_pu.values,net_aux.res_bus_est.vm_pu.values, 1e-2, equal_nan=True)
예제 #4
0
def test_convert_parallel_branches():
    # create test grid
    net = pp.create_empty_network()
    pp.create_bus(net, 110)
    pp.create_buses(net, 4, 20)
    pp.create_ext_grid(net, 0)
    pp.create_load(net, 4, 1e3, 4e2)
    pp.create_transformer(net, 0, 1, "40 MVA 110/20 kV", name="sd", parallel=3)
    pp.create_switch(net, 1, 0, "t", name="dfjk")
    pp.create_line(net,
                   1,
                   2,
                   1.11,
                   "94-AL1/15-ST1A 20.0",
                   name="sdh",
                   parallel=2)
    pp.create_switch(net, 2, 0, "l", name="dfsdf")
    pp.create_line(net,
                   2,
                   3,
                   1.11,
                   "94-AL1/15-ST1A 20.0",
                   name="swed",
                   parallel=1)
    pp.create_line(net,
                   3,
                   4,
                   1.11,
                   "94-AL1/15-ST1A 20.0",
                   name="sdhj",
                   parallel=3)
    pp.create_switch(net, 3, 2, "l", name="dfdfg")
    pp.create_switch(net, 4, 2, "l", False, name="dfhgj")
    # check test grid
    assert net.trafo.shape[0] == 1
    assert net.line.shape[0] == 3
    assert net.switch.shape[0] == 4

    convert_parallel_branches(net)
    # test parallelisation
    assert net.trafo.shape[0] == 3
    assert net.line.shape[0] == 6
    assert net.switch.shape[0] == 11

    net1 = deepcopy(net)
    net1.switch.closed.loc[4] = False
    convert_parallel_branches(net, multiple_entries=False)
    convert_parallel_branches(net1, multiple_entries=False)
    # test sum up of parallels
    assert net.trafo.shape[0] == 1
    assert net.line.shape[0] == 3
    assert net.switch.shape[0] == 4
    assert net1.trafo.shape[0] == 1
    assert net1.line.shape[0] == 4
    assert net1.switch.shape[0] == 5
def four_loads_with_branches_out():
    """
    This function creates a simple ten bus system with four radial low voltage nodes connected to \
    a medium valtage slack bus. At every of the four radial low voltage nodes another low voltage \
    node with a load is connected via cable.

    RETURN:

         **net** - Returns the required four load system with branches

    EXAMPLE:

         import pandapower.networks as pn

         net_four_load_with_branches = pn.four_loads_with_branches_out()
    """
    pd_net = pp.create_empty_network()

    busnr1 = pp.create_bus(pd_net, name="bus1ref", vn_kv=10.)
    pp.create_ext_grid(pd_net, busnr1)
    busnr2 = pp.create_bus(pd_net, name="bus2", vn_kv=.4)
    pp.create_transformer(pd_net, busnr1, busnr2, std_type="0.25 MVA 10/0.4 kV")
    busnr3 = pp.create_bus(pd_net, name="bus3", vn_kv=.4)
    pp.create_line(pd_net, busnr2, busnr3, name="line1", length_km=0.05,
                   std_type="NAYY 4x120 SE")
    busnr4 = pp.create_bus(pd_net, name="bus4", vn_kv=.4)
    pp.create_line(pd_net, busnr3, busnr4, name="line2", length_km=0.05,
                   std_type="NAYY 4x120 SE")
    busnr5 = pp.create_bus(pd_net, name="bus5", vn_kv=.4)
    pp.create_line(pd_net, busnr4, busnr5, name="line3", length_km=0.05,
                   std_type="NAYY 4x120 SE")
    busnr6 = pp.create_bus(pd_net, name="bus6", vn_kv=.4)
    pp.create_line(pd_net, busnr5, busnr6, name="line4", length_km=0.05,
                   std_type="NAYY 4x120 SE")
    busnr7 = pp.create_bus(pd_net, name="bus7", vn_kv=.4)
    pp.create_line(pd_net, busnr3, busnr7, name="line5", length_km=0.05,
                   std_type="NAYY 4x120 SE")
    busnr8 = pp.create_bus(pd_net, name="bus8", vn_kv=.4)
    pp.create_line(pd_net, busnr4, busnr8, name="line6", length_km=0.05,
                   std_type="NAYY 4x120 SE")
    busnr9 = pp.create_bus(pd_net, name="bus9", vn_kv=.4)
    pp.create_line(pd_net, busnr5, busnr9, name="line7", length_km=0.05,
                   std_type="NAYY 4x120 SE")
    busnr10 = pp.create_bus(pd_net, name="bus10", vn_kv=.4)
    pp.create_line(pd_net, busnr6, busnr10, name="line8", length_km=0.05,
                   std_type="NAYY 4x120 SE")

    pp.create_load(pd_net, busnr7, p_kw=30, q_kvar=10)
    pp.create_load(pd_net, busnr8, p_kw=30, q_kvar=10)
    pp.create_load(pd_net, busnr9, p_kw=30, q_kvar=10)
    pp.create_load(pd_net, busnr10, p_kw=30, q_kvar=10)

    return pd_net
예제 #6
0
def create_net1():
    """ Create net from simple pandapower-OPF tutorial. """
    net = pp.create_empty_network()

    # create buses
    bus1 = pp.create_bus(net, vn_kv=220.)
    bus2 = pp.create_bus(net, vn_kv=110.)
    bus3 = pp.create_bus(net, vn_kv=110.)
    bus4 = pp.create_bus(net, vn_kv=110.)

    # create 220/110 kV transformer
    pp.create_transformer(net, bus1, bus2, std_type="100 MVA 220/110 kV")

    # create 110 kV lines
    pp.create_line(net,
                   bus2,
                   bus3,
                   length_km=70.,
                   std_type='149-AL1/24-ST1A 110.0')
    pp.create_line(net,
                   bus3,
                   bus4,
                   length_km=50.,
                   std_type='149-AL1/24-ST1A 110.0')
    pp.create_line(net,
                   bus4,
                   bus2,
                   length_km=40.,
                   std_type='149-AL1/24-ST1A 110.0')

    # create loads
    pp.create_load(net, bus2, p_mw=60, controllable=False)
    pp.create_load(net, bus3, p_mw=70, controllable=False)
    pp.create_load(net, bus4, p_mw=10, controllable=False)

    # create generators
    pp.create_ext_grid(net, bus1, min_p_mw=-1000, max_p_mw=1000)
    pp.create_gen(net,
                  bus3,
                  p_mw=80,
                  min_p_mw=0,
                  max_p_mw=80,
                  vm_pu=1.01,
                  controllable=True)
    pp.create_gen(net,
                  bus4,
                  p_mw=100,
                  min_p_mw=0,
                  max_p_mw=100,
                  vm_pu=1.01,
                  controllable=True)

    return net
예제 #7
0
def test_tap_phase_shifter_default():
    expected_default = False
    net = pp.create_empty_network()
    pp.create_bus(net, 110)
    pp.create_bus(net, 20)
    data = pp.load_std_type(net, "25 MVA 110/20 kV", "trafo")
    if "tap_phase_shifter" in data:
        del data["tap_phase_shifter"]
    pp.create_std_type(net, data, "without_tap_shifter_info", "trafo")
    pp.create_transformer_from_parameters(net, 0, 1, 25e3, 110, 20, 0.4, 12, 20, 0.07)
    pp.create_transformer(net, 0, 1, "without_tap_shifter_info")
    assert (net.trafo.tap_phase_shifter == expected_default).all()
예제 #8
0
def simple_four_bus_system():
    """
    This function creates a simple four bus system with two radial low voltage nodes connected to \
    a medium voltage slack bus. At both low voltage nodes the a load and a static generator is \
    connected.

    OUTPUT:
         **net** - Returns the required four bus system

    EXAMPLE:
         import pandapower.networks as pn

         net_simple_four_bus = pn.simple_four_bus_system()
    """
    net = pp.create_empty_network()
    busnr1 = pp.create_bus(net, name="bus1ref", vn_kv=10, geodata=[0, 0])
    pp.create_ext_grid(net, busnr1)
    busnr2 = pp.create_bus(net, name="bus2", vn_kv=.4, geodata=[0, -1])
    pp.create_transformer(net,
                          busnr1,
                          busnr2,
                          name="transformer",
                          std_type="0.25 MVA 10/0.4 kV")
    busnr3 = pp.create_bus(net, name="bus3", vn_kv=.4, geodata=[0, -2])
    pp.create_line(net,
                   busnr2,
                   busnr3,
                   name="line1",
                   length_km=0.50000,
                   std_type="NAYY 4x50 SE")
    busnr4 = pp.create_bus(net, name="bus4", vn_kv=.4, geodata=[0, -3])
    pp.create_line(net,
                   busnr3,
                   busnr4,
                   name="line2",
                   length_km=0.50000,
                   std_type="NAYY 4x50 SE")
    pp.create_load(net, busnr3, 0.030, 0.010, name="load1")
    pp.create_load(net, busnr4, 0.030, 0.010, name="load2")
    pp.create_sgen(net,
                   busnr3,
                   p_mw=0.020,
                   q_mvar=0.005,
                   name="pv1",
                   sn_mva=0.03)
    pp.create_sgen(net,
                   busnr4,
                   p_mw=0.015,
                   q_mvar=0.002,
                   name="pv2",
                   sn_mva=0.02)
    return net
예제 #9
0
def ring_network():
    net = pp.create_empty_network()
    b0 = pp.create_bus(net, 220)
    b1 = pp.create_bus(net, 110)
    b2 = pp.create_bus(net, 110)
    b3 = pp.create_bus(net, 110)
    pp.create_ext_grid(net, b0, s_sc_max_mva=100., s_sc_min_mva=80., rx_min=0.4, rx_max=0.4)
    pp.create_transformer(net, b0, b1, "100 MVA 220/110 kV")
    pp.create_line(net, b1, b2, std_type="305-AL1/39-ST1A 110.0" , length_km=20.)
    l2 = pp.create_line(net, b2, b3, std_type="N2XS(FL)2Y 1x185 RM/35 64/110 kV" , length_km=15.)
    pp.create_line(net, b3, b1, std_type="N2XS(FL)2Y 1x185 RM/35 64/110 kV" , length_km=10.)
    pp.create_switch(net, b3, l2, closed=False, et="l")
    return net
예제 #10
0
def test_recycle_trafo(recycle_net):
    # test trafo tap change
    net = recycle_net
    b4 = pp.create_bus(net, vn_kv=20.)
    pp.create_transformer(net, 3, b4, std_type="0.4 MVA 10/0.4 kV")

    net["trafo"].at[0, "tap_pos"] = 0
    runpp_with_consistency_checks(net, recycle=dict(trafo=True, bus_pq=False, gen=False))
    vm_pu = net.res_bus.at[b4, "vm_pu"]

    net["trafo"].at[0, "tap_pos"] = 5
    runpp_with_consistency_checks(net, recycle=dict(trafo=True, bus_pq=False, gen=False))
    assert not np.allclose(vm_pu, net.res_bus.at[b4, "vm_pu"])
예제 #11
0
def meshed_network():
    net = pp.create_empty_network("7bus_system")

    # ext grid
    b = []
    b.append(pp.create_bus(net, vn_kv=380., name="exi", geodata=(0, 0)))
    pp.create_ext_grid(net, b[0], name="exi")

    # create 110kV buses
    for i in range(1, 7):
        b.append(
            pp.create_bus(net, vn_kv=110., name="bus" + str(i),
                          geodata=(0, 0)))
    # connect buses b1 to b6 with overhead lines
    for i in range(1, 6):
        l = pp.create_line(net,
                           b[i],
                           b[i + 1],
                           length_km=10. * i * 2.,
                           std_type="149-AL1/24-ST1A 110.0",
                           name="line" + str(i),
                           index=i + 2)
        pp.create_switch(net,
                         b[i],
                         l,
                         et="l",
                         name="bl_switch_" + str(i),
                         index=i + 3)

    # create trafo
    pp.create_transformer(net,
                          hv_bus=b[0],
                          lv_bus=b[1],
                          std_type="160 MVA 380/110 kV",
                          name="trafo")

    # create some more lines between b6-b1 and b1-b4
    pp.create_line(net,
                   b[1],
                   b[4],
                   length_km=100.,
                   std_type="149-AL1/24-ST1A 110.0",
                   name="line6")
    pp.create_line(net,
                   b[6],
                   b[1],
                   length_km=100.,
                   std_type="149-AL1/24-ST1A 110.0",
                   name="line7")
    return net
예제 #12
0
def ring_network():
    net = pp.create_empty_network()
    b1 = pp.create_bus(net, 220)
    b2 = pp.create_bus(net, 110)
    b3 = pp.create_bus(net, 110)
    b4 = pp.create_bus(net, 110)

    pp.create_ext_grid(net, b1, s_sc_max_mva=100., s_sc_min_mva=80., rx_min=0.20, rx_max=0.35)

    pp.create_transformer(net, b1, b2, "100 MVA 220/110 kV")
    pp.create_line(net, b2, b3, std_type="N2XS(FL)2Y 1x120 RM/35 64/110 kV", length_km=15.)
    l2 = pp.create_line(net, b3, b4, std_type="N2XS(FL)2Y 1x120 RM/35 64/110 kV", length_km=12.)
    pp.create_line(net, b4, b2, std_type="N2XS(FL)2Y 1x120 RM/35 64/110 kV", length_km=10.)
    pp.create_switch(net, b4, l2, closed=False, et="l")
    return net
예제 #13
0
파일: builders.py 프로젝트: robcalon/TEP
def add_trafos(network, df=None, file=None):
    """
    Add transformers to the specified network. Pass either a DataFrame or a pathstring to a csv-file.
    
    Parameters
    ----------
    network : pandapowerNet
        PandaPower network representation.
    df : DataFrame
        DataFrame with bus characteristics.
    file : str
        Path to csv-file with transformer characteristics.
        
    Return
    ------
    net : pandapowerNet
        PandaPower network representation with added transformers.
    """

    # copy network
    net = copy.deepcopy(network)
    
    # load trafos
    trafos = check_arguments(df, file)

    # create dictonairy of busnames and busindices
    busdict = dict(zip(net.bus.name, net.bus.index))
    
    # parameter trafos
    parameter_trafos = trafos[trafos.std_type.isna() == True]

    for index, trafo in parameter_trafos.iterrows():       
        pp.create_transformer_from_parameters(net, name=trafo['name'], hv_bus=busdict[trafo.hv_bus],
                                              lv_bus=busdict[trafo.lv_bus], sn_mva=trafo.sn_mva,
                                              vn_hv_kv=trafo.vn_hv_kv, vn_lv_kv=trafo.vn_lv_kv, 
                                              vkr_percent=trafo.vkr_percent, vk_percent=trafo.vk_percent,
                                              pfe_kw=trafo.pfe_kw, i0_percent=trafo.i0_percent, 
                                              in_service=trafo.in_service, parallel=trafo.parallel)

    # default trafos
    default_trafos = trafos[trafos.std_type.isna() == False]

    for index, trafo in default_trafos.iterrows():
        pp.create_transformer(net, name=trafo['name'], hv_bus=busdict[trafo.hv_bus],
                              lv_bus=busdict[trafo.lv_bus], std_type=trafo.std_type, 
                              in_service=trafo.in_service, parallel=trafo.parallel)
        
    return net
예제 #14
0
def simple_test_net():
    net = pp.create_empty_network()
    pp.set_user_pf_options(net, init='dc', calculate_voltage_angles=True)
    b0 = pp.create_bus(net, 110)
    b1 = pp.create_bus(net, 110)
    b2 = pp.create_bus(net, 20)
    b3 = pp.create_bus(net, 20)
    b4 = pp.create_bus(net, 6)

    pp.create_ext_grid(net, b0)
    pp.create_line(net, b0, b1, 10, "149-AL1/24-ST1A 110.0")

    pp.create_transformer(net, b1, b2, "25 MVA 110/20 kV", name='tr1')

    pp.create_transformer3w_from_parameters(net,
                                            b1,
                                            b3,
                                            b4,
                                            110,
                                            20,
                                            6,
                                            1e2,
                                            1e2,
                                            1e1,
                                            3,
                                            2,
                                            2,
                                            1,
                                            1,
                                            1,
                                            100,
                                            1,
                                            60,
                                            30,
                                            'hv',
                                            tap_step_percent=1.5,
                                            tap_step_degree=0,
                                            tap_pos=0,
                                            tap_neutral=0,
                                            tap_max=10,
                                            tap_min=-10,
                                            name='tr2')

    pp.create_load(net, b2, 1.5e1, 1, name='trafo1')
    pp.create_load(net, b3, 3e1, 1.5, name='trafo2_mv')
    pp.create_load(net, b4, 2, -0.15, name='trafo2_lv')

    return net
예제 #15
0
def test_drop_elements_at_buses():
    net = pp.create_empty_network()

    bus0 = pp.create_bus(net, vn_kv=110)
    bus1 = pp.create_bus(net, vn_kv=20)
    bus2 = pp.create_bus(net, vn_kv=10)
    bus3 = pp.create_bus(net, vn_kv=0.4)
    bus4 = pp.create_bus(net, vn_kv=0.4)
    bus5 = pp.create_bus(net, vn_kv=20)

    trafo0 = pp.create_transformer3w(net,
                                     hv_bus=bus0,
                                     mv_bus=bus1,
                                     lv_bus=bus2,
                                     name='trafo0',
                                     std_type='63/25/38 MVA 110/20/10 kV')
    trafo1 = pp.create_transformer(net,
                                   hv_bus=bus2,
                                   lv_bus=bus3,
                                   std_type='0.4 MVA 10/0.4 kV')

    line1 = pp.create_line(net,
                           from_bus=bus3,
                           to_bus=bus4,
                           length_km=20.1,
                           std_type='24-AL1/4-ST1A 0.4',
                           name='line1')

    #switch0=pp.create_switch(net, bus = bus0, element = trafo0, et = 't3') #~~~~~ not implementable now
    switch1 = pp.create_switch(net, bus=bus1, element=bus5, et='b')
    switch2 = pp.create_switch(net, bus=bus2, element=trafo1, et='t')
    switch3 = pp.create_switch(net, bus=bus3, element=line1, et='l')
    # bus id needs to be entered as iterable, not done in the function
    tb.drop_elements_at_buses(net, [bus5])
    assert len(
        net.switch
    ) == 2  # it should be 2 since switch is connected to bus5 but if we add "element" column for switch it would delete this
    assert len(net.trafo) == 1
    assert len(net.trafo3w) == 1
    assert len(net.line) == 1
    tb.drop_elements_at_buses(net, [bus4])
    assert len(net.switch) == 1
    assert len(net.line) == 0
    assert len(net.trafo) == 1
    assert len(net.trafo3w) == 1
    tb.drop_elements_at_buses(net, [bus3])
    assert len(net.switch) == 0
    assert len(net.line) == 0
    assert len(net.trafo) == 0
    assert len(net.trafo3w) == 1
    tb.drop_elements_at_buses(net, [bus2])
    assert len(net.switch) == 0
    assert len(net.line) == 0
    assert len(net.trafo) == 0
    assert len(net.trafo3w) == 0
    tb.drop_elements_at_buses(net, [bus1])
    assert len(net.switch) == 0
    assert len(net.line) == 0
    assert len(net.trafo) == 0
    assert len(net.trafo3w) == 0
예제 #16
0
def test_next_bus():
    net = pp.create_empty_network()

    bus0 = pp.create_bus(net, vn_kv=110)
    bus1 = pp.create_bus(net, vn_kv=20)
    bus2 = pp.create_bus(net, vn_kv=10)
    bus3 = pp.create_bus(net, vn_kv=0.4)
    bus4 = pp.create_bus(net, vn_kv=0.4)
    bus5 = pp.create_bus(net, vn_kv=20)

    trafo0 = pp.create_transformer3w(net, hv_bus=bus0, mv_bus=bus1, lv_bus=bus2, name='trafo0',
                                     std_type='63/25/38 MVA 110/20/10 kV')
    trafo1 = pp.create_transformer(net, hv_bus=bus2, lv_bus=bus3, std_type='0.4 MVA 10/0.4 kV')

    line1 = pp.create_line(net, from_bus=bus3, to_bus=bus4, length_km=20.1, std_type='24-AL1/4-ST1A 0.4', name='line1')

    # switch0=pp.create_switch(net, bus = bus0, element = trafo0, et = 't3') #~~~~~ not implementable now
    switch1 = pp.create_switch(net, bus=bus1, element=bus5, et='b')
    switch2 = pp.create_switch(net, bus=bus2, element=trafo1, et='t')
    switch3 = pp.create_switch(net, bus=bus3, element=line1, et='l')

    # assert tb.next_bus(net,bus0,trafo0,et='trafo3w')==bus1                         # not implemented in existing toolbox
    # assert tb.next_bus(net,bus0,trafo0,et='trafo3w',choice_for_trafo3w='lv')==bus2 # not implemented in existing toolbox
    assert tb.next_bus(net, bus1, switch1, et='switch') == bus5  # Switch with bus2bus connection
    # assert not tb.next_bus(net,bus2,switch2,et='switch')==bus3  # Switch with bus2trafo connection:- gives trasformer id instead of bus id
    assert tb.next_bus(net, bus2, trafo1, et='trafo') == bus3
    # assert tb.next_bus(net,bus3,switch3,et='switch') ==bus4  # Switch with bus2line connection :- gives line id instead of bus id
    assert tb.next_bus(net, bus3, line1, et='line') == bus4
예제 #17
0
def test_get_connected_buses():
    net = pp.create_empty_network()

    bus0 = pp.create_bus(net, vn_kv=110)
    bus1 = pp.create_bus(net, vn_kv=20)
    bus2 = pp.create_bus(net, vn_kv=10)
    bus3 = pp.create_bus(net, vn_kv=0.4)
    bus4 = pp.create_bus(net, vn_kv=0.4)
    bus5 = pp.create_bus(net, vn_kv=20)

    trafo0 = pp.create_transformer3w(net, hv_bus=bus0, mv_bus=bus1, lv_bus=bus2, std_type='63/25/38 MVA 110/20/10 kV')
    trafo1 = pp.create_transformer(net, hv_bus=bus2, lv_bus=bus3, std_type='0.4 MVA 10/0.4 kV')
    line1 = pp.create_line(net, from_bus=bus3, to_bus=bus4, length_km=20.1, std_type='24-AL1/4-ST1A 0.4')

    switch0a = pp.create_switch(net, bus=bus0, element=trafo0, et='t3')
    switch0b = pp.create_switch(net, bus=bus2, element=trafo0, et='t3')
    switch1 = pp.create_switch(net, bus=bus1, element=bus5, et='b')
    switch2 = pp.create_switch(net, bus=bus2, element=trafo1, et='t')
    switch3 = pp.create_switch(net, bus=bus3, element=line1, et='l')

    assert list(tb.get_connected_buses(net, [bus0])) == [bus1, bus2]
    assert list(tb.get_connected_buses(net, [bus1])) == [bus0, bus2, bus5]
    assert list(tb.get_connected_buses(net, [bus2])) == [bus0, bus1, bus3]
    assert list(tb.get_connected_buses(net, [bus3])) == [bus2, bus4]
    assert list(tb.get_connected_buses(net, [bus4])) == [bus3]
    assert list(tb.get_connected_buses(net, [bus5])) == [bus1]
    assert list(tb.get_connected_buses(net, [bus0, bus1])) == [bus2, bus5]
    assert list(tb.get_connected_buses(net, [bus2, bus3])) == [bus0, bus1, bus4]

    net.switch.loc[[switch0b, switch1, switch2, switch3], 'closed'] = False
    assert list(tb.get_connected_buses(net, [bus0])) == [bus1]
    assert list(tb.get_connected_buses(net, [bus1])) == [bus0]
    assert list(tb.get_connected_buses(net, [bus3])) == []
    assert list(tb.get_connected_buses(net, [bus4])) == []
예제 #18
0
def test_get_connected_buses():
    net = pp.create_empty_network()

    bus0 = pp.create_bus(net, vn_kv=110)
    bus1 = pp.create_bus(net, vn_kv=20)
    bus2 = pp.create_bus(net, vn_kv=10)
    bus3 = pp.create_bus(net, vn_kv=0.4)
    bus4 = pp.create_bus(net, vn_kv=0.4)
    bus5 = pp.create_bus(net, vn_kv=20)

    trafo0 = pp.create_transformer3w(net, hv_bus=bus0, mv_bus=bus1, lv_bus=bus2, name='trafo0',
                                     std_type='63/25/38 MVA 110/20/10 kV')
    trafo1 = pp.create_transformer(net, hv_bus=bus2, lv_bus=bus3, std_type='0.4 MVA 10/0.4 kV')

    line1 = pp.create_line(net, from_bus=bus3, to_bus=bus4, length_km=20.1, std_type='24-AL1/4-ST1A 0.4', name='line1')

    # switch0=pp.create_switch(net, bus = bus0, element = trafo0, et = 't3') #~~~~~ not implementable
    switch1 = pp.create_switch(net, bus=bus1, element=bus5, et='b')
    switch2 = pp.create_switch(net, bus=bus2, element=trafo1, et='t')
    switch3 = pp.create_switch(net, bus=bus3, element=line1, et='l')

    assert list(tb.get_connected_buses(net, [bus0])) == [bus1, bus2]  # trafo3w has not been implemented in the function
    assert list(tb.get_connected_buses(net, [bus1])) == [bus0, bus2,
                                                         bus5]  # trafo3w has not been implemented in the function
    assert list(tb.get_connected_buses(net, [bus2])) == [bus0, bus1,
                                                         bus3]  # trafo3w has not been implemented in the function
    assert list(tb.get_connected_buses(net, [bus3])) == [bus2, bus4]
    assert list(tb.get_connected_buses(net, [bus4])) == [bus3]
    assert list(tb.get_connected_buses(net, [bus5])) == [bus1]

    assert list(tb.get_connected_buses(net, [bus0, bus1])) == [bus2, bus5]
    assert list(tb.get_connected_buses(net, [bus2, bus3])) == [bus0, bus1, bus4]
예제 #19
0
def test_wye_delta():
    from pandapower.pypower.idx_brch import BR_R, BR_X, BR_B
    net = pp.create_empty_network()
    pp.create_bus(net, vn_kv=110)
    pp.create_buses(net, nr_buses=4, vn_kv=20)
    trafo = pp.create_transformer(net, hv_bus=0, lv_bus=1, std_type='25 MVA 110/20 kV')
    pp.create_line(net, 1, 2, length_km=2.0, std_type="NAYY 4x50 SE")
    pp.create_line(net, 2, 3, length_km=6.0, std_type="NAYY 4x50 SE")
    pp.create_line(net, 3, 4, length_km=10.0, std_type="NAYY 4x50 SE")
    pp.create_ext_grid(net, 0)
    pp.create_load(net, 4, p_mw=0.1)
    pp.create_sgen(net, 2, p_mw=4.)
    pp.create_sgen(net, 3, p_mw=4.)

    pp.runpp(net, trafo_model="pi")
    f, t = net._pd2ppc_lookups["branch"]["trafo"]
    assert np.isclose(net.res_trafo.p_hv_mw.at[trafo], -7.560996, rtol=1e-7)
    assert np.allclose(net._ppc["branch"][f:t, [BR_R, BR_X, BR_B]].flatten(),
                       np.array([0.0001640 + 0.j, 0.0047972 + 0.j, -0.0105000 - 0.014j]),
                       rtol=1e-7)

    pp.runpp(net, trafo_model="t")
    assert np.allclose(net._ppc["branch"][f:t, [BR_R, BR_X, BR_B]].flatten(),
                       np.array([0.00016392 + 0.j, 0.00479726 + 0.j, -0.01050009 - 0.01399964j]))
    assert np.isclose(net.res_trafo.p_hv_mw.at[trafo], -7.561001, rtol=1e-7)
예제 #20
0
def test_volt_dep_load_at_inactive_bus():
    # create empty net
    net = pp.create_empty_network()

    # create buses
    bus1 = pp.create_bus(net, index=0, vn_kv=20., name="Bus 1")
    bus2 = pp.create_bus(net, index=1, vn_kv=0.4, name="Bus 2")
    bus3 = pp.create_bus(net, index=3, in_service=False, vn_kv=0.4, name="Bus 3")
    bus4 = pp.create_bus(net, index=4, vn_kv=0.4, name="Bus 4")
    bus4 = pp.create_bus(net, index=5, vn_kv=0.4, name="Bus 4")

    # create bus elements
    pp.create_ext_grid(net, bus=bus1, vm_pu=1.02, name="Grid Connection")
    pp.create_load(net, bus=4, p_mw=0.1, q_mvar=0.05, name="Load3", const_i_percent=100)
    pp.create_load(net, bus=5, p_mw=0.1, q_mvar=0.05, name="Load4")

    # create branch elements
    trafo = pp.create_transformer(net, hv_bus=bus1, lv_bus=bus2, std_type="0.4 MVA 20/0.4 kV",
                                  name="Trafo")
    line1 = pp.create_line(net, from_bus=1, to_bus=3, length_km=0.1, std_type="NAYY 4x50 SE",
                           name="Line")
    line2 = pp.create_line(net, from_bus=1, to_bus=4, length_km=0.1, std_type="NAYY 4x50 SE",
                           name="Line")
    line3 = pp.create_line(net, from_bus=1, to_bus=5, length_km=0.1, std_type="NAYY 4x50 SE",
                           name="Line")

    pp.runpp(net)
    assert not np.isnan(net.res_load.p_mw.at[1])
    assert not np.isnan(net.res_bus.p_mw.at[5])
    assert net.res_bus.p_mw.at[3] == 0
예제 #21
0
def test_create_switches():
    net = pp.create_empty_network()
    # standard
    b1 = pp.create_bus(net, 110)
    b2 = pp.create_bus(net, 110)
    b3 = pp.create_bus(net, 15)
    b4 = pp.create_bus(net, 15)
    l1 = pp.create_line(net, b1, b2, length_km=1, std_type="48-AL1/8-ST1A 10.0")
    t1 = pp.create_transformer(net, b2, b3, std_type='160 MVA 380/110 kV')

    sw = pp.create_switches(net, buses=[b1, b2, b3], elements=[l1, t1, b4], et=["l", "t", "b"],
                            z_ohm=0., foo='aaa')

    assert (net.switch.bus.at[0] == b1)
    assert (net.switch.bus.at[1] == b2)
    assert (net.switch.bus.at[2] == b3)
    assert (net.switch.element.at[sw[0]] == l1)
    assert (net.switch.element.at[sw[1]] == t1)
    assert (net.switch.element.at[sw[2]] == b4)
    assert (net.switch.et.at[0] == "l")
    assert (net.switch.et.at[1] == "t")
    assert (net.switch.et.at[2] == "b")
    assert (net.switch.z_ohm.at[0] == 0)
    assert (net.switch.z_ohm.at[1] == 0)
    assert (net.switch.z_ohm.at[2] == 0)
    assert (net.switch.foo.at[0] == 'aaa')
    assert (net.switch.foo.at[1] == 'aaa')
    assert (net.switch.foo.at[2] == 'aaa')
예제 #22
0
def create_net_with_bb_switch():  
    net = pp.create_empty_network()
    bus1 = pp.create_bus(net, name="bus1", vn_kv=10.)
    bus2 = pp.create_bus(net, name="bus2", vn_kv=10.)
    bus3 = pp.create_bus(net, name="bus3", vn_kv=10.)
    bus4 = pp.create_bus(net, name="bus4", vn_kv=10.)
    bus5 = pp.create_bus(net, name="bus5", vn_kv=110.)
    
    pp.create_line_from_parameters(net, bus1, bus2, 10, r_ohm_per_km=.59, x_ohm_per_km=.35, c_nf_per_km=10.1,
                                   max_i_ka=1)
    pp.create_transformer(net, bus5, bus1, std_type="40 MVA 110/10 kV")
    pp.create_ext_grid(net, bus=bus5, vm_pu=1.0)
    pp.create_load(net, bus1, p_mw=.350, q_mvar=.100)
    pp.create_load(net, bus2, p_mw=.450, q_mvar=.100)
    pp.create_load(net, bus3, p_mw=.250, q_mvar=.100)
    pp.create_load(net, bus4, p_mw=.150, q_mvar=.100)

    # Created bb switch
    pp.create_switch(net, bus2, element=bus3, et='b')
    pp.create_switch(net, bus1, element=bus4, et='b')
    pp.runpp(net, calculate_voltage_angles=True)

    pp.create_measurement(net, "v", "bus", r2(net.res_bus.vm_pu.iloc[bus1], .002), .002, element=bus1)
    pp.create_measurement(net, "v", "bus", r2(net.res_bus.vm_pu.iloc[bus3], .002), .002, element=bus3)
    pp.create_measurement(net, "v", "bus", r2(net.res_bus.vm_pu.iloc[bus5], .002), .002, element=bus5)

    pp.create_measurement(net, "p", "bus", -r2(net.res_bus.p_mw.iloc[bus5], .002), .002, element=bus5)
    pp.create_measurement(net, "q", "bus", -r2(net.res_bus.q_mvar.iloc[bus5], .002), .002, element=bus5)

    # If measurement on the bus with bb-switch activated, it will incluence the results of the merged bus
    pp.create_measurement(net, "p", "bus", -r2(net.res_bus.p_mw.iloc[bus4], .002), .002, element=bus4)
    pp.create_measurement(net, "q", "bus", -r2(net.res_bus.q_mvar.iloc[bus4], .002), .002, element=bus4)
    pp.create_measurement(net, "p", "bus", -r2(net.res_bus.p_mw.iloc[bus3], .001), .001, element=bus3)
    pp.create_measurement(net, "q", "bus", -r2(net.res_bus.q_mvar.iloc[bus3], .001), .001, element=bus3)
    pp.create_measurement(net, "p", "bus", -r2(net.res_bus.p_mw.iloc[bus2], .001), .001, element=bus2)
    pp.create_measurement(net, "q", "bus", -r2(net.res_bus.q_mvar.iloc[bus2], .001), .001, element=bus2)
    pp.create_measurement(net, "p", "bus", -r2(net.res_bus.p_mw.iloc[bus1], .001), .001, element=bus1)
    pp.create_measurement(net, "q", "bus", -r2(net.res_bus.q_mvar.iloc[bus1], .001), .001, element=bus1)

    pp.create_measurement(net, "p", "line", r2(net.res_line.p_from_mw.iloc[0], .002), .002, 0, side='from')
    pp.create_measurement(net, "q", "line", r2(net.res_line.q_from_mvar.iloc[0], .002), .002, 0, side='from')

    pp.create_measurement(net, "p", "trafo", r2(net.res_trafo.p_hv_mw.iloc[0], .001), .01,
                          side="hv", element=0)  
    pp.create_measurement(net, "q", "trafo", r2(net.res_trafo.q_hv_mvar.iloc[0], .001), .01,
                          side="hv", element=0) 
    return net
예제 #23
0
def test_minimize_active_power_curtailment():
    net = pp.create_empty_network()

    # create buses
    bus1 = pp.create_bus(net, vn_kv=220.)
    bus2 = pp.create_bus(net, vn_kv=110.)
    bus3 = pp.create_bus(net, vn_kv=110.)
    bus4 = pp.create_bus(net, vn_kv=110.)

    # create 220/110 kV transformer
    pp.create_transformer(net, bus1, bus2, std_type="100 MVA 220/110 kV")

    # create 110 kV lines
    pp.create_line(net, bus2, bus3, length_km=70., std_type='149-AL1/24-ST1A 110.0')
    pp.create_line(net, bus3, bus4, length_km=50., std_type='149-AL1/24-ST1A 110.0')
    pp.create_line(net, bus4, bus2, length_km=40., std_type='149-AL1/24-ST1A 110.0')

    # create loads
    pp.create_load(net, bus2, p_mw=60, controllable=False)
    pp.create_load(net, bus3, p_mw=70, controllable=False)
    pp.create_load(net, bus4, p_mw=10, controllable=False)

    # create generators
    pp.create_ext_grid(net, bus1)
    pp.create_gen(net, bus3, p_mw=80, max_p_mw=80, min_p_mw=0, vm_pu=1.01,
                  controllable=True)
    pp.create_gen(net, bus4, p_mw=0.1, max_p_mw=100, min_p_mw=0, vm_pu=1.01,
                  controllable=True)

    net.trafo["max_loading_percent"] = 50
    net.line["max_loading_percent"] = 50

    net.bus["min_vm_pu"] = 1.0
    net.bus["max_vm_pu"] = 1.02

    pp.create_poly_cost(net, 0, "gen", cp1_eur_per_mw=-0.01)
    pp.create_poly_cost(net, 1, "gen", cp1_eur_per_mw=-0.01)
    pp.create_poly_cost(net, 0, "ext_grid", cp1_eur_per_mw=0)



    pp.runopp(net, calculate_voltage_angles=True)
    assert net["OPF_converged"]
    assert allclose(net.res_bus.vm_pu.values, array([1., 1.00000149,  1.01998544,  1.01999628]),
                    atol=1e-5)
    assert allclose(net.res_bus.va_degree.values, array([0., -0.7055226, 0.85974768, 2.24584537]),
                    atol=1e-3)
def simple_four_bus_system():
    """
    This function creates a simple four bus system with two radial low voltage nodes connected to \
    a medium valtage slack bus. At both low voltage nodes the a load and a static generator is \
    connected.

    OUTPUT:
         **net** - Returns the required four bus system

    EXAMPLE:
         import pandapower.networks as pn

         net_simple_four_bus = pn.simple_four_bus_system()
    """
    net = pp.create_empty_network()
    busnr1 = pp.create_bus(net, name="bus1ref", vn_kv=10)
    pp.create_ext_grid(net, busnr1)
    busnr2 = pp.create_bus(net, name="bus2", vn_kv=.4)
    pp.create_transformer(net,
                          busnr1,
                          busnr2,
                          name="transformer",
                          std_type="0.25 MVA 10/0.4 kV")
    busnr3 = pp.create_bus(net, name="bus3", vn_kv=.4)
    pp.create_line(net,
                   busnr2,
                   busnr3,
                   name="line1",
                   length_km=0.50000,
                   std_type="NAYY 4x50 SE")
    busnr4 = pp.create_bus(net, name="bus4", vn_kv=.4)
    pp.create_line(net,
                   busnr3,
                   busnr4,
                   name="line2",
                   length_km=0.50000,
                   std_type="NAYY 4x50 SE")
    pp.create_load(net, busnr3, 30, 10, name="load1")
    pp.create_load(net, busnr4, 30, 10, name="load2")
    pp.create_sgen(net, busnr3, p_kw=-20., q_kvar=-5., name="pv1", sn_kva=30)
    pp.create_sgen(net, busnr4, p_kw=-15., q_kvar=-2., name="pv2", sn_kva=20)

    n = busnr4 + 1
    net.bus_geodata = DataFrame(array([[0] * n, range(0, -n, -1)]).T,
                                columns=['x', 'y'])

    return net
예제 #25
0
    def run_simulation(self,
                       active_load=0.1,
                       reactive_load=0.05) -> (float, float):
        """
        Runs the Pandaspower simulation with 3 buses, a 0.4 MVA 20/0.4 kV transformer, and an external grid connection.
        :param active_load: Grid active load in megawatts. Default is 0.1.
        :param reactive_load: Grid reactive load in megawatts. Default is 0.05.
        :return: Resulting active and reactive grid load.
        """
        # fallback parameters
        if not active_load:
            active_load = 0.1
        if not reactive_load:
            reactive_load = 0.05

        # create empty net
        net = pp.create_empty_network()

        # create buses
        b1 = pp.create_bus(net, vn_kv=20., name="Bus 1")
        b2 = pp.create_bus(net, vn_kv=0.4, name="Bus 2")
        b3 = pp.create_bus(net, vn_kv=0.4, name="Bus 3")

        # create bus elements
        pp.create_ext_grid(net, bus=b1, vm_pu=1.02, name="Grid Connection")
        pp.create_load(net,
                       bus=b3,
                       p_mw=active_load,
                       q_mvar=reactive_load,
                       name="Load")

        # create branch elements
        pp.create_transformer(net,
                              hv_bus=b1,
                              lv_bus=b2,
                              std_type="0.4 MVA 20/0.4 kV",
                              name="Trafo")
        pp.create_line(net,
                       from_bus=b2,
                       to_bus=b3,
                       length_km=0.1,
                       name="Line",
                       std_type="NAYY 4x50 SE")
        pp.runpp(net)
        self._active_load, self._reactive_load = net.res_load.p_mw[
            0], net.res_load.q_mvar[0]
        return self._active_load, self._reactive_load
예제 #26
0
def _opf_net():
    net = pp.create_empty_network()
    pp.create_bus(net, 20, min_vm_pu=0.85, max_vm_pu=1.15)
    pp.create_buses(net, 3, 0.4, min_vm_pu=0.85, max_vm_pu=1.15)
    pp.create_transformer(net, 0, 1, "0.25 MVA 20/0.4 kV")
    pp.create_line(net, 1, 2, 1, "48-AL1/8-ST1A 0.4")
    pp.create_ext_grid(net, 0)
    pp.create_dcline(net,
                     1,
                     3,
                     -5,
                     1,
                     1,
                     1,
                     1.02,
                     max_p_kw=10,
                     min_q_from_kvar=-5,
                     min_q_to_kvar=-5,
                     max_q_from_kvar=5,
                     max_q_to_kvar=5)
    pp.create_load(net,
                   2,
                   15,
                   controllable=True,
                   max_p_kw=25,
                   min_p_kw=0,
                   max_q_kvar=5,
                   min_q_kvar=-5)
    pp.create_gen(net,
                  1,
                  -2,
                  1.002,
                  controllable=True,
                  max_p_kw=0,
                  min_p_kw=-25,
                  max_q_kvar=25,
                  min_q_kvar=-25)
    pp.create_sgen(net,
                   2,
                   -1,
                   controllable=True,
                   max_p_kw=0,
                   min_p_kw=-3,
                   max_q_kvar=1,
                   min_q_kvar=-1)
    return net
예제 #27
0
def _opf_net():
    net = pp.create_empty_network()
    pp.create_bus(net, 20, min_vm_pu=0.85, max_vm_pu=1.15)
    pp.create_buses(net, 3, 0.4, min_vm_pu=0.85, max_vm_pu=1.15)
    pp.create_transformer(net, 0, 1, "0.25 MVA 20/0.4 kV")
    pp.create_line(net, 1, 2, 1, "48-AL1/8-ST1A 0.4")
    pp.create_ext_grid(net, 0)
    pp.create_dcline(net,
                     1,
                     3,
                     -5,
                     1,
                     1,
                     1,
                     1.02,
                     max_p_mw=0.01,
                     min_q_from_mvar=-.005,
                     min_q_to_mvar=-0.005,
                     max_q_from_mvar=.005,
                     max_q_to_mvar=.005)
    pp.create_load(net,
                   bus=2,
                   p_mw=0.015,
                   controllable=True,
                   max_p_mw=0.025,
                   min_p_mw=0,
                   max_q_mvar=0.005,
                   min_q_mvar=-0.005)
    pp.create_gen(net,
                  bus=1,
                  p_mw=0.002,
                  vm_pu=1.002,
                  controllable=True,
                  max_p_mw=0,
                  min_p_mw=-0.025,
                  max_q_mvar=0.025,
                  min_q_mvar=-0.025)
    pp.create_sgen(net,
                   bus=2,
                   p_mw=0.001,
                   controllable=True,
                   max_p_mw=0.003,
                   min_p_mw=0,
                   max_q_mvar=.001,
                   min_q_mvar=-.001)
    return net
def convert_to_3ph(net):
  ### update external grid
  net.ext_grid["r0x0_max"] = 0.1
  net.ext_grid["x0x_max"] = 1.0
  net.ext_grid["s_sc_max_mva"] = 10000
  net.ext_grid["s_sc_min_mva"] = 8000
  net.ext_grid["rx_min"] = 0.1
  net.ext_grid["rx_max"] = 0.1
  
  ### update transformer
  net.trafo = net.trafo.head(0)
  pp.create_std_type(net, {"sn_mva": 0.3, "vn_hv_kv": 20, "vn_lv_kv": 0.4, "vk_percent": 6,
              "vkr_percent": 0.78125, "pfe_kw": 2.7, "i0_percent": 0.16875,
              "shift_degree": 0, "vector_group": "YNyn",
              "tap_side": "hv", "tap_neutral": 0, "tap_min": -2, "tap_max": 2,
              "tap_step_degree": 0, "tap_step_percent": 2.5, "tap_phase_shifter": False,
              "vk0_percent": 6, "vkr0_percent": 0.78125, "mag0_percent": 100,
              "mag0_rx": 0., "si0_hv_partial": 0.9,}, 
              "YNyn", "trafo")
  
  pp.create_transformer(net, 0, 1, std_type="YNyn", parallel=1,tap_pos=0,
                          index=pp.get_free_id(net.trafo))
  net.trafo.reset_index()
  
  ### add zero sequence for lines
  net.line["r0_ohm_per_km"] = 0.0848
  net.line["x0_ohm_per_km"] = 0.4649556
  net.line["c0_nf_per_km"] = 230.6
  
  ### convert loads to asymmertric loads
  for i in net.load.index:
    row = net.load.loc[i]
    phases = [0,0,0]
    p = i % 3
    phases[p] = 1
    pp.create_asymmetric_load(net, row['bus'], 
               p_a_mw=row['p_mw']*phases[0], q_a_mvar=row['q_mvar']*phases[0], 
               p_b_mw=row['p_mw']*phases[1], q_b_mvar=row['q_mvar']*phases[1],
               p_c_mw=row['p_mw']*phases[2], q_c_mvar=row['q_mvar']*phases[2], 
               sn_mva=row['sn_mva'])
    
  net.load['p_mw'] = 0
  net.load['q_mvar'] = 0
  pp.add_zero_impedance_parameters(net)
  return net
예제 #29
0
def test_rundcpp_init():
    net = pp.create_empty_network()
    b1, b2, l1 = add_grid_connection(net)
    b3 = pp.create_bus(net, vn_kv=0.4)
    tidx = pp.create_transformer(net,
                                 hv_bus=b2,
                                 lv_bus=b3,
                                 std_type="0.25 MVA 20/0.4 kV")
    pp.rundcpp(net)
예제 #30
0
def test_unsupplied_buses_with_switches():
    net = pp.create_empty_network()
    pp.create_buses(net, 8, 20)
    pp.create_buses(net, 5, 0.4)
    pp.create_ext_grid(net, 0)
    pp.create_line(net, 0, 1, 1.2, "NA2XS2Y 1x185 RM/25 12/20 kV")
    pp.create_switch(net, 0, 0, "l", closed=True)
    pp.create_switch(net, 1, 0, "l", closed=False)
    pp.create_line(net, 0, 2, 1.2, "NA2XS2Y 1x185 RM/25 12/20 kV")
    pp.create_switch(net, 0, 1, "l", closed=False)
    pp.create_switch(net, 2, 1, "l", closed=True)
    pp.create_line(net, 0, 3, 1.2, "NA2XS2Y 1x185 RM/25 12/20 kV")
    pp.create_switch(net, 0, 2, "l", closed=False)
    pp.create_switch(net, 3, 2, "l", closed=False)
    pp.create_line(net, 0, 4, 1.2, "NA2XS2Y 1x185 RM/25 12/20 kV")
    pp.create_switch(net, 0, 3, "l", closed=True)
    pp.create_switch(net, 4, 3, "l", closed=True)
    pp.create_line(net, 0, 5, 1.2, "NA2XS2Y 1x185 RM/25 12/20 kV")

    pp.create_switch(net, 0, 6, "b", closed=True)
    pp.create_switch(net, 0, 7, "b", closed=False)

    pp.create_transformer(net, 0, 8, "0.63 MVA 20/0.4 kV")
    pp.create_switch(net, 0, 0, "t", closed=True)
    pp.create_switch(net, 8, 0, "t", closed=False)
    pp.create_transformer(net, 0, 9, "0.63 MVA 20/0.4 kV")
    pp.create_switch(net, 0, 1, "t", closed=False)
    pp.create_switch(net, 9, 1, "t", closed=True)
    pp.create_transformer(net, 0, 10, "0.63 MVA 20/0.4 kV")
    pp.create_switch(net, 0, 2, "t", closed=False)
    pp.create_switch(net, 10, 2, "t", closed=False)
    pp.create_transformer(net, 0, 11, "0.63 MVA 20/0.4 kV")
    pp.create_switch(net, 0, 3, "t", closed=True)
    pp.create_switch(net, 11, 3, "t", closed=True)
    pp.create_transformer(net, 0, 12, "0.63 MVA 20/0.4 kV")

    pp.create_buses(net, 2, 20)
    pp.create_impedance(net, 0, 13, 1, 1, 10)
    pp.create_impedance(net, 0, 14, 1, 1, 10, in_service=False)

    ub = top.unsupplied_buses(net)
    assert ub == {1, 2, 3, 7, 8, 9, 10, 14}
    ub = top.unsupplied_buses(net, respect_switches=False)
    assert ub == {14}