コード例 #1
0
    def test_admittance_matrix_powell(self):
        filename = 'data/Sample-Powell-3.1.xlsx'
        builder = power_system_builder.ExcelPowerSystemBuilder(filename)
        system = builder.build_system()

        actual = system.admittance_matrix()
        expected = numpy.array(
            [[
                10.958904 - 25.997397j, -3.424658 + 7.534247j,
                -3.424658 + 7.534247j, 0j, -4.109589 + 10.958904j
            ],
             [
                 -3.424658 + 7.534247j, 11.672080 - 26.060948j,
                 -4.123711 + 9.278351j, 0j, -4.123711 + 9.278351j
             ],
             [
                 -3.424658 + 7.534247j, -4.123711 + 9.278351j,
                 10.475198 - 23.119061j, -2.926829 + 6.341463j, 0j
             ],
             [
                 0j, 0j, -2.926829 + 6.341463j, 7.050541 - 15.594814j,
                 -4.123711 + 9.278351j
             ],
             [
                 -4.109589 + 10.958904j, -4.123711 + 9.278351j, 0j,
                 -4.123711 + 9.278351j, 12.357012 - 29.485605j
             ]])

        numpy.testing.assert_almost_equal(expected, actual, 6)
コード例 #2
0
 def build_solver(filename,
                  max_active_power_error=0.001,
                  max_reactive_power_error=0.001):
     builder = power_system_builder.ExcelPowerSystemBuilder(filename)
     return power_flow_solver.PowerFlowSolver(
         builder.build_system(),
         max_active_power_error=max_active_power_error,
         max_reactive_power_error=max_reactive_power_error)
コード例 #3
0
    def test_admittance_matrix(self):
        filename = 'data/Data.xlsx'
        builder = power_system_builder.ExcelPowerSystemBuilder(filename)
        system = builder.build_system()

        actual = system.admittance_matrix()
        expected = [[
            6.03 - 19.45j, -5 + 15.26j, 0, 0, -1.03 + 4.23j, 0, 0, 0, 0, 0, 0,
            0
        ],
                    [
                        -5 + 15.26j, 9.52 - 30.27j, -1.14 + 4.78j,
                        -1.69 + 5.12j, -1.7 + 5.19j, 0, 0, 0, 0, 0, 0, 0
                    ],
                    [
                        0, -1.14 + 4.78j, 2.54 - 5.11j, -1.4 + 0.36j, 0, 0, 0,
                        0, 0, 0, 0, 0
                    ],
                    [
                        0, -1.69 + 5.12j, -1.4 + 0.36j, 9.93 - 28.83j,
                        -6.84 + 21.58j, 0, 1.8j, 0, 0, 0, 0, 0
                    ],
                    [
                        -1.03 + 4.23j, -1.7 + 5.19j, 0, -6.84 + 21.58j,
                        9.57 - 34.93j, 3.97j, 0, 0, 0, 0, 0, 0
                    ],
                    [
                        0, 0, 0, 0, 3.97j, 6.58 - 17.34j, 0, 0, -1.96 + 4.09j,
                        -1.53 + 3.18j, -3.10 + 6.10j, 0
                    ],
                    [
                        0, 0, 0, 1.8j, 0, 0, 5.33 - 15.19j, -3.9 + 10.37j, 0,
                        0, 0, -1.42 + 3.03j
                    ],
                    [
                        0, 0, 0, 0, 0, 0, -3.9 + 10.37j, 5.78 - 14.77j,
                        -1.88 + 4.4j, 0, 0, 0
                    ],
                    [
                        0, 0, 0, 0, 0, -1.96 + 4.09j, 0, -1.88 + 4.4j,
                        3.84 - 8.5j, 0, 0, 0
                    ],
                    [
                        0, 0, 0, 0, 0, -1.53 + 3.18j, 0, 0, 0, 4.01 - 5.43j,
                        -2.49 + 2.25j, 0
                    ],
                    [
                        0, 0, 0, 0, 0, -3.1 + 6.1j, 0, 0, 0, -2.49 + 2.25j,
                        6.72 - 10.67j, -1.14 + 2.31j
                    ],
                    [
                        0, 0, 0, 0, 0, 0, -1.42 + 3.03j, 0, 0, 0,
                        -1.14 + 2.31j, 2.56 - 5.34j
                    ]]

        numpy.testing.assert_almost_equal(actual, expected, 2)
