Part 4 · Chapter 17

The Bus Impedance Matrix and Building Algorithm

Chapter 16 built a matrix that turns voltages into currents; this chapter builds its inverse — and because the inverse of a sparse matrix is full, \(\mathbf{Z}_{bus}\) is never obtained by inverting anything but is grown element by element from an empty network.

Electric Power Systems Prof. Mithun Mondal Reading time ≈ 48 min
i What you'll learn
  • What a single entry of \(\mathbf{Z}_{bus}\) means physically — an open-circuit driving-point or transfer impedance — and why that is the opposite measurement to the one that defines \(Y_{ij}\).
  • Why \(\mathbf{Z}_{bus}=\mathbf{Y}_{bus}^{-1}\) is a definition and not a method, and what goes wrong when a large network is inverted.
  • The distinction between a branch, which brings a new bus, and a link, which closes a loop between buses already present.
  • All four modification types, each derived from \(\mathbf{V}=\mathbf{Z}\mathbf{I}\) rather than quoted, and why Types 1 and 3 are only special cases of Types 2 and 4.
  • How Kron reduction reappears here as the way a link is absorbed, exactly as it eliminated a bus in Chapter 16.
  • How to remove or change a line in a finished matrix by adding a link of negative impedance, without rebuilding anything.
  • Why \(Z_{kk}\) is the Thevenin impedance at bus \(k\), and how one column of \(\mathbf{Z}_{bus}\) delivers every fault current and every faulted bus voltage for Chapters 21 to 25.
Section 17-1

What the Entries of Z-Bus Actually Mean

Chapter 16 assembled the nodal equation of a per-unit network, \(\mathbf{I}_{bus}=\mathbf{Y}_{bus}\mathbf{V}_{bus}\), and closed with a table contrasting that matrix with its inverse. This chapter takes the inverse seriously. Whenever \(\mathbf{Y}_{bus}\) is non-singular — which, as Section 16-6 established, requires at least one admittance connecting the network to the reference — the relation can be turned around:

The bus impedance matrix
\[ \mathbf{V}_{bus} = \mathbf{Z}_{bus}\,\mathbf{I}_{bus}, \qquad \mathbf{Z}_{bus} = \mathbf{Y}_{bus}^{-1} \]

Written out, \(V_i = \sum_{k=1}^{n} Z_{ik} I_k\). The equation says that every bus voltage is a superposition of contributions, one from each injected current, and the coefficients \(Z_{ik}\) are what the network contributes. To find out what a particular coefficient means, use the standard device for reading any linear system: switch on one input at a time.

Set every injection to zero except \(I_k\). The sum collapses to \(V_i = Z_{ik}I_k\) for every bus \(i\), so

🔑
Definition of an entry
\[ Z_{ik} = \left.\frac{V_i}{I_k}\right|_{I_m = 0 \;\text{for all}\; m \neq k} \]

\(Z_{kk}\) is the driving-point impedance of bus \(k\): the voltage that appears at \(k\) per unit of current injected there. \(Z_{ik}\) with \(i \neq k\) is a transfer impedance: the voltage that the same injection raises at the distant bus \(i\).

The condition \(I_m=0\) is the crucial one, and it is routinely misread. It does not mean that the other buses are disconnected from the network — every line is still in place, and current still flows through every one of them. It means only that no current is injected from outside at those buses; each of them is left open-circuited at its own terminal. This is why the entries of \(\mathbf{Z}_{bus}\) are called open-circuit impedances, in direct contrast with Chapter 16, where \(Y_{ik}\) was defined by holding every bus but \(k\) at zero volts, that is, by shorting them to the reference.

Two structural consequences follow at once. First, \(\mathbf{Z}_{bus}\) is symmetric: the inverse of a symmetric matrix is symmetric, and \(\mathbf{Y}_{bus}\) is symmetric for any network of ordinary passive elements. Physically this is reciprocity — a unit injection at bus 3 raises bus 7 by exactly as much as a unit injection at bus 7 raises bus 3. Second, \(\mathbf{Z}_{bus}\) is full. A current pushed into any bus of a connected network alters the voltage at every other bus, however faintly, so no entry has any reason to vanish. Where \(\mathbf{Y}_{bus}\) recorded which buses are wired together, \(\mathbf{Z}_{bus}\) records how strongly each bus feels a disturbance anywhere else, and every bus feels every disturbance.

Never write \(Z_{ik}=1/Y_{ik}\). The two numbers are measured under opposite conditions — all other buses shorted for \(Y\), all other buses open for \(Z\) — so there is no reason for one to be the reciprocal of the other, and in general it is not even close. The matrices are inverses of one another; their individual entries are not.

There is one more reading of the diagonal that will carry the whole of Part 5. Injecting a current at bus \(k\) with all other injections zero and all internal sources dead is precisely the measurement one performs to find a Thevenin impedance at a pair of terminals. So \(Z_{kk}\) is the Thevenin impedance of the entire network looking back into bus \(k\), with the reference as the other terminal. Section 17-9 turns that single observation into a complete method for fault calculation.

Section 17-2

Why Inversion Is the Wrong Route

\(\mathbf{Z}_{bus}=\mathbf{Y}_{bus}^{-1}\) is a definition, not an instruction. For a two-bus or three-bus problem, inverting by cofactors is the quickest path and Example 1 does exactly that. Beyond that size, three separate objections appear.

The first is arithmetic. Inverting an \(n \times n\) matrix costs of the order of \(n^3\) complex operations and stores \(n^2\) complex numbers. Chapter 16 made the point that a \(400\)-bus admittance matrix holds only about \(1200\) non-zero entries; its inverse holds \(160{,}000\), every one of which must be computed and kept. All the structure that made the nodal formulation attractive is thrown away in the first step.

The second is that the input data does not arrive as a matrix. A power system is described by a branch list — from-bus, to-bus, impedance, charging — and the natural question is what each new element does to the answer, not what the assembled matrix inverts to. A method that consumes the branch list directly is closer to the physics and easier to program.

