Set 17 — The Bus Admittance Matrix
Twenty worked problems on the matrix as a tool rather than an object. Buses carrying no injection can be eliminated exactly, turning a large network into a small equivalent; the same elimination, stopped early, is the factorisation that solves the network. Dropping the resistances and the voltage magnitudes gives a linear model accurate enough for most of what a control room does, and differentiating that model gives the sensitivities on which every contingency screen depends. The five-bus system of Set 16 carries throughout.
Kron reduction. Eliminating bus \(p\), which carries no injection, gives \(Y_{ij}^{\text{new}} = Y_{ij} - \dfrac{Y_{ip}Y_{pj}}{Y_{pp}}\). It is one step of Gaussian elimination, and it is exact — no approximation is involved.
Elimination creates fill-in. Removing a bus of degree \(d\) connects all \(d(d-1)/2\) pairs of its neighbours. Eliminating low-degree buses first is the standard ordering, and on the five-bus system it makes the difference between zero fill-in and six new terms.
\(\mathbf{Z}_{\text{bus}} = \mathbf{Y}_{\text{bus}}^{-1}\) is full. Every bus is connected to every other through some path, so no element of the impedance matrix is zero. Sparsity is a property of admittance alone.
A load-flow \(\mathbf{Y}_{\text{bus}}\) must not be inverted for a fault study. Without generator reactances the only path to ground is the line charging, so the inverse is nearly uniform and enormous. The machines must be added to the diagonals first.
The DC power flow. Setting \(r = 0\), \(|V| = 1\) and \(\sin\delta \approx \delta\) gives \(\mathbf{P} = \mathbf{B}\boldsymbol{\theta}\) — linear, non-iterative, always convergent, and typically within a few per cent on real power.
Distribution factors. Because the DC model is linear, the redistribution of flow after an outage is a fixed set of ratios independent of the loading. One matrix of factors screens every contingency without a single further solution.
Conditioning. The load-flow matrix of the five-bus system has a condition number of 1253; adding generator reactances brings it to 49. A weak connection to the reference is what makes a network matrix ill-conditioned.
List the structural properties of the bus admittance matrix, verify each on the five-bus matrix of Set 16, and state which of them survive the presence of a phase shifter.
The six properties that every algorithm in Part 4 relies on:
Property 4 quantified. Splitting the five-bus matrix:
Because every line in this system has \(x/r = 3\). In a real 400 kV network the ratio is 8 to 15, and it is that dominance of \(\mathbf{B}\) over \(\mathbf{G}\) which justifies the decoupling of Problems 12 and 17.
Property 6 verified. The determinant is non-zero and the matrix inverts — but only just. Its condition number is 1253, which Problem 11 shows is a warning rather than a reassurance.
Under a phase shifter, property 2 fails and properties 5 and 6 need care:
An off-nominal real tap keeps the symmetry and breaks only the row-sum property. Only the complex tap breaks symmetry.
What each property buys. The list is not decorative — each one is exploited by name:
Given the injections at every bus, the voltages follow from \(\mathbf{V} = \mathbf{Y}^{-1}\mathbf{I}\). Explain why no program ever computes that inverse, and set out what is done instead.
Three separate objections to forming the inverse, in increasing order of importance:
The third is decisive. A 10 000-bus network's \(\mathbf{Y}\) has 40 000 non-zeros and its inverse has \(10^{8}\).
What is done instead — triangular factorisation. Write \(\mathbf{Y} = \mathbf{L}\mathbf{U}\) and solve in two passes:
And because \(\mathbf{Y}\) is symmetric, the sharper form \(\mathbf{Y} = \mathbf{L}\mathbf{D}\mathbf{L}^{T}\) stores only \(\mathbf{L}\) and \(\mathbf{D}\) — half the work and half the memory.
The factors inherit the sparsity, up to the fill-in of Problem 5. With good ordering the number of non-zeros in \(\mathbf{L}\) is a small multiple of that in \(\mathbf{Y}\), so the factorisation is a sparse object and the two substitutions are \(O(n)\) rather than \(O(n^{2})\).
The decisive economy is re-use. A load flow solves the same network with a different right-hand side at every iteration:
A contingency study exploits this to the limit: factorise the intact network once, then handle each outage by a rank-one correction to the solution rather than a new factorisation — which is exactly what the distribution factors of Problem 16 are.
And there is a deeper reason. The load-flow problem is not \(\mathbf{I} = \mathbf{Y}\mathbf{V}\) at all. The injections are specified as power, so
which depends on the unknown voltage. The system is nonlinear and no inverse solves it in one step; the linear solve above is only the inner loop of an iteration. Sets 19 and 20 are two ways of wrapping it.
Derive the Kron reduction formula for eliminating a bus that carries no injected current, and show that it is exact.
The condition. Bus \(p\) has \(I_p = 0\) — no generator, no load, no shunt injection. A pure junction. Its row of the nodal equation reads
Solve for the eliminated voltage:
The voltage at a junction is determined by its neighbours — it carries no independent information, which is precisely why it can be removed without loss.
Substitute into every other row. Row \(i\) is
The reduced matrix:
Applied to every \(i, j \ne p\). The result is \((n-1)\times(n-1)\) and describes the remaining buses exactly — no approximation entered anywhere. All that was used was \(I_p = 0\).
It is Gaussian elimination. The formula is precisely one pivot step on row and column \(p\). Kron reduction, node elimination, Gaussian elimination and the Schur complement are four names for the same operation:
In block form the same expression eliminates a whole group of buses at once — which is how the external equivalents of Problem 18 are computed.
The physical reading. \(-Y_{ip}Y_{pj}/Y_{pp}\) is a new admittance between buses \(i\) and \(j\) representing the path through the eliminated bus. For the simple case of a bus joining just two others by \(y_1\) and \(y_2\):
which is two admittances in series — the elementary result, recovered. Eliminating a bus of degree three gives the star–delta transformation, and of degree \(d\) the star–mesh.
Eliminate bus 3 from the five-bus matrix and present the reduced \(4\times4\). Identify what has appeared and what has changed.
The pivot is \(Y_{33} = 12.9167 - j38.6950\), and the third row and column are
One entry in full. For \(i = 1\), \(j = 4\), which was zero:
Buses 1 and 4, previously unconnected, now have a direct term — the path through bus 3.
The reduced matrix for buses 1, 2, 4, 5:
What appeared. One new connection, 1–4, where none existed. Bus 3 had degree three — neighbours 1, 2 and 4 — so elimination should create up to \(3\times2/2 = 3\) new terms:
Only one genuine fill-in, because two of the three neighbour pairs were already joined. The meshed structure of the network limited the damage.
What changed most. \(Y_{24}\) went from \(-1.6667+j5.0\) to \(-2.9570+j8.8765\) — the direct 2–4 branch plus the strong path through bus 3, whose 3–4 branch was the stiffest in the network. And \(Y_{44}\) fell from \(12.9167-j38.6950\) to \(5.1748-j15.4362\), because most of what made bus 4 stiff was its connection to the eliminated bus.
The check. Row 5 is untouched, since bus 5 was not adjacent to bus 3 and \(Y_{53} = 0\) kills every correction term in that row. That is the general rule: elimination touches only the eliminated bus's neighbours, which is why sparse elimination is cheap.
Four buses are to be eliminated from the five-bus system, leaving one. Count the fill-in created by four different elimination orders, and state the rule.
The degrees in the intact network:
The counts, tracking new non-zeros created at each step:
Each new connection is two matrix entries, so the worst order fills six of the matrix's six zero positions and the best fills none.
Why eliminating bus 1 is free. Bus 1 has neighbours 2 and 3, which are already joined by a branch. The single pair it can connect is already connected, so the elimination modifies \(Y_{23}\) and creates nothing.
Why eliminating bus 2 first is costly. Bus 2's four neighbours are 1, 3, 4 and 5, giving six pairs:
Three new connections at the first step alone — and the matrix is now completely full, so the remaining eliminations create nothing further because there is nothing left to create.
The rule, and its limits. The standard heuristics, in increasing sophistication:
Tinney's three schemes, published in 1967 and still the reference. Finding the optimal order is NP-hard, so all three are heuristics; scheme 2 is the usual compromise and is what most production software uses.
The stakes are not small. On a 2000-bus network a poor ordering can produce ten times the fill-in of a good one, and since the substitution cost scales with the number of non-zeros in the factors, that is ten times the cost of every iteration of every study. The ordering is computed once and re-used for the life of the network model.
Reduce the five-bus system to an equivalent seen from buses 1 and 5 alone, and interpret the result as a circuit.
Eliminate buses 4, 3 and 2 in turn by the formula of Problem 3, applied repeatedly. The result is \(2\times2\):
Read it as a \(\pi\). The series element is the negative of the off-diagonal:
The whole network between buses 1 and 5 has collapsed to a single impedance of \(0.0431+j0.1303\).
The shunts are the row sums:
Each far larger than the original charging at those buses — \(j0.055\) and \(j0.040\) — because the equivalent shunt now absorbs all the charging of the eliminated interior as well.
The small real parts in the shunts are the interesting detail. No shunt conductance existed anywhere in the original network, yet \(+0.00027\) has appeared. Elimination creates equivalent conductance because the interior branches have resistance and the charging current flowing through them dissipates real power — a loss that must be represented somewhere once the interior buses are gone.
Comparison with the direct route. The shortest path from bus 1 to bus 5 is 1–2–5, of impedance \(0.06+j0.18\):
The parallel paths through buses 3 and 4 reduce the effective impedance by 28%. That is the value of the mesh, quantified in one number.
What the equivalent may and may not be used for. It reproduces the relation between injections and voltages at buses 1 and 5 exactly — for any injections at those two buses, so long as buses 2, 3 and 4 carry none. The moment a load is placed at bus 3, the equivalent is wrong, because the derivation assumed \(I_3 = 0\).
Explain why the bus impedance matrix has no zero elements even when its inverse is mostly zeros, and state the physical meaning of \(Z_{ij}\).
The definitions, obtained by setting all injections but one to zero:
The voltage appearing at bus \(i\) when one ampere is injected at bus \(j\) and nowhere else. \(Z_{ii}\) is the driving-point impedance; \(Z_{ij}\) the transfer impedance.
Contrast with \(Y_{ij}\), which is defined with all voltages but one held at zero:
Shorting every other bus to ground isolates bus \(i\) from everything except its immediate neighbours — the shorted buses block every longer path. That is why \(\mathbf{Y}\) is sparse.
The impedance definition has no such blocking. Open-circuiting the other buses does not isolate anything; the injected current flows out through the network and raises the voltage at every bus connected to it by any path whatever. Since a power network is connected, no \(Z_{ij}\) can be zero.
The five-bus case. Its \(\mathbf{Y}\) has six zeros out of 25; its inverse has none:
\(Z_{14}\) is non-zero although \(Y_{14}\) is zero — buses 1 and 4 share no branch, but they are certainly connected.
The one exception is a genuinely disconnected network. If a subnetwork has no path at all to the rest, then \(Z_{ij} = 0\) between the parts — and the matrix is block-diagonal, which in practice means somebody has left an island in the data.
The consequence for computation is severe and unavoidable. Storing \(\mathbf{Z}_{\text{bus}}\) for a 10 000-bus network needs 1.6 GB against the 0.64 MB of \(\mathbf{Y}\). Real fault programs therefore never form the whole matrix: they build only the columns needed for the buses actually being faulted, by solving \(\mathbf{Y}\mathbf{z}_j = \mathbf{e}_j\) with the existing factorisation — one substitution per column.
Invert the five-bus admittance matrix and examine the result. Explain why the answer is useless for the purpose it is usually wanted for.
The inverse:
Every entry is about \(-j3.45\). The twenty-five elements span 3.385 to 3.464 in magnitude — a spread of 2%. The driving-point impedances at five electrically very different buses are all but identical, which cannot be physically right.
The reason. The only paths to the reference in this network are the line-charging susceptances, totalling
Exactly the value every element is near. The network floats on a very weak connection to earth, and the series branches — thousands of times stiffer than that connection — tie all five buses together into what is effectively a single node.
The physical statement. Inject 1 pu at any bus and it must return to the reference through \(j0.290\) of charging, raising the whole network by 3.45 pu together. The differences between buses — the useful part — are the tiny variations in the third decimal place.
Why this matters. \(\mathbf{Z}_{\text{bus}}\) is wanted almost entirely for fault studies, where the fault current at bus \(i\) is
Twenty-nine per cent of rated current as a three-phase fault current. Real fault levels are 5 to 20 times rated. The answer is wrong by a factor of about twenty-five, and it is wrong for a reason that has nothing to do with the arithmetic.
What is missing. The generators. A load-flow \(\mathbf{Y}_{\text{bus}}\) represents machines as injections, not as impedances, so there is no path from any bus to the reference through a source. In a fault study the machines are exactly what supplies the current, and they must appear as shunt admittances on the diagonal — the subject of the next problem.
Generators at buses 1 and 2 have subtransient reactances of \(j0.25\) and \(j0.20\) pu. Add them, invert, and compute the three-phase fault current at every bus.
The modification. A machine behind its subtransient reactance is a source in series with \(jx''_d\); for the fault network the source is replaced by a short to the reference, leaving a shunt admittance:
Two diagonal entries. Nothing else changes.
The inverse is now a different object entirely:
A spread of 65% between the strongest and weakest bus, against 2% before. The matrix now distinguishes the buses, because there is now something to distinguish them by.
The fault currents, with a prefault voltage of 1.0 pu:
Five to eight times rated — the right order of magnitude, and the ordering makes sense: the generator buses are strongest, and bus 5, furthest from both machines, is weakest.
The ranking is the useful output. Bus 2 has the highest fault level despite bus 1 having the larger prefault voltage in the load flow, because bus 2 has the stiffer machine and four connections. Circuit-breaker ratings are selected on exactly this number, so the ordering matters more than the absolute values.
Two cautions on the model. The real parts of \(Z_{ii}\) are 3–15% of the imaginary parts, so neglecting resistance — as classical fault analysis does — overstates the current by under 1%, which is acceptable. But the loads have been omitted entirely, and representing them as constant impedances would add shunt paths and raise the fault levels by a few per cent more. Standards prescribe which of these to include for which purpose.
Using the fault-study impedance matrix, interpret the off-diagonal elements, and compute the voltage at every bus during a solid three-phase fault at bus 5.
The relation for a fault at bus \(k\). A solid fault draws \(I_f = V_k^{(0)}/Z_{kk}\) out of bus \(k\), and by superposition the voltage at any bus \(i\) becomes
Taking all prefault voltages as 1.0. The whole of classical fault analysis is in this one line, and it needs only column \(k\) of \(\mathbf{Z}_{\text{bus}}\).
Column 5 of the fault-study matrix:
The fault current is \(1.0/(0.0317+j0.2102) = 4.705\angle-81.4^\circ\) pu, and the voltages follow:
The retained voltage is \(|1 - Z_{i5}/Z_{55}|\), computed as a complex quantity — which is why bus 1 keeps 0.517 rather than the 0.502 that subtracting magnitudes would give. Bus 5 collapses to zero by definition; bus 1, electrically furthest away, retains half.
The transfer impedance is a measure of electrical distance. \(|Z_{i5}/Z_{55}|\) runs from 0.50 at bus 1 to 0.67 at bus 4 — the ratio is the fraction of the voltage lost, and it grows with proximity to the fault. Bus 4, adjacent to bus 5, suffers most.
Why this matters operationally. A three-phase fault anywhere on this network depresses every bus to between one third and one half of nominal until the fault is cleared. Induction motors stall below about 0.7 pu, so a fault at bus 5 will trip or stall motor load across the entire system — which is why clearing times are specified in cycles and why the voltage-dip profile, not just the fault current, is part of a protection study.
The economy of the method. Every quantity above came from one column of \(\mathbf{Z}_{\text{bus}}\), obtained by a single forward-and-back substitution on the existing factorisation of \(\mathbf{Y}\). Faulting all five buses needs five columns; faulting a 10 000-bus network at fifty selected buses needs fifty. The full matrix is never required.
Compute the condition number of the two admittance matrices of Problems 8 and 9, and explain what makes a network matrix ill-conditioned.
The definition. For a matrix solved by any direct method,
The ratio of the largest to the smallest singular value. A relative perturbation \(\varepsilon\) in the data can produce a relative error up to \(\kappa\varepsilon\) in the solution.
The two values:
A factor of 26, produced by adding two numbers to two diagonal entries.
What the 1253 means in practice. Double precision carries about sixteen significant digits, so
Thirteen digits survive — perfectly adequate. Conditioning becomes a numerical problem only when \(\kappa\) approaches \(10^{12}\), which real networks do not reach. The 1253 is a warning about the model, not about the arithmetic.
The cause, identified. A near-singular network matrix means a near-null vector — a direction in which the network barely responds:
The all-ones vector — every bus raised together. With only \(j0.29\) of shunt in the whole network, that costs almost no current, so the matrix is nearly singular in that one direction. Adding the machine reactances, forty times stiffer, removes it.
The three real sources of ill-conditioning in power network matrices:
The second is the one that bites: a jumper or a bus-tie modelled as a line of 0.0001 pu produces an admittance of 10 000 next to neighbours of 5, and the matrix genuinely loses digits. The remedy is to merge the two buses rather than to model the connection.
And the third, historically. Before the per-unit system, a network spanning 11 kV to 400 kV had impedances differing by \((400/11)^{2} \approx 1300\) before any network effect was considered. Per unit removes that entirely — which is a numerical benefit of the method that Set 3 did not mention, and arguably its most important one.
Derive the DC power flow from the exact power relations, stating each approximation and its justification, and estimate the error it introduces.
The exact injection at bus \(i\), from the nodal equation:
With \(\theta_{ij} = \theta_i - \theta_j\). Nonlinear in both magnitude and angle.
The four approximations, each with its warrant:
What survives:
Linear, real, and with \(\mathbf{B}\) built from the reactances alone. It is called the DC power flow because it has the algebraic form of a resistive DC network, with \(\theta\) as voltage, \(P\) as current and \(x\) as resistance.
The branch flow follows directly:
Independent of the voltage magnitudes and of every other branch — which is what makes the distribution factors of Problem 16 possible.
What it gets and what it loses:
Where it is used, and it is used constantly. Security-constrained dispatch, market clearing and locational pricing, transmission planning screens, and every contingency ranking. Anywhere thousands of cases must be solved and 5% on real power is acceptable, the DC model is the tool — and the guarantee of convergence is worth as much as the speed, because an AC load flow that fails to converge in an automated screen has no answer to report at all.
Form the DC power flow matrix for the five-bus system and compare it with the imaginary part of \(\mathbf{Y}_{\text{bus}}\).
The rule is that of Set 16 with \(y_{ij}\) replaced by \(1/x_{ij}\) and all shunts dropped:
The matrix:
Real, symmetric, and with every row summing to exactly zero.
Compare with \(-\operatorname{Im}(\mathbf{Y}_{\text{bus}})\):
Every off-diagonal differs by exactly \(1/0.9 = 1.111\), because \(-\operatorname{Im}(y) = x/(r^{2}+x^{2})\) against the DC model's \(1/x\), and with \(x/r = 3\) throughout the ratio is \(1 + (r/x)^{2} = 1.111\).
So the two are not the same matrix — a point that is often blurred. \(\mathbf{B}\) uses \(1/x\); \(-\operatorname{Im}\mathbf{Y}\) uses \(x/|z|^{2}\) and includes the charging. They coincide only for a lossless network with no shunts.
Singularity, and the fix. Every row of \(\mathbf{B}\) sums to zero — there are no shunts at all — so \(\mathbf{B}\) is singular:
Physically: adding a constant to every angle changes no flow, so the angles are determined only up to a constant. The remedy is to fix one — the slack bus, \(\theta_1 = 0\) — and delete its row and column, leaving an invertible \(4\times4\).
The deleted matrix is a graph Laplacian, weighted by \(1/x\) and grounded at one node. Its inverse gives the angle sensitivities directly, and its eigenvalues describe how the network responds to injections at different spatial scales — the same object that describes heat conduction on a graph, and the reason spectral methods for network partitioning transfer directly to power system islanding.
Solve the DC power flow for the standard loading: bus 1 slack, bus 2 net injection \(+0.20\), buses 3, 4 and 5 loads of \(0.45\), \(0.40\) and \(0.60\) pu. Find the angles and every branch flow, and verify.
The system to solve, with row and column 1 deleted and \(\theta_1 = 0\):
The angles:
All negative, and monotonically more so with distance from the slack — power flows downhill in angle, and bus 1 is the source.
The branch flows, each \((\theta_i - \theta_j)/x_{ij}\):
Positive means flow from the first bus to the second. Every flow is in the direction of decreasing angle, as it must be.
The verification is bus by bus. Injection must equal the net outflow:
Every bus balances exactly. The slack picks up 1.25 pu, which is the total load 1.45 less the 0.20 generated at bus 2 — with no losses, because the DC model has none.
The missing losses are the model's chief limitation here. The AC solution of Set 19 will show a slack generation nearer 1.30 pu, the extra 5 MW being \(I^{2}R\). On a network with \(x/r = 3\) that is a 4% error in the slack injection — larger than on a real transmission system, where \(x/r\) is three to five times higher and the loss is 1–2%.
The largest flow is 1–2 at 85 MW, and the smallest is 4–5 at 6 MW. Branch 3–4, by far the stiffest in the network, carries only 19 MW — a reminder that a low impedance attracts flow only if there is a reason for power to go that way. Impedance sets the division between paths; injections set the amount.
Line 3–4 is lost. Re-solve the DC power flow and identify where its 18.9 MW has gone.
Remove the branch from \(\mathbf{B}\) — four entries, as in Set 16 — and re-solve. The new angles:
Bus 3 has risen and bus 4 has fallen sharply. Buses 4 and 5 are now at exactly the same angle.
The flows:
Where the 18.9 MW went. Two-thirds of it re-routed onto 2–4:
Exactly two thirds and one third. The remaining changes are the consequential rearrangement upstream — bus 3's supply shifts from bus 2 to bus 1 by 0.0707 pu.
Branch 4–5 goes to exactly zero. With 3–4 gone, bus 4's only supply is 2–4, and bus 4 now takes exactly its own 0.40 pu; bus 5 takes exactly its 0.60 from 2–5. The two buses reach the same angle and nothing crosses between them. The DC model makes such degeneracies exact and visible.
The security assessment. No branch has increased by more than 0.126 pu, and the largest post-outage flow is 0.925 on 1–2. Whether that is acceptable depends on the ratings, but the shape of the answer is what matters: the outage of the network's stiffest branch is absorbed comfortably, because bus 4 had an alternative supply of similar strength. An outage of 2–4 or 2–5 would be more serious.
And the slack is unchanged at 1.25 pu. In a lossless model the total generation cannot depend on the network's configuration; only its routing can. In the AC model the slack would rise, because the longer paths are lossier — which is one of the things a DC screen cannot see.
Derive the line-outage distribution factor, compute the full set for the outage of line 2–5, and verify against a direct re-solution.
The definition. The LODF of branch \(mn\) with respect to the outage of branch \(kl\) is
The change in one flow as a fraction of what the outaged branch was carrying. Because the DC model is linear, this ratio does not depend on the loading at all.
The derivation, in outline. Removing branch \(kl\) is equivalent to leaving it in place and injecting a compensating pair \(+P\) at \(k\) and \(-P\) at \(l\) such that the net flow in it becomes zero. Writing \(\mathbf{X} = \mathbf{B}^{-1}\) with the slack row and column zeroed:
The numerator is the sensitivity of flow \(mn\) to the injection pair; the denominator is the correction that makes the outaged branch carry nothing.
The factors for the outage of 2–5:
The 1.0 on branch 4–5 is exact and obvious in hindsight: with 2–5 out, bus 5's only remaining supply is 4–5, so every megawatt that was arriving by 2–5 must now arrive by 4–5. A distribution factor of unity always signals that the receiving bus has become radially fed.
The verification. The base flow on 2–5 was 0.5371 pu, so the predicted post-outage flows are \(P^{(0)} + d\times0.5371\):
Exact to every figure carried. The distribution factors are not an approximation to the DC model — within it they are the answer.
The economics of the method. For \(e\) branches there are \(e^{2}\) factors, computed once from one factorisation of \(\mathbf{B}\). Thereafter every single-branch contingency is screened by one multiplication and one addition per branch:
Three thousand contingencies on a three-thousand-branch network become nine million multiply-adds — under a second. This is what runs every few minutes in every control room.
Form the two constant matrices \(\mathbf{B}'\) and \(\mathbf{B}''\) used by the fast-decoupled load flow, explain why they differ, and evaluate the difference on the five-bus system.
The scheme. The fast-decoupled method replaces the Jacobian of Set 20 by two fixed real matrices:
Both are formed once and factorised once, for the whole solution — the entire economy of the method.
\(\mathbf{B}'\) is built for the angle problem and drops everything that does not affect it: the resistances, the shunts, and the off-nominal tap ratios.
Which is exactly the DC power flow matrix of Problem 13.
\(\mathbf{B}''\) is built for the voltage problem and retains the shunts, because a capacitor's whole purpose is to affect voltage:
Retaining the charging and any capacitors and reactors, but excluding the rows and columns of the voltage-controlled buses, whose magnitudes are fixed.
The two matrices for this system:
A systematic 10% difference, plus the shunt terms on the diagonals.
Why the asymmetry of treatment is right. The two sub-problems have different sensitivities:
Stott and Alsac arrived at these choices empirically in 1974 and then justified them; the pairing that converges best is not the one a symmetric derivation would produce.
What the constancy buys. Newton–Raphson rebuilds and refactorises an \(2n\times2n\) complex Jacobian at every iteration; the fast-decoupled method factorises two real \(n\times n\) matrices once:
Typically 8–15 iterations against 4–5, each perhaps a twentieth of the cost — a net gain of three to five times, and more on large systems.
Buses 3, 4 and 5 belong to a neighbouring utility whose detailed model is unavailable. Build a Ward equivalent retaining buses 1 and 2, including the equivalent injections, and state what it does and does not preserve.
The partition. Retained \(R = \{1,2\}\), external \(E = \{3,4,5\}\). In block form:
Eliminate \(\mathbf{V}_E\), but this time without assuming the external injections are zero:
Two products: the reduced admittance matrix — the block Kron reduction of Problem 3 — and a set of equivalent injections at the boundary that carry the external loads.
The equivalent network:
Against the direct 1–2 line's \(0.02+j0.06\). The parallel routes through the external system have reduced the effective impedance between the two retained buses by 16%.
The equivalent shunts are the row sums:
Both far above the original \(j0.055\) and \(j0.085\), having absorbed the external system's charging.
The equivalent injections. With the external loads \(0.45+j0.15\), \(0.40+j0.05\) and \(0.60+j0.10\) at unit voltage, so \(\mathbf{I}_E = -[0.45-j0.15,\ 0.40-j0.05,\ 0.60-j0.10]^{T}\):
The external system's total load of 1.45 pu has been split between the two boundary buses in the ratio 0.24 to 1.22 — bus 2, which had three of the four connections into the external system, carries five sixths of it.
What is preserved and what is not:
Explain the role of the admittance matrix in state estimation, count the states and the measurements needed for the five-bus system, and state the observability condition.
The problem. A control room receives hundreds of measurements — flows, injections, voltage magnitudes — all noisy and some wrong. State estimation finds the voltage profile that best explains them:
With \(\mathbf{z}\) the measurements, \(\mathbf{x}\) the state, \(\mathbf{W}\) the inverse measurement covariance, and \(\mathbf{h}\) the model.
\(\mathbf{Y}_{\text{bus}}\) is \(\mathbf{h}\). Every measurement function is written through it:
So the estimator's accuracy is bounded by the network model's accuracy — a wrong line impedance produces a consistent, plausible and wrong state.
The state count. For \(n\) buses the state is \(2n-1\) quantities: \(n\) magnitudes and \(n-1\) angles, one angle being the reference:
The measurement count. Nine is the bare minimum, and no estimator is run at that number:
Redundancy is not a luxury: with \(m = 9\) a single bad measurement is absorbed silently into the estimate. Utilities design for a redundancy of 2 to 4.
Observability is topological, not numerical. The condition is that the measurement Jacobian have full rank — but the standard test is a graph one: a network is observable if the branches whose flows are known, directly or by inference, form a spanning tree. Bad placement can leave a system unobservable at any redundancy:
Bad-data detection is what the redundancy buys. The residuals \(\mathbf{r} = \mathbf{z} - \mathbf{h}(\hat{\mathbf{x}})\) are tested against their expected distribution, and a measurement whose normalised residual exceeds about three standard deviations is removed and the estimate recomputed. A critical measurement — one whose removal makes the system unobservable — has zero residual by construction and can never be detected however wrong it is.
Bring the set together on one question. A planner must decide whether the five-bus network can absorb the loss of any single branch with the standard loading. Use the tools of this set, in the order that costs least, and state the answer with its limitations.
Step 1 — one DC load flow gives the base case, at the cost of a single factorisation:
Step 2 — the LODF table, from the same factorisation. Seven outages, each screened by one multiply-add per branch:
All in per unit. Ordered by severity, which is what a screen is for.
Step 3 — the binding cases are the two lines out of bus 1. Bus 1 is the slack, exporting 1.25 pu, and it has exactly two circuits. Lose either and the whole 1.25 pu must leave through the survivor:
Both give exactly 1.250 — necessarily, since it is the slack injection and there is nowhere else for it to go. No distribution factor was needed to see this; the topology gives it.
Step 4 — everything else is comfortable. The remaining five outages leave the worst flow at or below 0.925 pu, and three of them reduce the loading on branch 1–2 by re-routing power away from bus 2. The stiff 3–4 branch, whose loss looked alarming in Problem 15, turns out to be the third-worst case rather than the first.
Step 5 — confirm the flagged cases by AC. Only the two bus-1 outages need a full AC solution, and they need one badly: a threefold increase in a branch flow takes the angles well outside the range where \(\sin\theta \approx \theta\) holds, so the 1.250 is a lower bound on the true loading:
The industry-standard workflow, and the reason both models are taught.
The answer therefore depends on one number. If both circuits from bus 1 are rated at 1.25 pu or above, the network survives every single branch outage. If not, the remedy is not a new line but a redispatch — moving generation from bus 1 to bus 2 reduces the export that must cross the cutset, and no reinforcement is needed.
The limitations, stated plainly. The DC screen has told us nothing about four things that could each make the answer wrong:
A DC screen that passes is not a secure network; it is a network with no thermal violation under the linear model.
And one limitation of the fault matrix. Nothing in this study used the machine reactances of Problem 9, so nothing here says whether the switchgear can interrupt the fault currents after the outage. A branch outage lowers fault levels, so the direction is safe — but the same is not true of adding a circuit, which raises them, and a reinforcement that fixes a thermal problem can create a switchgear one.
Practice Problems
Work each on paper before opening the answer. The answer is given so you can check yourself; the method is deliberately not.
P1. A bus with no injection joins two others by \(y_1 = -j5\) and \(y_2 = -j20\). Eliminate it and give the resulting admittance between them.
Show answer
\(y_1y_2/(y_1+y_2) = \mathbf{-j4}\) — the two in series, as it must be.P2. Why can a bus carrying a load not be Kron-reduced away?
Show answer
The derivation requires \(I_p = 0\). With a load, the term dropped is non-zero and the reduction is not exact — Problem 3.P3. A bus of degree 5 is eliminated. How many new connections can that create at most?
Show answer
\(d(d-1)/2 = \mathbf{10}\), fewer if some neighbour pairs are already joined.P4. Why does the DC power flow matrix have zero row sums?
Show answer
It has no shunt elements — the charging was discarded. It is therefore singular until the slack row and column are deleted.P5. Two buses are joined by \(x = 0.10\) pu and their angles are \(-1.0^\circ\) and \(-3.5^\circ\). Find the DC flow.
Show answer
\(\Delta\theta = 2.5^\circ = 0.04363\) rad, so \(P = 0.04363/0.10 = \mathbf{0.436}\) pu. Note the angles must be in radians.P6. A line carrying 0.30 pu trips. Another has an LODF of \(-0.25\) with respect to that outage and was carrying 0.50. What does it carry afterwards?
Show answer
\(0.50 + (-0.25)(0.30) = \mathbf{0.425}\) pu — it unloads.P7. What does an LODF of exactly 1.0 tell you?
Show answer
That the branch has become the only remaining supply to a bus — the receiving end is now radially fed. Problem 16.P8. Why is \(\mathbf{Z}_{\text{bus}}\) full when \(\mathbf{Y}_{\text{bus}}\) is sparse?
Show answer
\(Y_{ij}\) is measured with the other buses shorted, which isolates the neighbourhood; \(Z_{ij}\) with them open, which isolates nothing. Problem 7.P9. A load-flow \(\mathbf{Y}_{\text{bus}}\) is inverted and every element comes out near \(-j4\). What has been forgotten?
Show answer
The generator reactances. Without a path to the reference through the machines, the inverse is just the reciprocal of the total charging. Problem 8.P10. A bus has \(Z_{ii} = j0.15\) pu on a 100 MVA base. What is its fault level?
Show answer
\(1/0.15 = 6.67\) pu, so \(\mathbf{667}\) MVA.P11. What distinguishes \(\mathbf{B}'\) from \(\mathbf{B}''\)?
Show answer
\(\mathbf{B}'\) uses \(1/x\) and drops shunts and taps; \(\mathbf{B}''\) is \(-\operatorname{Im}(\mathbf{Y}_{\text{bus}})\) and keeps them, because they matter for voltage. Problem 17.P12. How many states does a 300-bus system have?
Show answer
\(2n-1 = \mathbf{599}\) — 300 magnitudes and 299 angles. Practical redundancy means 1200 to 1800 measurements. Problem 19.
Challenge Problems
Three problems on the boundary between what the matrix says and what it does not.
C1 — The elimination that is not a reduction. Kron reduction requires \(I_p = 0\). Show what happens if a bus carrying a load is eliminated anyway, quantify the error on the five-bus system by eliminating bus 3 with its 0.45 pu load in place, and give the correct procedure.
Show answer
The row for bus \(p\) now reads \(I_p = Y_{pp}V_p + \sum_{j\ne p}Y_{pj}V_j\), so
\[ V_p = \frac{I_p}{Y_{pp}} - \frac{1}{Y_{pp}}\sum_{j\ne p}Y_{pj}V_j \]Substituting into row \(i\) gives the same reduced matrix plus an extra term:
\[ I_i - \frac{Y_{ip}}{Y_{pp}}I_p = \sum_{j\ne p}\left(Y_{ij}-\frac{Y_{ip}Y_{pj}}{Y_{pp}}\right)V_j \]The matrix is unchanged; what changes is the right-hand side. The eliminated bus's injection reappears distributed over its neighbours in the ratios \(Y_{ip}/Y_{pp}\). Dropping it — which is what "eliminating a load bus" usually means in practice — loses that injection entirely: the 0.45 pu load simply vanishes from the model, and the remaining buses see a network with 31% less demand.
The distribution for bus 3 — whose neighbours are 1, 2 and 4 — is by \(-Y_{i3}/Y_{33}\):
\[ \frac{1.25-j3.75}{12.9167-j38.6950} = 0.0969 \quad \frac{1.6667-j5.0}{12.9167-j38.6950} = 0.1292 \quad \frac{10-j30}{12.9167-j38.6950} = 0.7752 \]Summing to 1.0013 rather than exactly 1 — the excess being the small share carried by bus 3's own charging. Three quarters of the load moves to bus 4, through the stiff 3–4 branch, and under a tenth to bus 1.
The correct procedure is the Ward equivalent of Problem 18: eliminate the bus and carry its injection to the boundary as an equivalent injection. The alternative — converting the load to a constant admittance \(y = S^{*}/|V|^{2}\) and absorbing it into \(Y_{pp}\) before eliminating — makes \(I_p\) genuinely zero and is exact, but only at the voltage used to form it.
C2 — Where the DC model breaks. Construct the conditions under which the DC power flow's error exceeds 20%, and check each against the five-bus system and against a typical distribution feeder.
Show answer
The four approximations fail independently, and each has a threshold:
\[ \begin{array}{lll} \text{Approximation} & \text{Fails when} & \text{Error} \\ \hline G \approx 0 & r/x > 0.5 & \sim r/x\ \text{in the flow} \\ |V| \approx 1 & \text{voltages outside } 0.9\text{--}1.1 & \sim2\Delta V \\ \sin\theta \approx \theta & \theta_{ij} > 30^\circ & \theta^{2}/6 = 4.6\% \\ \text{Losses ignored} & \text{long, loaded lines} & \text{the whole loss} \end{array} \]The five-bus system: \(r/x = 0.333\) throughout, largest angle difference 6.6°, voltages within a few per cent. The first approximation is the marginal one, and the observed 4% error in the slack injection is essentially all loss.
A distribution feeder at 11 kV has \(r/x \approx 1\text{--}2\), voltages spanning 0.90 to 1.0 along its length, and losses of 5–8%. Every approximation fails at once, and worse, they fail in a correlated way: the resistance that invalidates the first also causes the voltage drop that invalidates the second. DC power flow is not merely inaccurate on distribution networks — it is qualitatively wrong, because on a feeder real power flow is driven substantially by voltage magnitude difference rather than by angle.
The one condition that does not break it is heavy loading on a transmission network. Angles of 30° give under 5% error in the sine, and that is a system near its stability limit. The DC model degrades gracefully with loading and catastrophically with \(r/x\) — which is exactly the opposite of most engineers' intuition.
C3 — The reduction that changes the answer. A planner reduces the five-bus system to the two-bus equivalent of Problem 6 and uses it to size a capacitor at bus 5. Show that the equivalent is exact for the study it was derived under and wrong for this one, and identify the general principle.
Show answer
The derivation assumed \(I_2 = I_3 = I_4 = 0\). The two-bus equivalent reproduces the relation between \(\mathbf{V}_{1,5}\) and \(\mathbf{I}_{1,5}\) exactly — for any injections at buses 1 and 5, and for those only.
The five-bus system has 1.45 pu of load, of which 0.85 sits at the eliminated buses 3 and 4. The equivalent contains none of it. A capacitor sized against the equivalent would be sized for a network carrying 0.60 pu instead of 1.45 — it would be roughly 40% of what is needed, and the voltage at bus 5 would be predicted far too high.
The failure is not in the reduction but in its re-use. Stated as a principle:
\[ \begin{array}{ll} \text{An equivalent preserves} & \text{the terminal relation under its own assumptions} \\ \text{It does not preserve} & \text{anything about the eliminated interior} \\ \text{It becomes wrong when} & \text{those assumptions no longer hold} \end{array} \]The correct route is the Ward equivalent: keep the reduced matrix, and carry the eliminated injections to the boundary. Then the equivalent reproduces the base case exactly and the response to a change at bus 5 approximately — degrading as the change grows, because the equivalent injections were computed at the base voltages and do not move with them.
And the general warning. A reduced model carries no record of what it assumed. The two-bus circuit of Problem 6 looks like a general description of the corridor, arrives without documentation, and gives a plausible wrong answer to any question outside its derivation. Every equivalent in a planning department is a liability of exactly this kind, and the discipline of re-deriving them rather than inheriting them is the only defence.
Multiple-Choice Questions
MCQ 1. Kron reduction of a bus is exact provided:
(a) the bus voltage is 1.0 (b) the bus carries no injection (c) the network is lossless (d) alwaysShow answer
(b). The derivation uses \(I_p = 0\) and nothing else. Problem 3.MCQ 2. Eliminating a bus of degree \(d\) can create at most how many new connections?
(a) \(d\) (b) \(d-1\) (c) \(d(d-1)/2\) (d) \(d^{2}\)Show answer
(c) — every pair of its neighbours. Fewer if some pairs are already joined. Problem 5.MCQ 3. The best elimination order is generally:
(a) lowest degree first (b) highest degree first (c) bus number order (d) it makes no differenceShow answer
(a). On the five-bus system it is the difference between zero fill-in and three new connections. Problem 5.MCQ 4. \(\mathbf{Z}_{\text{bus}}\) has no zero elements because:
(a) inversion always fills (b) every bus is connected to every other by some path (c) of rounding (d) it is symmetricShow answer
(b). The exception is a genuinely islanded network, where the matrix is block-diagonal. Problem 7.MCQ 5. Inverting a load-flow \(\mathbf{Y}_{\text{bus}}\) gives fault currents that are:
(a) correct (b) about 25 times too small (c) about 25 times too large (d) negativeShow answer
(b). Without machine reactances the only path to the reference is the charging. Problem 8.MCQ 6. Adding generator subtransient reactances changes:
(a) the off-diagonals (b) the diagonals of the generator buses (c) every entry (d) nothingShow answer
(b). A machine behind its reactance is a shunt to the reference — one diagonal entry each. Problem 9.MCQ 7. A high condition number in a network matrix usually indicates:
(a) an inadequate solver (b) a modelling problem (c) an unstable network (d) too many busesShow answer
(b) — a missing machine, a busbar modelled as a line, or work not in per unit. Problem 11.MCQ 8. The DC power flow neglects:
(a) resistance only (b) resistance, voltage variation, and the sine nonlinearity (c) reactance (d) the network topologyShow answer
(b) — four approximations, of which dropping \(r\) is the one that limits its use. Problem 12.MCQ 9. The DC power flow matrix is singular until:
(a) shunts are added (b) the slack row and column are deleted (c) it is symmetrised (d) it is scaledShow answer
(b). Every row sums to zero, so a constant added to all angles changes nothing. Problem 13.MCQ 10. Line-outage distribution factors depend on:
(a) the loading (b) the generation pattern (c) the reactances only (d) the voltage magnitudesShow answer
(c). That invariance is the whole value of linearising. Problems 15 and 16.MCQ 11. In the fast-decoupled method, \(\mathbf{B}'\) and \(\mathbf{B}''\) are:
(a) rebuilt each iteration (b) constant and factorised once (c) identical (d) complexShow answer
(b). That constancy is the method's entire economy against Newton–Raphson. Problem 17.MCQ 12. A Ward equivalent goes stale because:
(a) the reduced matrix ages (b) the equivalent injections are a snapshot (c) rounding accumulates (d) it does notShow answer
(b). The matrix reflects topology and survives; the injections reflect one loading condition. Problem 18.
Key Formulas
| Quantity | Relation | Notes |
|---|---|---|
| Kron reduction | \(Y_{ij}^{\text{new}} = Y_{ij} - Y_{ip}Y_{pj}/Y_{pp}\) | Exact if \(I_p = 0\) |
| Block form | \(\mathbf{Y}_{RR} - \mathbf{Y}_{RE}\mathbf{Y}_{EE}^{-1}\mathbf{Y}_{ER}\) | Schur complement |
| Ward injections | \(\mathbf{I}_R^{\text{eq}} = \mathbf{I}_R - \mathbf{Y}_{RE}\mathbf{Y}_{EE}^{-1}\mathbf{I}_E\) | Carries external load to the boundary |
| Driving-point impedance | \(Z_{ii} = V_i/I_i\), others open | Fault level \(= 1/|Z_{ii}|\) |
| Fault voltage profile | \(V_i = V_i^{(0)}(1 - Z_{ik}/Z_{kk})\) | Needs one column only |
| Machine in the matrix | \(Y_{ii} \mathrel{+}= 1/(jx''_d)\) | Required before inverting |
| Condition number | \(\kappa = \sigma_{\max}/\sigma_{\min}\) | Digits lost \(\approx \log_{10}\kappa\) |
| DC power flow | \(\mathbf{P} = \mathbf{B}\boldsymbol{\theta}\), \(B_{ij} = -1/x_{ij}\) | Slack row deleted |
| DC branch flow | \(P_{ij} = (\theta_i-\theta_j)/x_{ij}\) | Angles in radians |
| LODF | \(d_{mn,kl} = \Delta P_{mn}/P_{kl}^{(0)}\) | Independent of loading |
| Post-outage flow | \(P_{mn} = P_{mn}^{(0)} + d\,P_{kl}^{(0)}\) | Exact within the DC model |
| Fast-decoupled | \(\mathbf{B}'\Delta\boldsymbol\theta = \Delta\mathbf{P}/|V|\), \(\mathbf{B}''\Delta|\mathbf{V}| = \Delta\mathbf{Q}/|V|\) | Both constant |
| State count | \(2n-1\) | \(n\) magnitudes, \(n-1\) angles |
| Observability | measured branches span a tree | Topological, not a count |
Common Mistakes
Eliminating a bus that carries a load. The reduction is exact only for \(I_p = 0\); otherwise the injection must be carried to the boundary — Problem 3 and Challenge C1.
Eliminating high-degree buses first. Fill-in is created between every pair of neighbours, so the hub is the worst place to start — Problem 5.
Forming \(\mathbf{Y}^{-1}\) to solve a network. The inverse is full where \(\mathbf{Y}\) is sparse; factorise instead — Problem 2.
Inverting a load-flow matrix for a fault study. Without the machine reactances the answer is 25 times too small and looks entirely plausible — Problems 8 and 9.
Reading a high condition number as a solver problem. It is almost always a missing machine or a busbar modelled as a line — Problem 11.
Confusing \(\mathbf{B}\) with \(-\operatorname{Im}\mathbf{Y}\). One uses \(1/x\) and the other \(x/|z|^{2}\); they agree only for a lossless network — Problem 13.
Using degrees in the DC flow formula. \(P = \Delta\theta/x\) requires radians, and the factor is 57.3 — Practice P5.
Expecting the DC model to show losses. The resistance was discarded; slack generation equals total load exactly — Problem 14.
Using the DC model on a distribution feeder. With \(r/x \approx 1\) every approximation fails at once, and correlatedly — Challenge C2.
Applying a distribution factor to a case that islands the network. The formula's denominator approaches zero and the factor is meaningless — Problem 16.
Re-using an equivalent outside its derivation. It reproduces the terminal behaviour under its own assumptions and is silently wrong otherwise — Problem 6 and Challenge C3.
Running a state estimator at critical observability. With no redundancy a bad measurement has zero residual and cannot be detected — Problem 19.
The admittance matrix has now been reduced, factorised, approximated and differentiated. The two themes that ran through the set will run through the rest of Part 4: that a network change is local in admittance and global in impedance, and that linearising the load flow costs a few per cent in accuracy and buys several orders of magnitude in speed. The second is why the DC model dominates operational practice; the first is why the impedance matrix of the next set has to be built rather than inverted.
Set 18 constructs \(\mathbf{Z}_{\text{bus}}\) directly by the building algorithm — adding one element at a time, in four cases distinguished by whether the new branch reaches a new bus and whether it touches the reference — and shows why that is preferable to inverting a matrix one already has. Sets 19 and 20 then return to the nonlinear problem that the DC approximation was invented to avoid, and solve the five-bus system properly by two methods.