コード例 #4
0
    def test_dlg_fault_currents(self):
        filename = 'data/data.xlsx'
        builder = power_system_builder.ExcelPowerSystemBuilder(filename, 'BusData', 'LineData', 0)
        ps = builder.build_system()
        fault = power_system_fault.FaultBuilder.build(ps, 'dlg', 5, 0.1)

        np.testing.assert_almost_equal(np.abs(fault.fault_current()), 4.36025, 2)
        np.testing.assert_equal(np.abs(fault.phase_current_a()), 0)
        np.testing.assert_almost_equal(np.abs(fault.phase_current_b()), 22.266, 1)
        np.testing.assert_almost_equal(np.abs(fault.phase_current_c()), 18.351, 1)
コード例 #5
0
    def test_dlg_fault_currents_hw04p4(self):
        filename = 'data/sample-hw04p4.xlsx'
        builder = power_system_builder.ExcelPowerSystemBuilder(filename, 'BusData', 'LineData', 0.01j)
        ps = builder.build_system()
        fault = power_system_fault.FaultBuilder.build(ps, 'dlg', 3, 0)

        np.testing.assert_almost_equal(np.abs(fault.fault_current()), 1.772, 3)
        np.testing.assert_equal(np.abs(fault.phase_current_a()), 0)
        np.testing.assert_almost_equal(np.abs(fault.phase_current_b()), 4.021, 3)
        np.testing.assert_almost_equal(np.abs(fault.phase_current_c()), 4.021, 3)
コード例 #6
0
    def test_ll_fault_currents(self):
        filename = 'data/data.xlsx'
        builder = power_system_builder.ExcelPowerSystemBuilder(filename, 'BusData', 'LineData', 0)
        ps = builder.build_system()
        fault = power_system_fault.FaultBuilder.build(ps, 'll', 4, 0)

        np.testing.assert_almost_equal(np.abs(fault.fault_current()), 20.53350, 2)
        np.testing.assert_equal(np.abs(fault.phase_current_a()), 0)
        np.testing.assert_almost_equal(np.abs(fault.phase_current_b()), 20.533, 3)
        np.testing.assert_almost_equal(np.abs(fault.phase_current_c()), 20.533, 3)
コード例 #7
0
    def test_slg_fault_currents(self):
        filename = 'data/data.xlsx'
        builder = power_system_builder.ExcelPowerSystemBuilder(filename, 'BusData', 'LineData', 0)
        ps = builder.build_system()
        fault = power_system_fault.FaultBuilder.build(ps, 'slg', 2, 0.1)

        np.testing.assert_almost_equal(np.abs(fault.fault_current()), 10.42942, 5)
        np.testing.assert_almost_equal(np.abs(fault.phase_current_a()), 10.429, 3)
        np.testing.assert_equal(np.abs(fault.phase_current_b()), 0)
        np.testing.assert_equal(np.abs(fault.phase_current_c()), 0)
コード例 #8
0
    def test_3p_fault_currents(self):
        # Compare the three phase fault currents to results from PowerWorld.
        filename = 'data/data.xlsx'
        builder = power_system_builder.ExcelPowerSystemBuilder(filename, 'BusData', 'LineData', 0)
        ps = builder.build_system()
        fault = power_system_fault.FaultBuilder.build(ps, '3p', 1, 0)

        np.testing.assert_almost_equal(np.abs(fault.fault_current()), 72.95155, 4)
        np.testing.assert_almost_equal(np.abs(fault.phase_current_a()), 72.952, 3)
        np.testing.assert_almost_equal(np.abs(fault.phase_current_b()), 72.950, 2)
        np.testing.assert_almost_equal(np.abs(fault.phase_current_c()), 72.950, 2)
コード例 #9
0
ファイル: main.py プロジェクト: anasshafawi/project-01
def main():
    args = parse_arguments()
    generator_neutral_impedance = 1j * args.generator_neutral_reactance

    builder = power_system_builder.ExcelPowerSystemBuilder(
        args.input_workbook, args.bus_data_worksheet, args.line_data_worksheet,
        generator_neutral_impedance)
    system = builder.build_system()

    fault_analyzer = fault_analyzer_builder.FaultAnalyzerBuilder.build(
        system, args.fault_type, args.fault_bus, args.fault_impedance)
    print(fault_analyzer.phase_a_current())