The third is decisive in practice. Networks change constantly: a line is switched out for maintenance, a second circuit is commissioned, a transformer is bypassed. In \(\mathbf{Y}_{bus}\) each such change touches four entries. In \(\mathbf{Z}_{bus}\) it touches all \(n^2\). If the only available tool is inversion, then every contingency in a list of several hundred requires a fresh \(n^3\) computation. What is wanted instead is an update rule: given the matrix of the present network, produce the matrix of the modified network directly. That rule turns out to be the same rule that builds the matrix in the first place, which is the subject of the next five sections.

What production software actually does. Large programs seldom store \(\mathbf{Z}_{bus}\) at all. They factorise the sparse \(\mathbf{Y}_{bus}\) once and then obtain whichever column of \(\mathbf{Z}_{bus}\) a study needs by solving \(\mathbf{Y}_{bus}\mathbf{z}_k = \mathbf{e}_k\), where \(\mathbf{e}_k\) has a single \(1\) in position \(k\). The building algorithm remains the right thing to learn: it is what explains the structure of the matrix, it is what handles network modifications exactly, and it is what examinations ask for.
Section 17-3

Growing a Network One Element at a Time

The idea behind the building algorithm is disarmingly simple. Begin with nothing at all — a reference node and no buses. Add the network's elements one at a time, and at every stage keep the bus impedance matrix of the partial network built so far. When the last element has been added, the partial network is the real network and its matrix is the answer.

Everything therefore depends on one question: given \(\mathbf{Z}_{orig}\) for a partial network of \(n\) buses, what is the matrix after one more element of impedance \(Z_b\) is connected? The answer depends only on what the new element joins, and there are two possibilities.

If the element brings in a bus that the partial network does not yet contain, it is a branch. The matrix must grow by one row and one column, because there is a new voltage to account for. Crucially, a branch cannot create a loop: the new bus hangs off the existing network by a single element, so current reaching it has only one way in and one way out.

If both ends of the element are nodes already present — two existing buses, or an existing bus and the reference — it is a link. The dimension of the matrix does not change, since no new voltage has appeared. But a link closes a loop, and once a loop exists current redistributes throughout the network. Every single entry of the matrix changes.

Cross-classifying by whether the far end is the reference node gives the four cases the algorithm is normally stated in.

TypeElement \(Z_b\) connectsKindEffect on the matrix
1New bus \(p\) → referenceBranchOrder \(n \to n+1\); new row and column are zero except \(Z_{pp}=Z_b\)
2New bus \(p\) → old bus \(q\)BranchOrder \(n \to n+1\); new row and column copy row and column \(q\); \(Z_{pp}=Z_{qq}+Z_b\)
3Old bus \(q\) → referenceLinkOrder unchanged; every entry reduced by a Kron term
4Old bus \(h\) → old bus \(q\)LinkOrder unchanged; every entry reduced by a Kron term
partial network reference p (new) Z_b TYPE 1 — branch, new bus to reference partial network q (old) Z_b p (new) TYPE 2 — branch, new bus to old bus partial network reference q (old) Z_b TYPE 3 — link, old bus to reference partial network h (old) q (old) Z_b TYPE 4 — link, old bus to old bus
The four ways one element can join a partially built network

A fifth case can be imagined — an element joining two buses that are both new. It is not a case the algorithm handles, and it does not need to be. Such an element would create an island with no connection to the reference, so the partial network would have a singular admittance matrix and no bus impedance matrix at all. The remedy is to choose the order of addition so that the situation never arises, which is always possible for a connected network: add elements outwards from the reference, so that each new bus arrives already attached to something.

The same requirement fixes the very first step. Before anything is added there are no buses, so the first element must be of Type 1 — some element connected to the reference, in practice a generator's subtransient reactance or a shunt. If a network has no element touching the reference at all, \(\mathbf{Z}_{bus}\) does not exist, exactly as Example 1 of Chapter 16 showed from the other direction.

Section 17-4

Type 1 — A Branch from a New Bus to the Reference

An impedance \(Z_b\) is connected between the reference and a bus \(p\) that did not previously exist. The partial network had \(n\) buses; it now has \(n+1\).

Ask what happens when a current \(I_p\) is injected at the new bus while every old injection is held at zero. The only path away from bus \(p\) is through \(Z_b\) to the reference; the old network is reached only by way of the reference node, which is the common return for everything and carries no potential difference of its own. So none of the injected current enters the old network, and none of the old bus voltages moves:

Effect on the old buses
\[ V_i = 0 \;\text{ for } i=1,\dots,n \quad\Longrightarrow\quad Z_{ip} = Z_{pi} = 0 \]

The voltage of the new bus itself is the drop across the single element it owns, \(V_p = Z_b I_p\), so \(Z_{pp}=Z_b\). Conversely an injection at any old bus \(q\) drives current round the old network and returns it through the reference; bus \(p\) is connected to that reference through \(Z_b\) but carries no current, so no drop appears across \(Z_b\) and \(V_p = 0\) — confirming \(Z_{pq}=0\) from the other side and preserving symmetry. The old entries are untouched, since the old network is electrically unchanged.

🔑
Type-1 modification
\[ \mathbf{Z}_{bus}^{\,new}=\left[\begin{array}{cccc|c} & & & & 0\\ & \mathbf{Z}_{orig} & & & 0\\ & & & & \vdots\\ & & & & 0\\ \hline 0 & 0 & \cdots & 0 & Z_{b} \end{array}\right] \]

The order rises by one. The bordering row and column are entirely zero apart from the corner, which holds the branch impedance itself.

The zeros are worth pausing over, because they are the only zeros that will ever appear in a \(\mathbf{Z}_{bus}\) built this way, and they are temporary. As soon as a later element ties bus \(p\) to the rest of the system, the link modifications of Sections 17-6 and 17-7 fill them in. A zero transfer impedance in a finished matrix would mean two parts of the network that cannot influence one another at all.

