e2nIEE / pandapower
1
# -*- coding: utf-8 -*-
2

3
# Copyright 1996-2015 PSERC. All rights reserved.
4
# Use of this source code is governed by a BSD-style
5
# license that can be found in the LICENSE file.
6

7
# Copyright (c) 2016-2021 by University of Kassel and Fraunhofer Institute for Energy Economics
8
# and Energy System Technology (IEE), Kassel. All rights reserved.
9

10

11 1
"""Solves a DC power flow.
12
"""
13

14 1
from numpy import copy, r_, transpose, real, array
15 1
from scipy.sparse.linalg import spsolve
16

17 1
def dcpf(B, Pbus, Va0, ref, pv, pq):
18
    """Solves a DC power flow.
19

20
    Solves for the bus voltage angles at all but the reference bus, given the
21
    full system C{B} matrix and the vector of bus real power injections, the
22
    initial vector of bus voltage angles (in radians), and column vectors with
23
    the lists of bus indices for the swing bus, PV buses, and PQ buses,
24
    respectively. Returns a vector of bus voltage angles in radians.
25

26
    @see: L{rundcpf}, L{runpf}
27

28
    @author: Carlos E. Murillo-Sanchez (PSERC Cornell & Universidad
29
    Autonoma de Manizales)
30
    @author: Ray Zimmerman (PSERC Cornell)
31

32
    # Version from pypower github (bugfix 'transpose')
33
    """
34 1
    pvpq = r_[pv, pq]
35

36
    ## initialize result vector
37 1
    Va = copy(Va0)
38

39
    ## update angles for non-reference buses
40 1
    if pvpq.shape == (1, 1): #workaround for bug in scipy <0.19
41 0
        pvpq = array(pvpq).flatten()
42 1
    pvpq_matrix = B[pvpq.T,:].tocsc()[:,pvpq]
43 1
    ref_matrix = transpose(Pbus[pvpq] - B[pvpq.T,:].tocsc()[:,ref] * Va0[ref])
44 1
    Va[pvpq] = real(spsolve(pvpq_matrix, ref_matrix))
45

46 1
    return Va

Read our documentation on viewing source code .

Loading