コード例 #10
0
    def test_admittance_matrix_2_hw04p4(self):
        filename = 'data/sample-hw04p4.xlsx'
        builder = power_system_builder.ExcelPowerSystemBuilder(filename, 'BusData', 'LineData', 0)
        ps = builder.build_system()

        actual = ps.admittance_matrix_2()
        expected = [[-21.11j, 3.33j, 3.33j, 3.33j],
                    [3.33j, -17.78j, 3.33j, 0],
                    [3.33j, 3.33j, -6.67j, 0],
                    [3.33j, 0, 0, -3.33j]]

        np.testing.assert_array_almost_equal(actual, expected, 2)
コード例 #11
0
ファイル: main.py プロジェクト: htutk/project-01
def main():
    args = parse_arguments()
    generator_neutral_impedance = 1j * args.generator_neutral_reactance

    builder = power_system_builder.ExcelPowerSystemBuilder(
        args.input_workbook, args.bus_data_worksheet, args.line_data_worksheet,
        generator_neutral_impedance)
    system = builder.build_system()
    fault = power_system_fault.PowerSystemFaultBuilder.build(
        system, args.fault_type, args.fault_bus_number, args.fault_impedance)

    print(
        power_system_fault_reporter.report(system, fault,
                                           args.results_bus_number))
コード例 #12
0
    def test_admittance_matrix_2(self):
        filename = 'data/data.xlsx'
        builder = power_system_builder.ExcelPowerSystemBuilder(filename, 'BusData', 'LineData', 0)
        ps = builder.build_system()

        actual = ps.admittance_matrix_1()
        expected = [[-80j, 20j, 0, 10j, 0, 0],
                    [20j, -80j, 0, 0, 10j, 0],
                    [0, 0, -67.14j, 7.14j, 0, 10j],
                    [10j, 0, 7.14j, 0.96 - 37.53j, 20j, 0],
                    [0, 10j, 0, 20j, 0.48 - 50.29j, 20j],
                    [0, 0, 10j, 0, 20j, 1.07 - 30.39j]]

        np.testing.assert_array_almost_equal(actual, expected, 2)
コード例 #13
0
    def test_admittance_matrix_0(self):
        filename = 'data/data.xlsx'
        builder = power_system_builder.ExcelPowerSystemBuilder(filename, 'BusData', 'LineData', 0)
        ps = builder.build_system()

        actual = ps.admittance_matrix_0()
        expected = [[-10j, 6.67j, 0, 3.33j, 0, 0],
                    [6.67j, -210j, 0, 0, 3.33j, 0],
                    [0, 0, -205.71j, 2.38j, 0, 3.33j],
                    [3.33j, 0, 2.38j, 0.96 - 12.76j, 6.67j, 0],
                    [0, 3.33j, 0, 6.67j, 0.48 - 16.96j, 6.67j],
                    [0, 0, 3.33j, 0, 6.67j, 1.07 - 10.39j]]

        np.testing.assert_array_almost_equal(actual, expected, 2)
コード例 #14
0
    def test_buses(self):
        filename = 'data/Sample-Powell-3.1.xlsx'
        builder = power_system_builder.ExcelPowerSystemBuilder(filename)

        actual = builder.build_buses()
        expected = [
            power_system.Bus(1, 0, 0, 0, 1),
            power_system.Bus(2, 0.4, 0.2, 0, 1),
            power_system.Bus(3, 0.25, 0.15, 0, 1),
            power_system.Bus(4, 0.4, 0.2, 0, 1),
            power_system.Bus(5, 0.5, 0.2, 0, 1)
        ]

        self.assertListEqual(expected, actual)
コード例 #15
0
    def test_lines(self):
        filename = 'data/Sample-Powell-3.1.xlsx'
        builder = power_system_builder.ExcelPowerSystemBuilder(filename)

        actual = builder.build_lines()
        expected = [
            power_system.Line(1, 2, 0.05 + 0.11j, 0.01j, None),
            power_system.Line(1, 3, 0.05 + 0.11j, 0.01j, None),
            power_system.Line(1, 5, 0.03 + 0.08j, 0.01j, None),
            power_system.Line(2, 3, 0.04 + 0.09j, 0.01j, None),
            power_system.Line(2, 5, 0.04 + 0.09j, 0.01j, None),
            power_system.Line(3, 4, 0.06 + 0.13j, 0.015j, None),
            power_system.Line(4, 5, 0.04 + 0.09j, 0.01j, None)
        ]

        self.assertListEqual(expected, actual)