Section 17-5

Type 2 — A Branch from a New Bus to an Old Bus

Now \(Z_b\) joins a new bus \(p\) to an existing bus \(q\). Again inject \(I_p\) at \(p\) with all old injections zero, and follow the current. It has exactly one route: through \(Z_b\) into bus \(q\), and from there into the old network. As far as the old network can tell, a current \(I_p\) has been injected at bus \(q\) and nothing else has changed. Its own equations therefore give, for every old bus \(i\),

Old bus voltages under an injection at the new bus
\[ V_i = Z_{iq}\,I_p \quad\Longrightarrow\quad Z_{ip} = Z_{iq}, \qquad i = 1,2,\dots,n \]

The new column is a copy of column \(q\), and by symmetry the new row is a copy of row \(q\). This is the single most useful fact in the whole algorithm: a bus reached through a radial branch sees the network exactly as its parent does.

Only the corner entry needs separate work. The voltage at \(p\) is the voltage at \(q\) plus the drop along the new element, and the whole of \(I_p\) flows through that element:

The new diagonal entry
\[ V_p = V_q + Z_b I_p = Z_{qq}I_p + Z_b I_p \quad\Longrightarrow\quad Z_{pp} = Z_{qq} + Z_b \]
🔑
Type-2 modification
\[ \mathbf{Z}_{bus}^{\,new}=\left[\begin{array}{cccc|c} & & & & Z_{1q}\\ & \mathbf{Z}_{orig} & & & Z_{2q}\\ & & & & \vdots\\ & & & & Z_{nq}\\ \hline Z_{q1} & Z_{q2} & \cdots & Z_{qn} & Z_{qq}+Z_{b} \end{array}\right] \]

The order rises by one; the old block is unchanged; the border reproduces row and column \(q\) and the corner adds \(Z_b\) to \(Z_{qq}\).

Type 1 is Type 2 in disguise. Put \(q=\) reference in the Type-2 result. Every entry of the reference "row" is zero, because injecting current anywhere leaves the reference at zero volts by definition, and \(Z_{qq}=0\) as well. The border collapses to zeros and the corner becomes \(0+Z_b=Z_b\) — the Type-1 rule exactly. There is really only one branch rule, and the reference node is simply a bus whose row and column are identically zero.
Section 17-6

Type 3 — A Link from an Old Bus to the Reference

The element \(Z_b\) now runs from an existing bus \(q\) to the reference. No new bus appears, so the matrix keeps its order — but the element closes a loop, current redistributes, and every entry must change. The trick that handles this, and that will handle Type 4 as well, is to convert the hard case into the easy one and then remove the scaffolding.

Step one. Pretend for a moment that the far end of \(Z_b\) is not the reference but a new bus, numbered \(n+1\). That is a Type-2 addition, and Section 17-5 gives its result immediately: the augmented matrix of order \(n+1\) has

The temporary augmented matrix
\[ Z_{i,\,n+1} = Z_{n+1,\,i} = Z_{iq} \;\;(i \le n), \qquad Z_{n+1,\,n+1} = Z_{qq} + Z_b \]

Step two. Now impose what is actually true: that node \(n+1\) is the reference, which is to say \(V_{n+1}=0\). The augmented system reads \(V_i = \sum_{k=1}^{n+1} Z_{ik}I_k\) for every \(i\), and its last equation with \(V_{n+1}=0\) determines the fictitious injection:

Eliminating the fictitious node
\[ 0 = \sum_{k=1}^{n} Z_{n+1,k}I_k + Z_{n+1,n+1}I_{n+1} \quad\Longrightarrow\quad I_{n+1} = -\frac{1}{Z_{n+1,n+1}}\sum_{k=1}^{n} Z_{n+1,k}I_k \]
\[ V_i = \sum_{k=1}^{n} Z_{ik}I_k + Z_{i,n+1}I_{n+1} = \sum_{k=1}^{n}\left[\,Z_{ik} - \frac{Z_{i,n+1}Z_{n+1,k}}{Z_{n+1,n+1}}\right]I_k \]

The bracket is the new matrix. It is the Kron reduction of Chapter 16 all over again, applied to \(\mathbf{Z}\) instead of \(\mathbf{Y}\) — which is not a coincidence but the same algebra: a variable is constrained to zero and eliminated, and the price is a rank-one correction spread over every remaining entry.

🔑
Type-3 modification
\[ Z_{ij}^{\,act} = Z_{ij} - \frac{Z_{i,n+1}\,Z_{n+1,j}}{Z_{n+1,n+1}}, \qquad Z_{i,n+1}=Z_{iq}, \quad Z_{n+1,n+1}=Z_{qq}+Z_b \]

Written out with the border substituted, \(\;Z_{ij}^{\,act} = Z_{ij} - \dfrac{Z_{iq}Z_{qj}}{Z_{qq}+Z_b}\). The order is unchanged; row and column \(n+1\) are discarded once the correction is applied; symmetry is preserved because the correction term is symmetric in \(i\) and \(j\).

Two sanity checks confirm the formula behaves. If \(Z_b \to \infty\) the new element is an open circuit, the denominator grows without bound, the correction vanishes and the matrix is unchanged — as it must be. If \(Z_b \to 0\) the bus \(q\) is bolted to the reference, and the correction reduces \(Z_{qq}\) to \(Z_{qq}-Z_{qq}^2/Z_{qq}=0\), which is right: a bus tied solidly to the reference can develop no voltage no matter what is injected into it. Every other diagonal is reduced too, because a new path to the reference always makes the network stiffer.

Section 17-7

Type 4 — A Link Between Two Old Buses

This is the case that closes loops inside the network, and it is the one that occurs most often, because the branches of a spanning tree are always outnumbered by the links that complete the real topology. An impedance \(Z_b\) is connected between two existing buses \(h\) and \(q\).

