Power Flow
Contents
Introduction
The objective of the power flow (or load flow) calculation is to determine the steady-state operating conditions of an electrical network. The power flow problem is formulated such that at each bus in the network, the following four variables are solved so as to fully define the power flows in the network:
- Bus voltage magnitude, [math]V \,[/math]
- Bus voltage angle, [math]\delta \,[/math]
- Active power injected into (or consumed at) the bus, [math]P \,[/math]
- Reactive power injected into (or consumed at) the bus, [math]Q \,[/math]
In the simplest case of AC power transmission between two buses connected by a line (as shown in Figure 1), the complex AC power flow at the receiving end bus can be calculated as follows:
- [math]\boldsymbol{S_{r}} = \boldsymbol{V_{r}}\boldsymbol{I}^{*} [/math]
Similarly, the power flow at the sending end bus is:
- [math]\boldsymbol{S_{s}} = \boldsymbol{V_{s}}\boldsymbol{I}^{*} [/math]
where [math]\boldsymbol{V_{s}} = V_{s} e^{-j\phi_{1}} \, [/math] is the voltage and phase angle at the sending end
- [math]\boldsymbol{V_{r}} = V_{r} e^{-j\phi_{2}} \, [/math] is the voltage and phase angle at the receiving end
- [math]\boldsymbol{Z} \, [/math] is the complex impedance of the line.
- [math]\boldsymbol{I} = \frac{\boldsymbol{V_{s}} - \boldsymbol{V_{r}}}{\boldsymbol{Z}} \, [/math] is the current phasor
In power flow calculations, it is generally more convenient to represent impedances as admittances, i.e. [math]\boldsymbol{Y} = \boldsymbol{Z}^{-1} \, [/math] so that the current phasors are calculated by multiplication rather than complex division:
- [math]\boldsymbol{I} = \boldsymbol{Y}(\boldsymbol{V_{s}} - \boldsymbol{V_{r}}) \, [/math]
The equations for the two bus system above form the basis of the power flow calculations. In this article, these equations are extended to larger systems of arbitrary size and topology.
Historical Context
Power flow calculations evolved from the planning departments of electricity utilities in the early 20th century, where they were (and still are) used to simulate the effects of network augmentations, different load scenarios, network configurations, etc. Early power flows were solved by AC network analyzers (or calculating boards), which were analog computers containing resistors, inductors and capacitors calibrated to be a miniature scale equivalent of the actual electrical network. For large systems, these network analysers took up the space of entire rooms. As they were physical in nature, the network analysers needed to be re-wired for each different configuration, augmentation or scenario to be studied.
Starting with the seminal paper by Ward and Hale in 1956 [1], the use of digital computers would enable power flow calculations to be performed faster and in a more flexible manner. The iterative method proposed by Ward and Hale (which became known as the Gauss-Seidel method) was straightforward to implement, but exhibited poor convergence characteristics.
In 1961, Van Ness and Griffin [2] introduced Newton's method for solving power flows (which later became known as the Newton-Raphson method), which had more favourable characteristics but was limited to smaller networks due to computer memory requirements. In their 1967 paper, Tinney and Hart [3] exploited the sparsity properties of the Ybus matrix (and by extension, the Jacobian matrix) and in conjunction with numerical techniques such as triangular factorisation and optimal ordering, were able to make the Newton-Raphson algorithm practical for solving large networks using the computing resources available at the time.
In 1974, Stott and Alsac [4] recognised that in many practical networks there was decoupling between 1) active power and voltage and 2) reactive power and phase angle. The proposed an algorithm (the fast decoupled load flow) that significantly reduced the computational requirements to construct the Jacobian matrix and therefore led to large gains in computational speed (although at the expense of a little accuracy).
Per Unit Representation
To simplify the calculation of admittances / impedances across different voltage levels, it is convenient to use a per-unit representation of the network. By default, most power flow programs use a system-wide MVA base of 100MVA.
Single Phase Representation
In the basic power flow formulation, three-phase systems are represented in single-phase form, based on the assumption that the system is perfectly balanced (e.g. loads and generation are balanced, transmission lines are fully transposed, etc). This assumption holds relatively well for high voltage transmission systems, but begins to break down at smaller scales (e.g. low voltage distribution level), where a full three-phase power flow formulation is necessary.
Using a single-phase representation is convenient as it allows impedances to be formulated as single complex quantities (R + jX) rather than a 3x3 matrix of mutually coupled impedances in a full three-phase representation. Voltages in the single-phase formulation are usually referenced to earth.
Nodal Representation
The electrical network needs to be represented in such a way so that the quantities of interest (e.g. voltage, power flows, etc) can be solved using either nodal analysis or mesh analysis approaches. The nodal method is the standard approach for power flow calculations for several reasons: 1) busbars in the system can be easily translated into nodes, 2) the admittance matrix (without mutual couplings) can be built from inspection, and 3) the nodal method can exploit the sparsity of the admittance matrix.
For example, consider the simple system below consisting of three buses (numbered 1, 2 and 3), two generators (G1 and G2), a load (L2) and a shunt capacitor (C2) connected via transmission lines:
In the nodal representation, the buses are represented as nodes, the generators and load are represented as current injections while the shunt capacitor and lines are represented as admittances:
Note that the line at the bottom represents the reference node, usually taken to be an earth reference. All node voltages are expressed with respect to this reference node.
From Kirchhoff's current law, we can see that the injected currents must equal the sum of the branch currents leaving the node. For example, at node 1:
- [math]\boldsymbol{I}_{1} = \boldsymbol{I}_{12} + \boldsymbol{I}_{13} \, [/math]
- [math] = \boldsymbol{y}_{12}(\boldsymbol{V}_{1} - \boldsymbol{V}_{2}) + \boldsymbol{y}_{13}(\boldsymbol{V}_{1} - \boldsymbol{V}_{3}) \, [/math]
- [math] = (\boldsymbol{y}_{12} + \boldsymbol{y}_{13})\boldsymbol{V}_{1} - \boldsymbol{y}_{12}\boldsymbol{V}_{2} - \boldsymbol{y}_{13}\boldsymbol{V}_{3} \, [/math]
Similarly, at node 2:
- [math]- \boldsymbol{I}_{2} = \boldsymbol{I}_{C2} + \boldsymbol{I}_{21} + \boldsymbol{I}_{23} \, [/math]
- [math] = (\boldsymbol{y}_{12} + \boldsymbol{y}_{22} + \boldsymbol{y}_{23})\boldsymbol{V}_{2} - \boldsymbol{y}_{12}\boldsymbol{V}_{1} - \boldsymbol{y}_{23}\boldsymbol{V}_{3} \, [/math]
Note the negative sign for the current [math] \boldsymbol{I}_{2} [/math] indicating that it is a load and current is leaving the bus as opposed to being injected. Note also the effect of the shunt capacitor, which appears as a self-admittance ([math]\boldsymbol{y}_{22}[/math]).
The general formulation for the current injection at node k of an n-node system is:
- [math]\pm \boldsymbol{I}_{k} = \left( \sum_{i=1}^{n} \boldsymbol{y}_{ki} \right) \boldsymbol{V}_{k} - \sum_{i=1 \neq k}^{n} \boldsymbol{y}_{ki} \boldsymbol{V}_{i} [/math]
- [math] = \boldsymbol{Y}_{kk} \boldsymbol{V}_{k} + \boldsymbol{Y}_{ki} \sum_{i=1 \neq k}^{n} \boldsymbol{V}_{i} [/math] ... Equ. (1)
Bus Admittance Matrix
We saw in Equation 1 above an expression for the current injection at an arbitrary bus in terms of admittances and bus voltages. The current injections for every bus in the network can be calculated using this equation and can be expressed in matrix form as follows:
- [math]\begin{bmatrix} \boldsymbol{I}_{1} \\ \boldsymbol{I}_{2} \\ \vdots \\ \boldsymbol{I}_{n} \\ \end{bmatrix} = \begin{bmatrix} \boldsymbol{Y}_{11} & \boldsymbol{Y}_{12} & \cdots & \boldsymbol{Y}_{1n} \\ \boldsymbol{Y}_{21} & \boldsymbol{Y}_{21} & & \vdots \\ \vdots & & \ddots & \vdots \\ \boldsymbol{Y}_{n1} & \cdots & \cdots & \boldsymbol{Y}_{n1} \end{bmatrix} \begin{bmatrix} \boldsymbol{V}_{1} \\ \boldsymbol{V}_{2} \\ \vdots \\ \boldsymbol{V}_{n} \\ \end{bmatrix} [/math]
Or in compact form:
- [math]\boldsymbol{I} = [Y] \boldsymbol{V} [/math]
where [math]\boldsymbol{I} [/math] is the vector of bus current injections (positive values are injections, negative values are consumptions)
- [math]\boldsymbol{V} [/math] is the vector of bus voltage phasors
- [math][Y] \, [/math] is the bus admittance matrix (more on this below)
The bus admittance (or Ybus) matrix is one of the fundamental building blocks of power system simulations, describing both the topology and admittances / impedances of an electrical network. The diagonal elements of the Ybus matrix are referred to as self-admittances and the off-diagonal elements are mutual admittances.
The Ybus matrix can be constructed from inspection when there are no mutual couplings between branches. The procedure for building the Ybus matrix from inspection follows on readily from Equation 1:
- 1. Self-admittances (diagonal elements): at bus k are the sum of all branch admittances connected to the bus (including shunt admittances to earth):
- [math]\boldsymbol{Y}_{kk} = \sum_{i=1}^{n} \boldsymbol{y}_{ki} \, [/math]
- 2. Mutual admittances (off-diagonal elements): between buses k and i are the negative sum of branch admittances connected between buses k and i:
- [math]\boldsymbol{Y}_{ki} = - \sum_{i=1 \neq k}^{n} \boldsymbol{y}_{ki} \, [/math]
The Ybus matrix is our three bus example above is:
- [math][Y] = \begin{bmatrix} \boldsymbol{y}_{12} + \boldsymbol{y}_{13} & -\boldsymbol{y}_{12} & -\boldsymbol{y}_{13} \\ -\boldsymbol{y}_{12} & \boldsymbol{y}_{12} + \boldsymbol{y}_{22} + \boldsymbol{y}_{23} & -\boldsymbol{y}_{23} \\ -\boldsymbol{y}_{13} & -\boldsymbol{y}_{23} & \boldsymbol{y}_{12} + \boldsymbol{y}_{23}\end{bmatrix} [/math]
The Ybus matrix is a square and symmetric [math]n \times n[/math] matrix with complex values. Normally, it is also very sparse since most practical networks are not densely interconnected and thus have few non-zero branch admittance values.
Note that the Ybus matrix is non-singular only if there are shunt admittances connected (e.g. the shunt capacitor [math] \boldsymbol{y}_{22} [/math] in our three-bus example above). This is easily proved by noticing that without shunt admittances, each row and column of the Ybus matrix sums to zero (i.e. it is a zero-sum matrix) and therefore does not have full rank and is not invertible.
Calculated Bus Power Injections
The power flow problem is most commonly formulated using power injections rather than current injections. Complex power injections at bus k can be calculated from current injections as follows:
- [math]\boldsymbol{S}_{k} = P + jQ = \boldsymbol{V}_{k} \boldsymbol{I}^{*}_{k} [/math] ... Equ. (2)
Given the voltages [math]\boldsymbol{V}_{k} = V \angle \delta [/math] on each bus and the Ybus matrix [math] [Y] \, [/math], the bus power injections (i.e. net active and reactive power flows for the k^{th} bus) can be calculated in rectangular coordinates as follows:
- [math] P_{k} = \sum^{n}_{i=1} |V_{i}| |V_{k}| \left[ G_{ik} \cos (\delta_{k} - \delta_{i}) + B_{ik} \sin (\delta_{k} - \delta_{i}) \right] \, [/math] ... Equ. (3)
- [math] Q_{k} = \sum^{n}_{i=1} |V_{i}| |V_{k}| \left[ G_{ik} \sin (\delta_{k} - \delta_{i}) - B_{ik} \cos(\delta_{k} - \delta_{i}) \right] \, [/math] ... Equ. (4)
Where [math]\boldsymbol{Y}_{ik} = G_{ik} + jB_{ik} \, [/math] are the elements of the Ybus matrix
Classical Formulation of the Power Flow Problem
It was noted earlier that at each bus, four variables ([math]V \, [/math], [math]\delta \, [/math], [math]P \, [/math] and [math] Q\, [/math]) are required to be known to fully define the power flows in the system. To solve the power flow problem, two of the four variables need to be specified (i.e. known) a priori for each bus and the power flow calculation solves for the other two. Typically, power injections at the buses are known (e.g. measured or estimated loads or dispatched generation at the bus) and are therefore normally specified. As a result, the bus voltages and angles are generally the unknown variables to be solved.
Therefore in the classical formulation, the power flow problem is constructed as a set of non-linear algebraic power equations for the unknown variables in the system (bus voltage magnitudes and angles). The aim of the power flow calculation is to arrive at values for bus voltages and angles such that the the mismatch error between the specified and calculated power injections at each bus are within a pre-specified error tolerance.
Types of Buses
As discussed earlier, two variables of the four bus variables need to be specified at each bus. The two specified variables do not have to be the same for every bus, which leads to the definition of the following common bus types:
- (1) Swing (or slack) bus [SW]: since network losses are not known a priori, a swing bus is required where the voltage is specified, but the active power injected into the bus is unknown. The swing bus is usually designated as the voltage reference for the system. In practice, the swing bus would be analogous to a large generator responsible for load-frequency control or the point of common coupling to a larger external grid. Specified variables: [math]V \, [/math], [math]\delta \, [/math]
- (2) Voltage controlled bus [PV]: in the PV bus, the active power injected into the bus is specified along with the voltage magnitude. PV buses are typically used to represent generators where the active power injected is the generator dispatch power and an automatic voltage regulator controls the bus voltage magnitude to a specified value. PV buses can also be used for reactive power support devices which control the bus voltage to a specified value e.g. SVCs, synchronous condensers, STATCOMs, etc (in such cases, the P active power injected is zero). Specified variables: [math]P \, [/math], [math] V\, [/math]
- (3) Constant power bus [PQ]: in the PQ bus, the active and reactive power injected into (or consumed at) the bus is specified. PQ buses are typically used to represent constant power loads (e.g. residential, industrial, etc), where it is assumed that the active and reactive power injections are not affected by small variations in bus voltages (at steady state). Specified variables: [math]P \, [/math], [math] Q\, [/math]
Power Mismatch Vector
The power mismatch vector is defined as a vector of the differences between the specified and calculated power injections at each bus. The power mismatch at bus k in complex form is calculated as follows:
- [math]\Delta\boldsymbol{S}_{k} = \boldsymbol{S}_{k}^{spec} - \boldsymbol{S}_{k}^{calc} [/math]
where [math]\boldsymbol{S}_{k}^{spec} [/math] is the specified complex power injection at bus k
- [math]\boldsymbol{S}_{k}^{calc} [/math] is the calculated complex power injection at bus k (i.e. from Equation 2)
The power mismatches can also be expressed in rectangular form where the calculated active and reactive power injections are computed using Equations 3 and 4 respectively, i.e.
- [math]\Delta P_{k} = P_{k}^{spec} - P_{k}^{calc} \, [/math]
- [math]\Delta Q_{k} = Q_{k}^{spec} - Q_{k}^{calc} \, [/math]
General Solution Procedure
- 1. Formulate the network Ybus matrix
- 2. Select a swing bus for the network
- 3. For all other buses, define the bus type (e.g. PQ or PV) and specify the known variables
- 4. Select initial voltages and angles for all buses. Commonly, a flat start is used where all voltages are initialised at [math]1 \angle 0 = 1 + j0 \, [/math] pu. Alternatively, a previously calculated power flow solution ("solved case") can be used.
- 5. Calculate the power mismatch vector by using the initial voltages in Step 4 and the specified power injections in Step 3.
- 6. Apply an iteration method (e.g. Newton-Raphson, Gauss-Seidel, etc) to get next iteration of bus voltages
- 7. Re-calculate the power mismatch vector and check if the power mismatches are within a pre-specified error tolerance, e.g. 0.001pu. If so, then the solution has been reached successfully. If not, then continue iterating (Step 6-7) until the solution is reached or stop after a maximum number of iterations.
Iteration Methods
The formulation of the power flow problem is generic, but there are a number of options for the iteration method used to solve the non-linear equations. The most common methods are as follows:
- Gauss-Seidel method
- Newton-Raphson method
- Decoupled Newton-Raphson method
- DC power flow method
- Newton-Krylov methods
References
- [1] Ward, J. B., and Hale, H. W., "Digital Computer Solution of Power Flow Problems", AIEE Tansactions on Power Apparatus and Systems, vol PAS-75, pp. 398-404, June 1956
- [2] Van Ness, J. E., and Griffin, J. H., "Elimination methods for flow studies" Trans. IEEE Transactions on Power Apparatus and Systems, Vol. PAS-80, p. 299, June 1961.
- [3] Tinney, W. H., and Hart, C. E., "Power Flow Solution by Newton's Method", IEEE Transactions on Power Apparatus and Systems, Vol. PAS-86, No. 11, November 1967
- [4] Stott, B., and Alsac, O., "Fast Decoupled Load Flow", IEEE Transactions on Power Apparatus and Systems, Vol. PAS-93, No. 3, May 1974