コード例 #16
0
    def test_3p_fault_voltages_hw04p4(self):
        filename = 'data/sample-hw04p4.xlsx'
        builder = power_system_builder.ExcelPowerSystemBuilder(filename, 'BusData', 'LineData', 0.01j)
        ps = builder.build_system()
        fault = power_system_fault.FaultBuilder.build(ps, '3p', 3, 0)

        e_0 = fault.bus_voltages_0()
        e_1 = fault.bus_voltages_1()
        e_2 = fault.bus_voltages_2()

        a = np.exp(1j * np.deg2rad(120))
        v_0 = np.add(e_0, np.add(e_1, e_2))
        v_1 = e_0 + np.dot(a ** 2, e_1) + np.dot(a, e_2)
        v_2 = e_0 + np.dot(a, e_1) + np.dot(a ** 2, e_2)

        np.testing.assert_array_almost_equal(np.abs(v_0), [0.66667, 0.66666, 0, 0.66667], 1)
        np.testing.assert_array_almost_equal(np.abs(v_1), [0.66667, 0.66666, 0, 0.66667], 1)
        np.testing.assert_array_almost_equal(np.abs(v_2), [0.66667, 0.66666, 0, 0.66667], 1)
コード例 #17
0
def main():
    """Reads an input file containing system data and initiates power flow computations."""
    args = parse_arguments()

    # Build the power system from an input file.
    start_voltage = args.start_voltage_magnitude * numpy.exp(
        1j * numpy.deg2rad(args.start_voltage_angle))
    builder = power_system_builder.ExcelPowerSystemBuilder(
        args.input_workbook, args.bus_data_worksheet, args.line_data_worksheet,
        start_voltage, args.power_base)
    system = builder.build_system()

    # Initialize the power flow.
    solver = power_flow_solver.PowerFlowSolver(
        system, args.swing_bus_number,
        args.max_active_power_error / args.power_base,
        args.max_reactive_power_error / args.power_base)

    # Iterate towards a solution.
    iteration = 1
    print(
        power_system_reporter.largest_power_mismatch_report(
            iteration, solver.estimates, args.power_base))
    while not solver.has_converged():
        solver.step()
        print(
            power_system_reporter.largest_power_mismatch_report(
                iteration, solver.estimates, args.power_base))
        iteration += 1

    # Produce system reports.
    print(
        power_system_reporter.bus_voltage_report(system,
                                                 args.min_operating_voltage,
                                                 args.max_operating_voltage))
    print(
        power_system_reporter.power_generation_report(
            solver.estimates, args.power_base, args.max_active_power_error,
            args.max_reactive_power_error))
    print(power_system_reporter.line_power_report(system, args.power_base))
コード例 #18
0
    def test_admittance_matrix_nptel(self):
        filename = 'data/Sample-nptel.xlsx'
        builder = power_system_builder.ExcelPowerSystemBuilder(filename)
        system = builder.build_system()

        actual = system.admittance_matrix()
        expected = numpy.array(
            [[2.6923 - 13.4115j, -1.9231 + 9.6154j, 0, 0, -0.7692 + 3.8462j],
             [
                 -1.9231 + 9.6154j, 3.6538 - 18.1942j, -0.9615 + 4.8077j, 0,
                 -0.7692 + 3.8462j
             ],
             [
                 0, -0.9615 + 4.8077j, 2.2115 - 11.0027j, -0.7692 + 3.8462j,
                 -0.4808 + 2.4038j
             ], [0, 0, -0.7692 + 3.8462j, 1.1538 - 5.6742j, -0.3846 + 1.9231j],
             [
                 -0.7692 + 3.8462j, -0.7692 + 3.8462j, -0.4808 + 2.4038j,
                 -0.3846 + 1.9231j, 2.4038 - 11.8942j
             ]])

        numpy.testing.assert_almost_equal(actual, expected, 4)