Let \(I_b\) be the current the new element carries from bus \(q\) to bus \(h\). To the old network — which does not know the element exists — this looks like two extra injections: \(+I_b\) at bus \(h\) and \(-I_b\) at bus \(q\). Superposing them on whatever else is injected,

Old network with the link current treated as an injection pair
\[ V_i = \sum_{k=1}^{n} Z_{ik}I_k + \big(Z_{ih}-Z_{iq}\big)I_b \]

The column of coefficients multiplying \(I_b\) is therefore the difference of columns \(h\) and \(q\), and this already tells us what the border of the augmented matrix must be. What remains is the equation that determines \(I_b\) itself, and it comes from the element's own Ohm's law. The current flows from \(q\) to \(h\) through \(Z_b\), so the drop across it is \(V_q - V_h = Z_b I_b\); equivalently the quantity

The constraint, written as a fictitious bus voltage
\[ V_{n+1} \;\equiv\; V_h - V_q + Z_b I_b \;=\; 0 \]

Substituting the expressions for \(V_h\) and \(V_q\) from the boxed equation above and collecting terms in \(I_b \equiv I_{n+1}\):

The augmented row and the new diagonal
\[ V_{n+1} = \sum_{k=1}^{n}\big(Z_{hk}-Z_{qk}\big)I_k + \Big(Z_{hh}+Z_{qq}-2Z_{hq}+Z_b\Big)I_{n+1} \]
\[ \Longrightarrow\quad Z_{n+1,k}=Z_{hk}-Z_{qk}, \qquad Z_{n+1,n+1}=Z_{hh}+Z_{qq}-2Z_{hq}+Z_b \]

The row is the difference of rows \(h\) and \(q\), matching the column found earlier, so the augmented matrix is symmetric as required. Its corner entry has a clean interpretation: \(Z_{hh}+Z_{qq}-2Z_{hq}\) is the Thevenin impedance the network presents between buses \(h\) and \(q\), and adding \(Z_b\) gives the total impedance around the newly formed loop. Finally, imposing \(V_{n+1}=0\) — the statement that the element is genuinely connected — and eliminating node \(n+1\) exactly as in Section 17-6 gives the answer.

🔑
Type-4 modification
\[ Z_{ij}^{\,act} = Z_{ij} - \frac{\big(Z_{ih}-Z_{iq}\big)\big(Z_{hj}-Z_{qj}\big)}{Z_{hh}+Z_{qq}-2Z_{hq}+Z_b} \]

Build the border \(Z_{i,n+1}=Z_{ih}-Z_{iq}\) and the corner \(Z_{n+1,n+1}=Z_{hh}+Z_{qq}-2Z_{hq}+Z_b\), apply the Kron correction to every pair \((i,j)\), then delete row and column \(n+1\). The order of the matrix is unchanged.

And Type 3 is Type 4 in disguise. Set \(q=\) reference in the Type-4 formulae. Then \(Z_{iq}=0\) and \(Z_{qq}=Z_{hq}=0\), the border reduces to \(Z_{ih}\), the corner to \(Z_{hh}+Z_b\), and the correction becomes \(Z_{ij}-Z_{ih}Z_{hj}/(Z_{hh}+Z_b)\) — Section 17-6 exactly. So the four types are really two, a branch rule and a link rule, each of which degenerates correctly when one end lands on the reference. Learning them that way is both quicker and harder to misapply.
Section 17-8

The Complete Procedure, and Modifying a Finished Matrix

Assembling the rules gives a procedure that can be carried out on paper for a small system and coded in a few dozen lines for a large one.

StepActionReason
1Draw the per-unit impedance diagram; number the buses and identify the referenceChapter 4 supplies the common base; the reference is the neutral or ground bus
2List the elements in an order in which every new bus arrives attached to something already presentPrevents the impossible fifth case and keeps every partial network referenced
3Start with a Type-1 elementNothing else can be first; without it the partial network has no reference connection
4Add all remaining branches (Types 1 and 2) until every bus existsBranch additions are cheap: they only border the matrix, leaving old entries alone
5Add the links (Types 3 and 4) one at a timeEach closes one loop; the Kron correction spreads its effect over every entry
6Check symmetry, and check one row against \(\mathbf{Y}_{bus}\mathbf{Z}_{bus}=\mathbf{1}\)An arithmetic slip in a link correction propagates to everything after it

Steps 4 and 5 amount to building a spanning tree first and then closing its loops. Nothing forces that order — the rules are valid in any admissible sequence — but it minimises the number of expensive link corrections applied to matrices that are still growing.

A few cheap checks catch most errors. The matrix must be symmetric at every stage. For a network of pure reactances with no series capacitors, every entry must come out as \(+j(\text{positive})\). The diagonal entry of a bus must never be smaller in magnitude than any transfer impedance in its own row, because injecting at a bus raises that bus more than it raises any other. And adding a link can only ever reduce a driving-point impedance, since a new path to the rest of the system makes the network stiffer, never softer.

The second half of this section is where the algorithm repays the effort spent learning it. Once \(\mathbf{Z}_{bus}\) exists, changes to the network are handled by the very same link rules — no rebuilding is needed.

🔑
Removing an element
To delete an element of impedance \(Z_b\) between buses \(h\) and \(q\), apply the Type-4 modification with \(-Z_b\) in place of \(Z_b\).

Connecting \(-Z_b\) in parallel with \(Z_b\) gives an equivalent admittance \(1/Z_b + 1/(-Z_b) = 0\), an open circuit. The pair is electrically absent, so the network that results is the original one with the element removed. The same trick with \(q =\) reference removes a shunt.

Changing an element rather than removing it is the same idea with one more line of algebra. To replace \(Z_b\) by \(Z_b'\), add a link \(Z_p\) in parallel such that the combination has the desired value:

Impedance of the link that changes \(Z_b\) into \(Z_b'\)
\[ \frac{1}{Z_b} + \frac{1}{Z_p} = \frac{1}{Z_b'} \quad\Longrightarrow\quad Z_p = \frac{Z_b\,Z_b'}{Z_b - Z_b'} \]

Two cautions apply. Removing the only element that connects a bus to the rest of the system isolates that bus; its driving-point impedance becomes infinite and the formula fails, signalled by a denominator \(Z_{hh}+Z_{qq}-2Z_{hq}+Z_b\) that has gone to zero. That is not a defect of the method but a correct report that the modified network has no \(\mathbf{Z}_{bus}\). And the corrections are exact, not approximate, so a sequence of outages may be applied one after another with no accumulation of modelling error — only of rounding, which is why link corrections should be carried to more digits than the final answer needs.

Contingency analysis in one formula. The whole business of screening a system against the loss of any single line — the \(N-1\) criterion that governs how transmission networks are planned and operated — rests on being able to answer "what if this element were gone?" cheaply. The Type-4 rule with \(-Z_b\) answers it in \(O(n^2)\) arithmetic instead of the \(O(n^3)\) of a fresh inversion, and it is why the building algorithm survived long after direct inversion became computationally affordable.
Section 17-9

Thevenin Equivalents and the Handoff to Fault Analysis

Section 17-1 identified \(Z_{kk}\) as the Thevenin impedance seen at bus \(k\). That identification, combined with superposition, converts \(\mathbf{Z}_{bus}\) into a complete fault-calculation engine, and it is the reason the matrix is built at all.

Consider a network operating normally, with known prefault bus voltages \(V_i^{(0)}\) — from a load flow, or in hand calculation from the flat assumption \(V_i^{(0)}=1.0\angle 0^\circ\). A three-phase fault now occurs at bus \(k\) through a fault impedance \(Z_f\), drawing a current \(I_f\) out of that bus and into the ground.

Split the faulted network into two by superposition. The first component is the prefault network, with its sources and its voltages \(V_i^{(0)}\). The second is the same passive network with all sources dead and a single injection of \(-I_f\) at bus \(k\) — the fault current, drawn out of the bus, is a negative injection. The passive network is described by \(\mathbf{Z}_{bus}\), so the change in every bus voltage follows immediately:

Voltage change from the fault, by superposition
\[ \Delta V_i = Z_{ik}\,(-I_f) \quad\Longrightarrow\quad V_i = V_i^{(0)} - Z_{ik}I_f, \qquad i=1,2,\dots,n \]

Only one unknown remains, and the faulted bus supplies the equation that fixes it. At bus \(k\) the voltage during the fault is the drop across the fault impedance, \(V_k = Z_f I_f\), while the same superposition gives \(V_k = V_k^{(0)} - Z_{kk}I_f\). Equating and solving:

🔑
Fault current and faulted bus voltages from one column of Z-bus
\[ I_f = \frac{V_k^{(0)}}{Z_{kk}+Z_f}, \qquad V_i = V_i^{(0)} - \frac{Z_{ik}}{Z_{kk}+Z_f}\,V_k^{(0)} \]

Everything needed for a fault at bus \(k\) sits in column \(k\) of \(\mathbf{Z}_{bus}\). Setting \(Z_f=0\) gives the solid or bolted fault, the severest case and the one used for equipment ratings.

The line currents follow at once, because the bus voltages are now all known. For a line between buses \(i\) and \(j\) of series impedance \(z_{ij}\),

Current in any line during the fault
\[ I_{ij} = \frac{V_i - V_j}{z_{ij}} \]

and the sum of the currents arriving at bus \(k\) along all its lines must equal \(I_f\), which is a complete check on the arithmetic. Example 4 carries it out.

One number in this scheme is used so often that it has its own name. With a flat prefault voltage of \(1.0\) per unit and a bolted fault, \(I_f = 1/Z_{kk}\) per unit, so the apparent power delivered into the fault is

Short-circuit level at a bus
\[ \text{SC MVA at bus } k \;=\; \frac{\text{Base MVA}}{\big|Z_{kk}\big|_{\text{pu}}} \]

This is the fault level a circuit breaker at that bus must interrupt, and Chapter 25 uses it directly to select breaker ratings. A small \(Z_{kk}\) means a strong bus — good for voltage regulation, expensive in switchgear — and the tension between those two consequences runs through the whole of system planning.

Everything above is written for a balanced three-phase fault, where a single positive-sequence network suffices. Chapter 22 decomposes an unbalanced fault into symmetrical components, Chapter 23 constructs a separate positive-, negative- and zero-sequence network, and Chapter 24 shows that each of those networks has its own bus impedance matrix, built by the very algorithm of this chapter. The three diagonal entries \(Z_{kk}^{1}, Z_{kk}^{2}, Z_{kk}^{0}\) at the faulted bus are then combined — in series for a single line-to-ground fault, in parallel for a line-to-line fault — to give the answer. The algorithm is used three times over; only the interconnection at the end changes.

power system sources + lines bus k Z_f I_f the faulted network V⁰ k Z_kk bus k Z_f I_f = V⁰ₖ / (Z_kk + Z_f)
The whole network, seen from the faulted bus, is one prefault voltage behind one impedance Z_kk
Section 17-10

Worked Examples

Examples 1 to 3 build one network in stages, using every modification type in turn; Examples 4 to 6 then put the finished matrix to work. The network is the one in the figure, all values per unit on a common base, resistance neglected.

reference (node 0) bus 1 bus 2 bus 3 a: j0.20 TYPE 1 b: j0.10 TYPE 2 c: j0.25 TYPE 3 d: j0.30 TYPE 2 e: j0.40 TYPE 4
The running example: two branches, one branch more, and two links, added in the order a-b-c-d-e
1 The first two elements, and a check by inversion

Problem. Add element \(a\) (\(j0.20\), bus 1 to reference) and then element \(b\) (\(j0.10\), bus 1 to bus 2). Form \(\mathbf{Z}_{bus}\) and verify it by inverting the corresponding \(\mathbf{Y}_{bus}\).

Solution. Element \(a\) is Type 1 into an empty network, so the matrix is the single entry \(\mathbf{Z}_{bus}=[\,j0.20\,]\).

Element \(b\) brings the new bus 2 off the existing bus 1, which is Type 2 with \(q=1\). The new column copies column 1 and the new diagonal adds \(Z_b\):

Type-2 addition
\[ Z_{12}=Z_{21}=Z_{11}=j0.20, \qquad Z_{22}=Z_{11}+Z_b = j0.20+j0.10 = j0.30 \]
\[ \mathbf{Z}_{bus} = \begin{bmatrix} j0.20 & j0.20 \\ j0.20 & j0.30 \end{bmatrix} \]

Read the entries physically before checking them. Bus 2 hangs off bus 1 through \(j0.10\), and bus 1 reaches the reference through \(j0.20\). Inject one unit at bus 2: the current runs through both elements in series, so \(V_2 = j0.30\) — the diagonal. It also raises bus 1 by the drop across \(j0.20\) alone, giving \(V_1 = j0.20\) — the transfer impedance. Inject instead at bus 1: the current returns through \(j0.20\) and none of it flows in \(j0.10\), so bus 2 floats at the potential of bus 1, again \(j0.20\). Symmetry is not an accident here; it is visible in the circuit.

Now the check. By the rules of Chapter 16, with \(1/j0.20=-j5\) and \(1/j0.10=-j10\),

Inverting the admittance matrix
\[ \mathbf{Y}_{bus}=\begin{bmatrix} -j15 & j10\\ j10 & -j10\end{bmatrix}, \qquad \det = (-j15)(-j10)-(j10)^2 = -150+100 = -50 \]
\[ \mathbf{Z}_{bus}=\frac{1}{-50}\begin{bmatrix} -j10 & -j10\\ -j10 & -j15\end{bmatrix} = \begin{bmatrix} j0.20 & j0.20\\ j0.20 & j0.30\end{bmatrix} \;\checkmark \]
2 Closing a loop to the reference — a Type-3 link

Problem. Add element \(c\), an impedance \(j0.25\) from the existing bus 2 to the reference. Update \(\mathbf{Z}_{bus}\).

Solution. This is Type 3 with \(q=2\). Build the temporary border from column 2 of the present matrix and form the corner:

Augmented row, column and corner
\[ Z_{13}^{\,\text{tmp}}=Z_{12}=j0.20, \qquad Z_{23}^{\,\text{tmp}}=Z_{22}=j0.30 \]
\[ Z_{33}^{\,\text{tmp}}=Z_{22}+Z_b = j0.30+j0.25 = j0.55 \]

Apply \(Z_{ij}^{\,act}=Z_{ij}-Z_{i3}Z_{3j}/Z_{33}\). Each correction term is a product of two purely imaginary numbers divided by a third, so keep track of the signs carefully: \((j\alpha)(j\beta)/(j\gamma) = -\alpha\beta/(j\gamma) = j\,\alpha\beta/\gamma\).

Kron corrections
\[ Z_{11}^{\,act} = j0.20 - j\frac{(0.20)(0.20)}{0.55} = j0.20 - j0.072727 = j0.127273 \]
\[ Z_{12}^{\,act} = j0.20 - j\frac{(0.20)(0.30)}{0.55} = j0.20 - j0.109091 = j0.090909 \]
\[ Z_{22}^{\,act} = j0.30 - j\frac{(0.30)(0.30)}{0.55} = j0.30 - j0.163636 = j0.136364 \]
Matrix after elements a, b, c
\[ \mathbf{Z}_{bus} = \begin{bmatrix} j0.127273 & j0.090909\\ j0.090909 & j0.136364 \end{bmatrix} \]

Both diagonals have fallen, as promised in Section 17-6: the new path to the reference stiffens the network at every bus, not only at bus 2. The check by inversion is quick — the admittance matrix is now \(\begin{bmatrix} -j15 & j10\\ j10 & -j14\end{bmatrix}\) with determinant \(-210+100=-110\), giving \(Z_{11}=-j14/(-110)=j0.127273\) and \(Z_{22}=-j15/(-110)=j0.136364\), both confirmed.

3 Completing the network — a Type-2 branch and a Type-4 link

Problem. Add element \(d\) (\(j0.30\), new bus 3 from bus 2) and then element \(e\) (\(j0.40\), bus 1 to bus 3). Obtain the final \(\mathbf{Z}_{bus}\).

Solution. Element \(d\) is Type 2 with \(q=2\): copy row and column 2, and set \(Z_{33}=Z_{22}+j0.30 = j0.136364+j0.30 = j0.436364\).

After element d
\[ \mathbf{Z}_{bus} = \begin{bmatrix} j0.127273 & j0.090909 & j0.090909\\ j0.090909 & j0.136364 & j0.136364\\ j0.090909 & j0.136364 & j0.436364 \end{bmatrix} \]

Element \(e\) is Type 4 with \(h=1\) and \(q=3\). The temporary column is the difference of columns 1 and 3:

Border and corner for the link
\[ Z_{14}^{\,\text{tmp}} = Z_{11}-Z_{13} = j0.127273-j0.090909 = j0.036364 \]
\[ Z_{24}^{\,\text{tmp}} = Z_{21}-Z_{23} = j0.090909-j0.136364 = -j0.045455 \]
\[ Z_{34}^{\,\text{tmp}} = Z_{31}-Z_{33} = j0.090909-j0.436364 = -j0.345455 \]
\[ Z_{44}^{\,\text{tmp}} = Z_{11}+Z_{33}-2Z_{13}+Z_b = j\big(0.127273+0.436364-0.181818+0.400000\big) = j0.781818 \]

The negative entries in the temporary column are expected and carry meaning: injecting a unit current into the loop raises bus 1 relative to bus 3 but depresses buses 2 and 3 relative to it. Now correct every entry with \(Z_{ij}^{\,act}=Z_{ij}-Z_{i4}Z_{4j}/Z_{44}\), again using \((j\alpha)(j\beta)/(j\gamma)=j\alpha\beta/\gamma\):

Representative corrections
\[ Z_{11}^{\,act}=j0.127273 - j\frac{(0.036364)^2}{0.781818} = j0.127273-j0.001691 = j0.125582 \]
\[ Z_{13}^{\,act}=j0.090909 - j\frac{(0.036364)(-0.345455)}{0.781818} = j0.090909+j0.016068 = j0.106977 \]
\[ Z_{33}^{\,act}=j0.436364 - j\frac{(0.345455)^2}{0.781818} = j0.436364-j0.152643 = j0.283721 \]
Final bus impedance matrix
\[ \mathbf{Z}_{bus} = \begin{bmatrix} j0.125582 & j0.093023 & j0.106977\\ j0.093023 & j0.133721 & j0.116279\\ j0.106977 & j0.116279 & j0.283721 \end{bmatrix} \]

Every entry is positive imaginary, the matrix is symmetric, each diagonal exceeds every off-diagonal in its own row, and each diagonal has fallen from the pre-link value — the four structural checks of Section 17-8 all pass. Note also how much the link changed \(Z_{33}\): from \(j0.436\) to \(j0.284\), because bus 3 gained a second route to the sources.

4 A three-phase fault at bus 3

Problem. A bolted three-phase fault occurs at bus 3 of the completed network. Prefault voltages are \(1.0\angle0^\circ\) per unit everywhere. Find the fault current, the voltage at every bus during the fault, the current in each line, and the short-circuit level at bus 3 on a \(100\) MVA base.

Solution. With \(Z_f=0\) and \(V_3^{(0)}=1.0\),

Fault current
\[ I_f = \frac{1.0}{Z_{33}} = \frac{1.0}{j0.283721} = -j3.5245 \text{ per unit} \]

Now sweep column 3 of the matrix through \(V_i = V_i^{(0)} - Z_{i3}I_f\):

Bus voltages during the fault
\[ V_1 = 1.0 - (j0.106977)(-j3.5245) = 1.0 - 0.3770 = 0.6230 \]
\[ V_2 = 1.0 - (j0.116279)(-j3.5245) = 1.0 - 0.4098 = 0.5902 \]
\[ V_3 = 1.0 - (j0.283721)(-j3.5245) = 1.0 - 1.0000 = 0 \;\checkmark \]

The faulted bus collapses to zero, as a bolted fault demands, and that identity is the arithmetic check on \(Z_{33}\) and \(I_f\) together. The healthy buses sag to \(62\%\) and \(59\%\) of nominal — bus 2 lower than bus 1 because it is electrically nearer the fault.

The line currents follow from the voltages:

Line currents
\[ I_{12}=\frac{0.6230-0.5902}{j0.10}=-j0.328, \qquad I_{13}=\frac{0.6230-0}{j0.40}=-j1.557 \]
\[ I_{23}=\frac{0.5902-0}{j0.30}=-j1.967 \]

The two lines entering bus 3 carry \(1.557+1.967=3.524\) per unit, which is \(I_f\) to within rounding — the Kirchhoff check closes. Finally,

Short-circuit level
\[ \text{SC MVA} = \frac{100}{0.283721} = 352.5 \text{ MVA} \]

so a breaker at bus 3 must interrupt a symmetrical fault level of about \(353\) MVA. Chapter 25 refines this into an asymmetrical rating.

5 Taking a line out of service

Problem. Line \(e\) between buses 1 and 3 is switched out for maintenance. Update \(\mathbf{Z}_{bus}\) without rebuilding it, and comment on the effect at bus 3.

Solution. Apply the Type-4 modification between buses 1 and 3 with \(Z_b = -j0.40\), starting from the completed matrix of Example 3. The temporary column is the difference of columns 1 and 3 of that matrix:

Corner with a negative link impedance
\[ Z_{14}=j0.018604,\quad Z_{24}=-j0.023256,\quad Z_{34}=-j0.176744 \]
\[ Z_{44}=Z_{11}+Z_{33}-2Z_{13}+Z_b = j\big(0.125582+0.283721-0.213954-0.400000\big) = -j0.204651 \]

The corner is now negative imaginary, and each correction therefore adds to the entry it modifies rather than subtracting — precisely what removing a path should do:

Corrections
\[ Z_{33}^{\,act}=j0.283721 - j\frac{(0.176744)^2}{-0.204651} = j0.283721+j0.152643 = j0.436364 \]
\[ Z_{11}^{\,act}=j0.125582+j0.001691=j0.127273, \qquad Z_{13}^{\,act}=j0.106977-j0.016068=j0.090909 \]

The result is exactly the matrix of Example 3 before the link was added, which is the strongest possible confirmation that the negative-impedance device is exact and not an approximation. The consequence for operations is read off the diagonal: \(Z_{33}\) rises from \(j0.284\) to \(j0.436\), so the fault level at bus 3 falls from \(353\) MVA to \(100/0.436364 = 229\) MVA, and the bus becomes correspondingly weaker — a larger voltage dip for the same disturbance.

6 A second circuit in parallel

Problem. Instead of removing line \(e\), a second identical circuit of \(j0.40\) is strung between buses 1 and 3. Update \(\mathbf{Z}_{bus}\) and verify the result against a direct calculation with a single line of \(j0.20\).

Solution. Type 4 again, \(h=1\), \(q=3\), \(Z_b=+j0.40\), starting from the completed matrix of Example 3. The temporary column is therefore identical to the one used in Example 5 — \(j0.018604\), \(-j0.023256\), \(-j0.176744\) — since only the sign of \(Z_b\) has changed. The corner is

Corner for the parallel circuit
\[ Z_{44}=j\big(0.125582+0.283721-0.213954+0.400000\big)=j0.595349 \]
Corrected entries
\[ Z_{11}=j0.125582 - j\frac{(0.018604)^2}{0.595349} = j0.125582-j0.000581 = j0.125000 \]
\[ Z_{13}=j0.106977+j\frac{(0.018604)(0.176744)}{0.595349}=j0.112500, \qquad Z_{33}=j0.283721-j\frac{(0.176744)^2}{0.595349}=j0.231250 \]
\[ Z_{12}=j0.093750, \qquad Z_{22}=j0.132813, \qquad Z_{23}=j0.109375 \]

Check independently. Two circuits of \(j0.40\) in parallel are a single \(j0.20\), so rebuild the network with element \(e\) replaced by \(j0.20\). Its admittance matrix is

Direct check
\[ \mathbf{Y}_{bus} = \begin{bmatrix} -j20 & j10 & j5\\ j10 & -j17.3333 & j3.3333\\ j5 & j3.3333 & -j8.3333 \end{bmatrix} \]

and inverting it returns \(Z_{11}=j0.125000\), \(Z_{13}=j0.112500\), \(Z_{33}=j0.231250\), matching entry for entry. The fault level at bus 3 now rises to \(100/0.23125 = 432\) MVA — the price of the stronger bus that a second circuit buys, and the reason reinforcement studies and switchgear studies are never done independently of one another.

Review

Chapter Summary

The equation

\(\mathbf{V}_{bus}=\mathbf{Z}_{bus}\mathbf{I}_{bus}\), with \(\mathbf{Z}_{bus}=\mathbf{Y}_{bus}^{-1}\) whenever something connects the network to the reference.

Entry meaning

\(Z_{ik}=V_i/I_k\) with all other injections zero — open-circuit driving-point and transfer impedances.

Structure

Symmetric and completely full; a zero entry would mean two parts of the network that cannot influence each other.

Branch vs link

A branch brings a new bus and only borders the matrix; a link closes a loop and changes every entry.

Types 1 and 2

New row and column copy row and column \(q\) (all zeros if \(q\) is the reference); \(Z_{pp}=Z_{qq}+Z_b\).

Types 3 and 4

Border \(Z_{ih}-Z_{iq}\), corner \(Z_{hh}+Z_{qq}-2Z_{hq}+Z_b\), then Kron-eliminate the fictitious node.

Modification

Remove an element by adding a link of \(-Z_b\); change one by adding \(Z_p=Z_bZ_b'/(Z_b-Z_b')\).

Fault use

\(I_f=V_k^{(0)}/(Z_{kk}+Z_f)\) and \(V_i=V_i^{(0)}-Z_{ik}I_f\); SC MVA \(=\) base MVA \(/|Z_{kk}|\).

Practice

Practice Problems

All impedances are per unit on a common base and resistance is neglected unless stated. Carry link corrections to at least six decimal places; the errors they make are the errors that survive into every later entry.

  1. A generator of subtransient reactance \(j0.15\) is connected at bus 1, a transformer of \(j0.10\) joins bus 1 to a new bus 2, and a second generator of \(j0.25\) is connected at bus 2. Build \(\mathbf{Z}_{bus}\) by the algorithm, naming the type of each of the three additions, and check it by inverting \(\mathbf{Y}_{bus}\).
  2. Starting from \(\mathbf{Z}_{bus}=\begin{bmatrix} j0.20 & j0.10\\ j0.10 & j0.30\end{bmatrix}\), add a line of \(j0.25\) between buses 1 and 2 and obtain the new matrix. Verify that both diagonal entries have decreased and explain why they must.
  3. Show from the Type-4 formula that when a link of impedance \(Z_b\) is added between two buses whose voltages are always equal — that is, \(Z_{ih}=Z_{iq}\) for every \(i\) — the matrix does not change at all. What network condition produces that situation, and does any current flow in the new element?
  4. A four-bus network has elements: \(j0.20\) from bus 1 to reference, \(j0.10\) from bus 1 to bus 2, \(j0.30\) from bus 2 to bus 3, \(j0.15\) from bus 3 to reference and \(j0.25\) from bus 2 to bus 4. Build \(\mathbf{Z}_{bus}\), stating the type of each addition and the order you chose.
  5. For the completed network of Section 17-10, compute the fault current and all three bus voltages for a fault at bus 1 through a fault impedance of \(Z_f=j0.05\). Compare the fault level at bus 1 with that at bus 3 and account for the difference.
  6. The line of \(j0.10\) between buses 1 and 2 in the running example is to be replaced by one of \(j0.05\). Find the impedance of the link that effects the change, apply the Type-4 modification, and state the new value of \(Z_{22}\).
  7. Prove that \(Z_{hh}+Z_{qq}-2Z_{hq}\) is the Thevenin impedance the network presents between buses \(h\) and \(q\), by injecting \(+1\) at \(h\) and \(-1\) at \(q\) and computing \(V_h-V_q\). Hence explain why the Type-4 denominator is the impedance of the loop the new link completes.
  8. A network is built entirely of branches, with no links at all. Show that its \(\mathbf{Z}_{bus}\) satisfies \(Z_{ik}=Z_{kk}\) whenever bus \(k\) lies on the path from the reference to bus \(i\), and explain the result in terms of where current does and does not flow in a radial system.
Tip: the single most common error in these problems is applying a link correction using entries that have already been overwritten. Copy the whole matrix, compute the entire temporary border from the copy, and only then write the corrected entries — never update in place. The second most common error is a lost minus sign in \((j\alpha)(j\beta)/(j\gamma)\); commit the identity \((j\alpha)(j\beta)/(j\gamma) = +j\,\alpha\beta/\gamma\) to memory and every reactance-only problem becomes arithmetic on real numbers with a \(j\) written in at the end.