Set 18 — Z-Bus Building Algorithm
Twenty worked problems on the impedance matrix. Set 17 showed that inverting \(\mathbf{Y}_{\text{bus}}\) destroys the sparsity that made it useful, and that the inverse of a load-flow matrix is meaningless anyway. The building algorithm avoids both: it constructs \(\mathbf{Z}_{\text{bus}}\) directly by adding one element at a time, in four cases distinguished by whether the new element reaches a new bus and whether it touches the reference. A five-bus fault network is built here in nine steps and then used for the study it was built for.
What the matrix means. \(Z_{ii}\) is the Thévenin impedance seen at bus \(i\) with all sources shorted; \(Z_{ij}\) is the voltage appearing at bus \(i\) per ampere injected at \(j\). Both are open-circuit quantities.
Type 1 — new bus to the reference. \(\mathbf{Z}\) gains a row and column of zeros with \(Z_{\text{new}} = z_b\). Nothing existing changes, because the new bus is connected to nothing existing.
Type 2 — new bus from an existing bus \(k\). The new row and column are copies of row and column \(k\), and \(Z_{\text{new,new}} = Z_{kk} + z_b\). Still no elimination — the matrix simply grows.
Types 3 and 4 close a loop, so the matrix must first grow by a fictitious node and then be reduced by one Kron step. That elimination is where every existing element changes.
Type 3 — existing bus \(k\) to the reference. Fictitious row \(= \) row \(k\), with \(Z_{ll} = Z_{kk}+z_b\), then eliminate.
Type 4 — between existing buses \(j\) and \(k\). Fictitious row \(= \) row \(j\) \(-\) row \(k\), with \(Z_{ll} = z_b + Z_{jj} + Z_{kk} - 2Z_{jk}\), then eliminate.
The fault results follow in one line each. \(I_f = V^{(0)}/(Z_{kk}+Z_f)\), and \(V_i = V^{(0)}(1 - Z_{ik}/(Z_{kk}+Z_f))\) — one column of the matrix answers the whole study.
State precisely what the elements of the bus impedance matrix represent, show that \(Z_{ii}\) is a Thévenin impedance, and explain why the matrix is symmetric.
The defining relation is the inverse of the nodal equation:
The inverse exists provided the network has some path to the reference — which for a fault network means the machines.
Element by element, setting every injection but one to zero:
Inject one ampere at bus \(j\), leave every other bus open, and read the voltage at bus \(i\). That is the measurement the matrix records.
\(Z_{ii}\) is the Thévenin impedance. Take the case \(i = j\): one ampere in at bus \(i\), all other buses open, all internal sources replaced by their impedances. Then
The whole network, viewed from one pair of terminals — bus \(i\) and the reference — collapses to a single impedance, and that impedance is the diagonal entry. It is why the fault current is \(V^{(0)}/Z_{ii}\) and needs nothing else.
Symmetry follows from reciprocity. For any network of bilateral elements, the voltage at \(i\) per ampere at \(j\) equals the voltage at \(j\) per ampere at \(i\):
Formally it is the inverse of a symmetric matrix, and the inverse of a symmetric matrix is symmetric. Physically it is the reciprocity theorem, which fails only for the phase shifter of Set 16.
The two ways to read the off-diagonal. Both are used:
The second is the form used in Problem 16, and it makes \(Z_{ik}/Z_{kk}\) a dimensionless measure of electrical proximity between two buses.
What the matrix contains that \(\mathbf{Y}_{\text{bus}}\) does not. Nothing, formally — one is the inverse of the other. But the information is arranged differently: \(\mathbf{Y}\) stores local connectivity, and \(\mathbf{Z}\) stores global response. A fault study asks a global question, so it wants \(\mathbf{Z}\); a load flow asks a local one at each step, so it wants \(\mathbf{Y}\).
Derive the modification for adding a branch of impedance \(z_b\) from the reference to a new bus, and apply it to start the five-bus fault network with the generator at bus 1, \(x''_d = j0.25\) pu.
The situation. A branch \(z_b\) joins the reference to a bus \(p\) that did not previously exist. The existing network and the new bus have no connection whatever except through the reference.
The two consequences. Injecting current at any old bus \(i\) cannot raise \(V_p\), because no path leads there; and injecting at \(p\) cannot raise any \(V_i\), for the same reason:
And the new diagonal is the branch itself, since one ampere into bus \(p\) returns through \(z_b\):
The modification, in full:
Bordered with zeros. No existing element changes. That is the signature of the two "new bus" cases and the reason they are cheap.
Starting the build. With nothing yet in the network, the first element is the generator at bus 1 represented by its subtransient reactance to the reference:
A \(1\times1\) matrix. The Thévenin impedance at bus 1 is at this stage simply the machine reactance, which is correct — nothing else is connected.
Why the build must start here. Every element added must connect to something already in the partial network, or to the reference. The first element therefore has no choice: it must touch the reference, and it must be a Type 1. In a fault study that means a generator, which is convenient — but any shunt element would do.
Derive the modification for adding a branch from an existing bus \(k\) to a new bus \(p\), and apply it to add line 1–2 of reactance \(j0.06\) pu.
The key observation. Bus \(p\) hangs off bus \(k\) and is connected to nothing else. So current injected at any old bus \(i\) reaches \(p\) only through \(k\) — and once it is at \(k\), the branch \(z_b\) carries no current, because \(p\) is open. Therefore
The new column is a copy of column \(k\), and by symmetry the new row is a copy of row \(k\).
The new diagonal. Now inject at \(p\) itself. The current passes through \(z_b\) and then into the network at \(k\):
The modification:
Again no existing element changes — adding a radial spur cannot alter the network behind it.
Applying it. Adding line 1–2 of \(j0.06\) from the existing bus 1 to the new bus 2:
\(Z_{22} = 0.25 + 0.06 = 0.31\), and \(Z_{12} = Z_{11} = j0.25\) because bus 2 is fed entirely through bus 1.
The physical check. At this stage bus 2 is at the end of a radial feed, so its Thévenin impedance is the machine plus the line — \(j0.31\), exactly as a first-year calculation would give. And \(Z_{12} = Z_{11}\) says that injecting at bus 2 raises bus 1 by the same amount as injecting at bus 1 does, which is right: in both cases the current ends up flowing through the same \(j0.25\).
A radial network never needs the other two cases. A purely radial system — a distribution feeder, or a transmission network before any interconnection — is built entirely from Types 1 and 2, and its \(\mathbf{Z}_{\text{bus}}\) comes out with no elimination at all. The loop cases exist because meshing exists.
Derive the modification for adding a branch from an existing bus \(k\) to the reference, and apply it to add the generator at bus 2 with \(x''_d = j0.20\) pu.
The difficulty. This element creates a loop — a second path from bus \(k\) to the reference — so it changes every existing element. The trick is to add it in two stages.
Stage 1: pretend it is a Type 2. Add the branch from bus \(k\) to a fictitious new bus \(l\), using the Type 2 rule:
Stage 2: short bus \(l\) to the reference. That is the condition \(V_l = 0\), and imposing it on the augmented system is exactly the Kron elimination of Set 17:
Note the direction: here the eliminated variable is a voltage forced to zero, whereas in Set 17 it was a bus whose current was zero. The same algebra serves both, which is the reason Kron's formula appears in so many places.
Applying it. Adding \(j0.20\) from bus 2 to the reference, with \(Z_{22} = j0.31\):
The result:
Every element has fallen, as it must: a second source has been connected, so both buses are now stiffer than before.
The independent check. Bus 2 now sees the \(j0.20\) machine in parallel with the \(j0.25+j0.06 = j0.31\) path through bus 1:
Matching \(Z_{22}\) exactly. Every Type 3 or Type 4 step can be spot-checked this way at the diagonal of the bus involved.
Derive the modification for adding a branch between two existing buses \(j\) and \(k\), and identify the quantity that appears in the denominator.
Same two stages. Add the branch from bus \(j\) to a fictitious bus \(l\), then short \(l\) to bus \(k\) — that is, impose \(V_l = V_k\) rather than \(V_l = 0\).
The fictitious row. With \(V_l - V_k\) as the new variable, the coupling to any bus \(i\) is the difference of two transfer impedances:
Injecting at bus \(i\) raises bus \(j\) by \(Z_{ij}\) and bus \(k\) by \(Z_{ik}\); the voltage across the new loop is the difference.
The fictitious diagonal is the branch impedance plus the impedance the network already presents between \(j\) and \(k\):
The three-term combination is the Thévenin impedance between the two buses, and it is worth naming: it is what a source connected between buses \(j\) and \(k\) would see.
Then eliminate:
Written for a general pair of indices; every element of the matrix is corrected by the product of two such differences over the common denominator.
Why \(Z_{jj}+Z_{kk}-2Z_{jk}\) is the between-bus Thévenin impedance. Inject \(+1\) A at \(j\) and \(-1\) A at \(k\). By superposition:
Volts across the pair per ampere circulating — the definition of an impedance between two terminals. The symmetry \(Z_{jk} = Z_{kj}\) is what collapses the two cross terms into \(2Z_{jk}\).
A consequence worth carrying forward. This same expression is the denominator of the line-outage distribution factors of Set 17, and it is what governs whether adding a parallel circuit helps: if the network already presents a low impedance between the two buses, a new branch between them changes little.
Explain, without algebra, why Types 1 and 2 change nothing that already exists while Types 3 and 4 change everything, and set out the four cases as a decision table.
The physical distinction is between a branch and a link. In graph terms:
A branch cannot change anything behind it. Hang a new bus off the network by one element and no alternative path exists — every current that reached the old buses still takes the same route. The new bus is a passenger, and the old matrix is untouched.
A link changes every current in the network. Close a loop and current now has two paths where it had one; it divides between them in inverse proportion to their impedances, and that redivision propagates everywhere. There is no element of the matrix that can escape it.
The four cases:
Two questions settle the case: does it reach a new bus, and does it touch the reference. The reference is simply another node, so Type 3 is Type 4 with \(k = \) reference, and its formula follows by setting \(Z_{ik} = 0\) and \(Z_{kk} = 0\) throughout Type 4's.
How many of each. For a network of \(n\) buses and \(e\) elements including the shunts, exactly \(n\) are branches — one Type 1 and \(n-1\) Type 2s, forming a spanning tree — and the remaining \(e-n\) are links:
And \(e - n + 1 = 5\) is the number of independent loops, one of which is closed by the reference. The build order used in the next four problems has one Type 1, four Type 2s and four loop cases, which is the arithmetic working out.
The cost, therefore. The \(n\) branch additions are free — they only enlarge the matrix. The \(e-n\) link additions each cost a full \(n^{2}\) update. For a real network with \(e \approx 1.5n\) that is about \(0.5n\) eliminations of \(n^{2}\) operations each, so the algorithm is \(O(n^{3})\) overall — the same order as inversion, which is why it is used for its structure rather than its speed.
Begin the systematic build of the five-bus fault network. Reactances only: generators \(j0.25\) at bus 1 and \(j0.20\) at bus 2; lines 1–2 \(j0.06\), 1–3 \(j0.24\), 2–3 \(j0.18\), 2–4 \(j0.18\), 2–5 \(j0.12\), 3–4 \(j0.03\), 4–5 \(j0.24\). Carry out the first three steps.
The plan. Nine elements, ordered so that every one connects to what is already built:
One Type 1, four Type 2, one Type 3, three Type 4 — five branches and four links, as Problem 6 predicted.
Step 1 (Type 1). The generator at bus 1:
Step 2 (Type 2). Line 1–2 from bus 1 to the new bus 2:
Step 3 (Type 3). The generator at bus 2, from the existing bus 2 to the reference. Denominator \(Z_{22}+z_b = j0.31+j0.20 = j0.51\):
Worked in full in Problem 4.
Two checks at this stage. Bus 1 now sees its own \(j0.25\) in parallel with \(j0.06+j0.20 = j0.26\) through bus 2:
Both diagonals confirmed by elementary parallel combination — possible only because the network is still two buses. From step 4 onward the checks become the verification of Problem 11.
And the off-diagonal has a reading too. \(Z_{12} = j0.09804\) is 80% of \(Z_{11}\), which says buses 1 and 2 are strongly coupled — as they should be, joined by the stiffest element in the network so far. Expect that ratio to fall as more of the network is added and the two buses acquire independent paths to the reference.
Continue the build: add line 1–3 of \(j0.24\) and then line 2–3 of \(j0.18\), working the second in full.
Step 4 (Type 2). Line 1–3 from bus 1 to the new bus 3. New row and column copy those of bus 1; \(Z_{33} = Z_{11}+z_b = j0.12745+j0.24 = j0.36745\):
Bus 3 is radially fed from bus 1 at this stage, so its Thévenin impedance is bus 1's plus the line.
Step 5 (Type 4). Line 2–3 of \(j0.18\) between existing buses 2 and 3. First the fictitious column, \(Z_{i2}-Z_{i3}\):
And the fictitious diagonal:
Of which \(j0.29294\) is the network's own impedance between buses 2 and 3 and \(j0.18\) is the new line — so the line is stiffer than the path it parallels, and the change will be substantial.
The elimination, element by element:
The matrix after five steps:
Reading the changes. The new line has done most of its work at bus 3, whose diagonal fell 42% from \(j0.36745\) to \(j0.21398\). Bus 1 barely moved — 1.5% — because it was already well connected, and \(Z_{12}\) actually rose slightly, from \(j0.09804\) to \(j0.09950\). A new element does not lower every element of the matrix, only the diagonals; the off-diagonals may move either way as the coupling pattern rearranges.
Add line 2–4 of \(j0.18\) and then the stiff line 3–4 of \(j0.03\), and comment on what the second does to the matrix.
Step 6 (Type 2). Line 2–4 from bus 2 to the new bus 4. Row and column 4 copy row and column 2; \(Z_{44} = j0.12040+j0.18 = j0.30040\):
Step 7 (Type 4). Line 3–4 of \(j0.03\) between existing buses 3 and 4. The fictitious diagonal:
The network's own impedance between buses 3 and 4 is \(j0.29149\) — ten times the new line's \(j0.03\). The line will dominate that path completely.
The fictitious column \(Z_{i3}-Z_{i4}\):
Buses 3 and 4 have large and opposite differences; buses 1 and 2 have small ones. The corrections will be concentrated at buses 3 and 4 accordingly.
The result:
What the stiff line has done. Two effects, both large:
Bus 4 has been transformed; and \(Z_{34}\) has risen sharply and is now within 6% of both diagonals.
The near-equality is the signature of two buses becoming one. When \(Z_{34} \approx Z_{33} \approx Z_{44}\), a current injected at either bus raises both by nearly the same amount — the pair behaves as a single node with a very small internal impedance. That is exactly what a \(j0.03\) tie between two buses of \(j0.18\) Thévenin impedance produces, and it is worth recognising, because such pairs are candidates for merging into one bus in any study that does not need to distinguish them.
Complete the build with line 2–5 of \(j0.12\) and line 4–5 of \(j0.24\), and present the final matrix.
Step 8 (Type 2). Line 2–5 from bus 2 to the new bus 5. Row and column 5 copy those of bus 2:
Step 9 (Type 4). Line 4–5 of \(j0.24\) between existing buses 4 and 5. The fictitious diagonal:
The network already offers \(j0.19922\) between buses 4 and 5, against the new line's \(j0.24\) — so this line is weaker than the path it parallels, and its effect will be modest.
The complete matrix, all entries purely imaginary since resistance was neglected:
Reading the diagonals. They rank the buses by strength:
The ordering is exactly what the single-line diagram would suggest, which is the first sanity check on any completed matrix.
And the off-diagonals measure coupling. \(Z_{34} = j0.16201\) is 92% of the smaller diagonal — the tied pair of Problem 9 — while \(Z_{15} = j0.10160\) is only 50% of \(Z_{55}\), buses 1 and 5 being at opposite ends of the network.
The final line changed little, as predicted: \(Z_{55}\) fell from \(j0.24015\) to \(j0.20457\), a 15% improvement, and every other diagonal moved by under 3%. A line weaker than the path it parallels contributes proportionately little — which is the quantitative form of a familiar planning judgement.
Verify the completed matrix. Give three independent checks and apply each.
Check 1 — the product with \(\mathbf{Y}_{\text{bus}}\). Form \(\mathbf{Y}_{\text{bus}}\) by inspection from the same data and multiply:
The definitive test, and it uses a matrix built by a completely different route. One row of the product is enough in hand work: row 1 gives \([1, 0, 0, 0, 0]\).
Check 2 — symmetry. \(Z_{ij} = Z_{ji}\) throughout, which every step of the algorithm preserves automatically. A completed matrix that is not symmetric contains an arithmetic slip, and comparing the two triangles localises it.
Check 3 — the dominance property. For a network with no phase shifters and no negative impedances:
A current injected at bus \(i\) cannot raise any other bus more than it raises bus \(i\). Checking the largest off-diagonal in each row against that row's diagonal is a fast scan:
Every ratio below unity. Row 2's 0.99 is worth a second look — bus 2 and bus 5 are almost as strongly coupled as bus 2 is to itself, because bus 5 hangs off bus 2 by the shortest of its three lines.
A fourth check, for the algorithm rather than the result. Every Type 3 and Type 4 step must reduce every diagonal, because closing a loop can only stiffen the network:
Monotonically falling. A diagonal that rises after a link addition means a sign error in the fictitious row.
The one check that does not work. There is no row-sum property for \(\mathbf{Z}_{\text{bus}}\) — its row sums are not any physically meaningful quantity, and no useful test exists on them. The verification of Set 16 was a gift of the admittance formulation and does not carry over.
Does the order in which elements are added affect the final matrix, the amount of work, or the accuracy? Answer each separately, and state the practical rule.
The final matrix: no. \(\mathbf{Z}_{\text{bus}}\) is the inverse of \(\mathbf{Y}_{\text{bus}}\), and \(\mathbf{Y}_{\text{bus}}\) is a sum of element contributions that does not depend on the order they were summed. Any valid order gives the same answer to the last digit.
The work: yes, but only through the split. The branch/link split of Problem 6 is fixed by the topology — \(n\) branches and \(e-n\) links whatever the order — so the number of eliminations is fixed. What varies is the size of the matrix at each elimination:
The build used here put a Type 4 at step 5 on a \(3\times3\) and another at step 9 on a \(5\times5\). Reversing that costs more arithmetic for the same answer.
The accuracy: yes, and this one matters. The Type 4 denominator is
and a small denominator amplifies rounding. That happens when a stiff link is added between two buses that are already tightly coupled — so the rule is to add stiff elements early, before the buses they join have acquired other paths.
The constraint that limits all of this. Every element must connect to something already built, so the order is not free:
Adding line 4–5 before either bus exists is not a case in the table — it is simply not permitted.
The practical rule, in three parts:
Which is exactly the order used in Problems 7 to 10 — and it is also the order a person would naturally trace on a single-line diagram, which is the reason it is the recommended one.
The comparison with \(\mathbf{Y}_{\text{bus}}\) ordering. In Set 17 the ordering question was about fill-in, and the answer was to eliminate low-degree buses first. Here there is no fill-in to avoid — \(\mathbf{Z}_{\text{bus}}\) is full from the start — so the ordering question is entirely about conditioning and arithmetic volume. Two different matrices, two different ordering problems, two different answers.
Line 3–4 is taken out of service. Modify the impedance matrix without rebuilding it, and give the new fault levels.
The trick. Removing an element of impedance \(z_b\) is the same as adding one of \(-z_b\) in parallel with it:
The parallel combination is an open circuit. So removal is a Type 4 addition with a negative impedance — no new machinery is needed.
Applying it. Add \(z_b = -j0.03\) between buses 3 and 4. The denominator:
Small — which is the warning flag of Problem 12 appearing. The network's own between-bus impedance is \(j0.05655\) and we are subtracting \(j0.03\) of it, so more than half cancels.
The result:
The fault levels, before and after:
In per unit on 100 MVA. The generator buses barely notice; buses 3 and 4, which the removed line joined, lose a fifth and a quarter of their fault infeed.
Notice the direction. Removing an element raises the diagonals and lowers the fault levels — the opposite of adding one. An outage therefore never creates a switchgear duty problem, which is why fault studies are run on the intact network with all plant in service.
The caution on the small denominator. At \(j0.02655\) against diagonals of \(j0.17\), the correction terms are large numbers divided by a small one, and five-figure input data gives perhaps three reliable figures out. The removal of a very stiff element is the case where the algorithm's conditioning is genuinely poor, and where rebuilding from scratch — or inverting the modified \(\mathbf{Y}_{\text{bus}}\) — is the safer route.
Line 1–2 is rebuilt and its reactance becomes \(j0.10\) instead of \(j0.06\). Find the impedance to add in parallel, and give the new fault levels.
The requirement. Find \(z\) such that the old element in parallel with it gives the new value:
Evaluating:
Negative, as it must be — the line is being made weaker, so the parallel element must remove admittance. Check: \(1/j0.06 = -j16.667\) and \(1/(-j0.15) = +j6.667\), summing to \(-j10 = 1/j0.10\).
One Type 4 addition between buses 1 and 2 with \(z_b = -j0.15\):
Negative — which is legitimate and simply reflects that the added element is a negative impedance. The algebra is unchanged.
The new diagonals and fault levels:
All impedances in per unit, all fault levels reduced. The two generator buses move most, because line 1–2 is the element that ties the two machines together.
The engineering reading. Raising a line's reactance by 67% lowers the fault level at its own two buses by about 4% and elsewhere by 1%. That is a general finding: fault levels are set by the machines and the transformers, and are remarkably insensitive to the transmission network. A planner wanting to reduce a fault level does not reconductor a line; they split a busbar, insert a series reactor, or change a transformer's impedance.
And the same calculation covers three cases. Addition, removal and modification are one formula:
The middle line is the limiting case of the third as \(z_{\text{new}} \to \infty\).
Compute the symmetrical three-phase fault current at every bus of the intact network, with a prefault voltage of 1.0 pu, and express the results as fault levels in MVA on a 100 MVA base.
The relation, which is Thévenin's theorem and nothing more:
The prefault voltage divided by the driving-point impedance. No other element of the matrix is involved.
The five results:
All currents lag by 90°, the network being purely reactive by assumption.
The base current, to convert to amperes at 220 kV:
What the numbers are used for. Three separate ratings follow from the fault level, and each has its own standard:
The 2.55 factor accounts for the asymmetry of the first peak, and the value computed here is the symmetrical component underlying all three.
Switchgear is standardised, so the calculation resolves to a choice from a short list — at 220 kV typically 25, 31.5, 40 or 50 kA. Bus 2's 2185 A is comfortably inside the smallest, which reflects the modest generation in this test system rather than anything about real networks.
The neglected terms, and their direction. Three things were left out, and they do not all push the same way:
The last is the one that matters. An induction motor contributes fault current for the first few cycles, and standards require it to be included as a subtransient source in the making-capacity calculation.
A solid three-phase fault occurs at bus 3. Find the voltage at every bus during the fault and interpret the profile.
Superposition. The faulted network is the prefault network plus a source of \(-V^{(0)}\) applied at the fault point with all other sources dead. The change in voltage at bus \(i\) is \(-Z_{ik}I_f\), so
Everything comes from column \(k\) of the matrix. Nothing else is needed.
The fault current at bus 3 is \(1.0/j0.17377 = 5.755\) pu, and column 3 of the matrix is
The voltages:
All real, because the network is purely reactive and the ratios of two reactances are real numbers.
Bus 4 has all but collapsed. At 0.068 pu it is within 7% of the fault itself, although the fault is at bus 3 — because the \(j0.03\) tie makes the two buses electrically almost the same place, as Problem 9 established. A fault at bus 3 is, for practical purposes, a fault at bus 4 as well.
And the generator buses hold up best, at 0.39 and 0.34 pu — the highest voltages in the network, because they are the sources. Even so, both are far below the 0.7 pu at which induction motors stall. Every bus in this system is below that threshold during any three-phase fault.
The consequence for protection. The whole network goes dark for the duration of the fault, so clearing time is what limits the damage:
Which is why the difference between a 3-cycle and a 5-cycle breaker is worth paying for, and why breaker-failure protection exists at all.
The ratio \(Z_{ik}/Z_{kk}\) is the useful object. It is dimensionless, it lies between 0 and 1, and it says what fraction of a bus's voltage is lost to a fault elsewhere. Tabulated for every pair, it is a complete map of the network's electrical distances — and, unlike a geographical map, it puts buses 3 and 4 on top of each other.
For the same fault at bus 3, compute the current in every line and in each generator, and verify Kirchhoff's law at three nodes.
The line currents follow from the voltages already found:
Elementary once the profile is known — which is why the voltage profile is computed first.
All seven lines:
Note the last two: current flows into bus 4 from bus 5 and then on to the fault, so bus 5 is feeding the fault by the long way round.
The generator currents:
The two machines supply the entire fault current, in the ratio 43:57. Generator 2 contributes more despite being no larger, because it is closer to the fault and stiffer.
Kirchhoff at bus 3 — everything arriving must equal the fault current:
Kirchhoff at bus 4 — a pure junction, so in must equal out:
And at bus 1: \(0.8294 + 1.6177 = 2.4471\), the generator current. Three independent checks, all exact.
The largest line current is 2.26 pu on the stiff 3–4 line, which is carrying 39% of the fault current although it connects the fault to a bus with no generation at all. The path \(2 \to 4 \to 3\) is stiffer than the direct \(2 \to 3\), so a substantial share of generator 2's contribution goes the indirect way. Fault current does not take the geographically direct route; it takes the low-impedance one, and a protection engineer who assumes otherwise will set directional relays wrongly.
Repeat the fault at bus 3 through fault impedances of \(j0.02\), \(j0.05\) and \(j0.10\) pu. Tabulate the current and the faulted-bus voltage, and say why the case matters.
The modification is one term. The fault impedance is in series with the Thévenin impedance:
And the other bus voltages become \(V_i = V^{(0)}\left(1 - Z_{ik}/(Z_{kk}+Z_f)\right)\) — the same formula with the denominator enlarged.
The results:
The solid fault is the worst case for current — every fault impedance reduces it — which is why switchgear is rated from the \(Z_f = 0\) calculation and why that is the case a fault study computes.
But it is the best case for detection. A fault through \(j0.10\) draws only 3.65 pu and leaves 0.365 pu on the faulted bus, so the relays see a smaller current and a healthier voltage. High-impedance faults are the ones that are hard to detect, and detection is a harder problem than interruption:
Where fault impedance comes from, and its magnitudes:
The last is a design choice, not a hazard: a resistance-earthed neutral limits earth-fault current to a chosen value and is standard in industrial and generator-connection practice.
The three-phase fault is almost always solid. A three-phase short involves conductors touching or a flashover with all three phases in the arc, and the arc impedance is small compared with the network's. The high-impedance case is overwhelmingly an earth fault — which is unsymmetrical, and therefore belongs to Set 23 rather than here.
Set out the complete comparison between the two network matrices, and state which study uses which and why.
The structural comparison:
The allocation of studies follows from the last row:
Two of six use the impedance matrix, and both are fault-related.
The rule underneath. A study that asks a local question repeatedly wants \(\mathbf{Y}_{\text{bus}}\); one that asks a global question at a few points wants \(\mathbf{Z}_{\text{bus}}\). A load flow computes the mismatch at each bus from its neighbours, twenty times over; a fault study asks what the whole network looks like from one bus, once.
And the modern compromise. Large programs form neither in full:
Each solve returns one column of \(\mathbf{Z}_{\text{bus}}\) at the cost of one substitution. Fifty faulted buses on a 10 000-bus network need fifty columns, which is 0.5% of the full matrix and about a second of computation.
Where the building algorithm still earns its place. Three cases:
The third is not a small point. The build in Problems 7 to 10 showed the \(j0.03\) tie collapsing bus 4 onto bus 3 — a fact about the network that inverting a matrix would have produced without revealing.
And the trap that Set 17 established. The two matrices are inverses of each other for the same network, and a load-flow network and a fault network are not the same network. The load-flow \(\mathbf{Y}_{\text{bus}}\) has no machine reactances; the fault \(\mathbf{Y}_{\text{bus}}\) has them and has no loads. Inverting the wrong one gives an answer 25 times too small.
A new generator of \(x''_d = j0.15\) pu is proposed at bus 5. Assess its effect on every fault level, on the switchgear, and on the network's behaviour during a fault at bus 3.
One Type 3 addition. A machine at an existing bus is a branch from bus 5 to the reference:
Working the diagonals:
The new fault levels:
Every bus rises, and bus 5 — where the machine is connected — more than doubles.
The switchgear consequence is the finding. At 220 kV, 1245 MVA is 3267 A, still modest — but the percentage increases are what a real assessment turns on. A network whose breakers were selected with a 20% margin above the existing 833 MVA at bus 2 would be exceeded at the new 1245 MVA, and every breaker at bus 2 would need replacing to connect a generator four buses away.
The fault at bus 3, re-examined. With \(Z_{33} = j0.12564\) the fault current rises to 7.96 pu, and the voltage profile changes:
Every bus holds up better — bus 5 more than doubles, having a local source, and even bus 4 rises from 7% to 11% of nominal. A new machine improves the voltage everywhere during a fault and raises the fault duty everywhere too. The two effects are the same effect: a stiffer network.
The trade, stated. Connecting generation at bus 5 buys:
And the general lesson about direction. Every reinforcement that stiffens a network raises its fault levels; every outage lowers them. So the two studies pull opposite ways: the load flow of Sets 19 and 20 wants a stronger network and the fault study of this set wants a weaker one. Series reactors, split busbars and normally-open points all exist to resolve that conflict — they weaken the network for fault current while leaving it strong for power flow.
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 network's first element is a generator of \(j0.30\) pu at bus 1. Write \(\mathbf{Z}_{\text{bus}}\).
Show answer
The \(1\times1\) matrix \(\mathbf{[j0.30]}\) — a Type 1 addition.P2. A line of \(j0.08\) is added from bus 1 to a new bus 2. Give the new matrix.
Show answer
\([j0.30,\ j0.30;\ j0.30,\ \mathbf{j0.38}]\) — Type 2, with \(Z_{22} = Z_{11}+z_b\).P3. A generator of \(j0.25\) is now connected at bus 2. What is the denominator of the elimination?
Show answer
\(Z_{22}+z_b = j0.38+j0.25 = \mathbf{j0.63}\) — Type 3.P4. Complete P3 and give \(Z_{22}\).
Show answer
\(j0.38 - (j0.38)^2/j0.63 = \mathbf{j0.15079}\). Check: \((0.25)(0.38)/0.63 = 0.15079\), the two paths in parallel.P5. Two buses have \(Z_{jj} = j0.20\), \(Z_{kk} = j0.25\), \(Z_{jk} = j0.12\). What impedance does the network present between them?
Show answer
\(Z_{jj}+Z_{kk}-2Z_{jk} = 0.20+0.25-0.24 = \mathbf{j0.21}\) pu.P6. A line of \(j0.10\) is added between them. Give the Type 4 denominator.
Show answer
\(j0.10+j0.21 = \mathbf{j0.31}\).P7. How do you remove an element of impedance \(j0.05\)?
Show answer
Add \(\mathbf{-j0.05}\) in parallel with it, by a Type 4 (or Type 3 if it touched the reference).P8. A bus has \(Z_{kk} = j0.125\). Find the three-phase fault current and level on a 100 MVA base.
Show answer
\(1/0.125 = \mathbf{8.0}\) pu, i.e. 800 MVA.P9. During that fault, a remote bus has \(Z_{ik} = j0.09\). What voltage does it retain?
Show answer
\(1 - 0.09/0.125 = \mathbf{0.28}\) pu.P10. The same fault occurs through \(Z_f = j0.05\). Find the current and the faulted-bus voltage.
Show answer
\(1/(0.125+0.05) = \mathbf{5.71}\) pu; \(V_k = 5.71\times0.05 = \mathbf{0.286}\) pu.P11. A network has 12 buses and 20 elements including shunts. How many Type 3 or Type 4 steps does the build need?
Show answer
\(e-n = 20-12 = \mathbf{8}\) links. The other 12 are branches, needing no elimination.P12. Why does \(\mathbf{Z}_{\text{bus}}\) have no row-sum check?
Show answer
Its row sums correspond to no physical quantity. The check of Set 16 belongs to the admittance formulation and does not carry over — Problem 11.
Challenge Problems
Three problems on the algorithm's edges — where it is fragile, where it generalises, and where the model behind it fails.
C1 — The build that loses accuracy. A busbar coupler of \(j0.0005\) pu joins buses 3 and 4 of the completed network. Carry out the Type 4 addition, examine the denominator, and say what should have been done instead.
Show answer
The network already presents \(Z_{33}+Z_{44}-2Z_{34} = j0.17377+j0.17680-2(j0.16201) = j0.02655\) between the two buses, so
\[ Z_{ll} = j0.0005 + j0.02655 = j0.02705 \]The denominator is fine — \(j0.027\) against diagonals of \(j0.17\). The correction terms are what suffer:
\[ Z_{33}^{\text{new}} = j0.17377 - \frac{(j0.01176)^{2}}{j0.02705} = j0.17377 - j0.00511 = j0.16866 \]using \(Z_{33}-Z_{34} = j0.01176\) — a difference of two numbers agreeing to two significant figures. Five-figure inputs give three-figure differences, and squaring them gives two. The result carries perhaps two reliable digits where the inputs had five.
The right answer is not to add the element at all. A coupler of \(j0.0005\) makes buses 3 and 4 the same node to within 0.3% of either diagonal. Merge them into a single bus, rebuild the network with four buses instead of five, and the ill-conditioning disappears along with the spurious distinction. This is the same conclusion Set 17 reached from the condition number, arrived at from the other end.
The general rule: if \(z_b \ll Z_{jj}+Z_{kk}-2Z_{jk}\), the element is a bus merge and not a branch. Modelling it as a branch is a data-preparation error that no amount of numerical care will repair.
C2 — Building with mutual coupling. Two lines on a common tower are mutually coupled. Show that the four cases of the algorithm no longer suffice, derive the modification for adding a branch coupled to an element already in the network, and say where this matters.
Show answer
Why the four cases fail. Each assumes the added element's current depends only on the voltage across it. With coupling, the new element's current depends also on the current in the coupled element, and the added row of the augmented matrix is no longer a copy or a difference of existing rows.
The generalised Type 2. Let the new element \(p\)–\(q\) be coupled to an existing element \(a\)–\(b\), with primitive impedances \(z_{pq,pq}\), \(z_{pq,ab}\), \(z_{ab,ab}\). Then for the new bus \(q\):
\[ Z_{iq} = Z_{ip} + \frac{z_{pq,ab}}{z_{ab,ab}}\left(Z_{ia}-Z_{ib}\right) \]\[ Z_{qq} = Z_{pq} + z_{pq,pq} + \frac{z_{pq,ab}}{z_{ab,ab}}\left(Z_{qa}-Z_{qb}\right) \]The structure is the same but the copied row acquires a correction proportional to the coupling ratio and to the voltage difference across the coupled element. Setting \(z_{pq,ab} = 0\) recovers the plain Type 2. The Type 3 and Type 4 cases are modified the same way, with the elimination unchanged.
Where it matters, and it matters a great deal. Positive-sequence mutual coupling between transmission circuits is a few per cent and is normally ignored. Zero-sequence coupling between parallel circuits on a common tower reaches 50–70% of the self-impedance, because the earth return path is shared. Neglecting it produces:
\[ \begin{array}{ll} \text{Earth-fault currents} & \text{wrong by tens of per cent} \\ \text{Distance relay reach} & \text{over- or under-reaching, depending on the phasing} \\ \text{Auto-reclose success} & \text{mis-predicted} \end{array} \]This is the single most common source of error in earth-fault studies on double-circuit lines, and Set 22 returns to it with the sequence networks that make the coupling explicit.
C3 — What the fault study does not compute. The 799 MVA at bus 1 was obtained from a purely reactive network with no loads, one prefault voltage and one machine reactance per generator. Examine each of those four assumptions and say which way each biases the answer.
Show answer
\[ \begin{array}{lll} \text{Assumption} & \text{Direction of error} & \text{Size} \\ \hline \text{Resistance neglected} & \text{overstates } I_f & <1\% \\ \text{Loads neglected} & \text{understates } I_f & 5\text{--}10\% \\ \text{Motors neglected} & \text{understates } I_f & 10\text{--}30\% \\ \text{Flat 1.0 pu prefault} & \text{either way} & \pm5\% \\ \text{One reactance per machine} & \text{understates the first cycle} & \text{see below} \end{array} \]Resistance. Including it makes \(|Z_{kk}|\) slightly larger, so the true current is marginally lower. Under 1% for transmission-class \(x/r\), and standards permit neglecting it.
Loads. A static load is a shunt admittance to the reference and therefore an additional path — it raises the fault level. Neglecting it is conservative for voltage-dip studies and non-conservative for switchgear duty, so standards prescribe including it for the latter.
Motors. An induction motor is a source for the first few cycles, its rotor flux decaying with a time constant of 50–150 ms. In an industrial system motors can contribute 30% of the initial current. This is the largest of the neglected terms and the one that most often makes a hand calculation useless.
Prefault voltage. Taking 1.0 pu everywhere is a convention; the real profile before a fault might be 1.05 at the generators and 0.97 at bus 5. The error is bounded by the operating band and standards specify a voltage factor — typically 1.1 for maximum-current calculations at high voltage.
The single reactance. A synchronous machine's reactance is not one number but three, applying at different times:
\[ \begin{array}{lll} x''_d \approx 0.15\text{--}0.25 & \text{first 2--3 cycles} & \text{breaking and making duty} \\ x'_d \approx 0.25\text{--}0.40 & 0.1\text{--}2\ \text{s} & \text{stability studies} \\ x_d \approx 1.0\text{--}2.0 & \text{steady state} & \text{sustained fault current} \end{array} \]The study here used \(x''_d\), which is correct for switchgear duty. Using \(x_d\) instead would give a fault level five times smaller and would be entirely wrong for that purpose — while being exactly right for the question of what current a fault sustains if it is not cleared.
The net effect. The two understating errors dominate, so 799 MVA is a lower bound. A proper study to IEC 60909 would give perhaps 900 MVA at bus 1 — which is why the standard exists, and why a matrix calculation is the beginning of a fault study rather than the end.
Multiple-Choice Questions
MCQ 1. \(Z_{ii}\) is:
(a) the sum of impedances at bus \(i\) (b) the Thévenin impedance seen at bus \(i\) (c) the line impedance (d) \(1/Y_{ii}\)Show answer
(b). Option (d) is a common error — the inverse of a matrix is not the matrix of inverses. Problem 1.MCQ 2. Adding a branch from the reference to a new bus changes:
(a) nothing existing (b) one row (c) the diagonals (d) everythingShow answer
(a). Type 1 borders the matrix with zeros; the new bus is connected to nothing existing. Problem 2.MCQ 3. In a Type 2 addition from bus \(k\) to a new bus \(p\):
(a) \(Z_{ip} = 0\) (b) \(Z_{ip} = Z_{ik}\) (c) \(Z_{ip} = Z_{ik}+z_b\) (d) \(Z_{ip} = z_b\)Show answer
(b) — the new column copies column \(k\), because \(z_b\) carries no current when bus \(p\) is open. Only the diagonal gets \(+z_b\). Problem 3.MCQ 4. Which cases require an elimination step?
(a) 1 and 2 (b) 3 and 4 (c) 2 and 4 (d) all fourShow answer
(b) — the two that close a loop. Problem 6.MCQ 5. The Type 4 denominator \(z_b + Z_{jj}+Z_{kk}-2Z_{jk}\) contains:
(a) a determinant (b) the Thévenin impedance between the two buses (c) a mutual term (d) a scaling factorShow answer
(b). Inject \(+1\) at \(j\) and \(-1\) at \(k\) and read the voltage difference. Problem 5.MCQ 6. For a network of \(n\) buses and \(e\) elements, the number of eliminations is:
(a) \(n\) (b) \(e\) (c) \(e-n\) (d) \(e-n+1\)Show answer
(c) — the links. The other \(n\) elements form a spanning tree and need none. Problem 6.MCQ 7. The order of building affects:
(a) the final matrix (b) the arithmetic volume and the conditioning (c) the number of eliminations (d) nothingShow answer
(b). The matrix and the elimination count are both fixed by the network. Problem 12.MCQ 8. An element of impedance \(z_b\) is removed by:
(a) setting its entries to zero (b) adding \(-z_b\) in parallel (c) rebuilding (d) adding \(1/z_b\)Show answer
(b) — the parallel combination is an open circuit. Problem 13.MCQ 9. Removing a line from a network:
(a) raises fault levels (b) lowers them (c) leaves them unchanged (d) depends on the loadingShow answer
(b). Which is why fault studies are run on the intact network — the outage case is never the worse one for switchgear duty. Problem 13.MCQ 10. The voltage at bus \(i\) during a solid fault at bus \(k\) is:
(a) zero (b) \(V^{(0)}(1-Z_{ik}/Z_{kk})\) (c) \(V^{(0)}Z_{ik}/Z_{kk}\) (d) \(V^{(0)}Z_{kk}/Z_{ik}\)Show answer
(b). One column of the matrix gives the whole profile. Problem 16.MCQ 11. A fault impedance \(Z_f\):
(a) raises the fault current (b) lowers it and raises the faulted-bus voltage (c) has no effect (d) only affects earth faultsShow answer
(b). Easier to interrupt, harder to detect. Problem 18.MCQ 12. A fault study should use which machine reactance for switchgear duty?
(a) \(x_d\) (b) \(x'_d\) (c) \(x''_d\) (d) the leakage reactanceShow answer
(c) — the subtransient value, applying for the first two or three cycles. Using \(x_d\) understates the duty by a factor of about five. Challenge C3.
Key Formulas
| Case | Relation | Notes |
|---|---|---|
| Definition | \(Z_{ij} = V_i/I_j\), others open | \(Z_{ii}\) is Thévenin |
| Type 1 | \(Z_{pp} = z_b\), rest zero | Reference to new bus |
| Type 2 | \(Z_{ip} = Z_{ik}\), \(Z_{pp} = Z_{kk}+z_b\) | Bus \(k\) to new bus |
| Type 3 | \(Z_{ij}^{\text{new}} = Z_{ij} - \dfrac{Z_{ik}Z_{kj}}{Z_{kk}+z_b}\) | Bus \(k\) to reference |
| Type 4 row | \(Z_{il} = Z_{ij}-Z_{ik}\) | Fictitious node |
| Type 4 diagonal | \(Z_{ll} = z_b+Z_{jj}+Z_{kk}-2Z_{jk}\) | Then Kron-eliminate \(l\) |
| Between-bus impedance | \(Z_{jj}+Z_{kk}-2Z_{jk}\) | What the network already offers |
| Removal | add \(-z_b\) in parallel | Type 3 or 4 as appropriate |
| Modification | \(z = \dfrac{z_{\text{old}}z_{\text{new}}}{z_{\text{old}}-z_{\text{new}}}\) | Sign follows the direction |
| Branch and link count | \(n\) branches, \(e-n\) links | Only links need elimination |
| Fault current | \(I_f = V^{(0)}/(Z_{kk}+Z_f)\) | Solid fault: \(Z_f = 0\) |
| Fault voltages | \(V_i = V^{(0)}\left(1-\dfrac{Z_{ik}}{Z_{kk}+Z_f}\right)\) | One column suffices |
| Line currents | \(I_{ab} = (V_a-V_b)/z_{ab}\) | After the profile |
| Fault level | \(S_f = S_{\text{base}}/|Z_{kk}|\) | MVA on the chosen base |
Common Mistakes
Writing \(Z_{ii} = 1/Y_{ii}\). The inverse of a matrix is not the matrix of inverses; the two differ by a factor of three or more — Problem 1.
Adding \(z_b\) to the whole new row in a Type 2. Only the diagonal gets it; the off-diagonals are plain copies — Problem 3.
Forgetting the elimination in Types 3 and 4. The bordered matrix is not the answer; it is the intermediate — Problem 6.
Omitting the factor 2 in \(Z_{jj}+Z_{kk}-2Z_{jk}\). Both cross terms are present and symmetry combines them — Problem 5.
Starting the build with an element that touches no existing bus. Every element must connect to the partial network or to the reference — Problem 12.
Removing an element by zeroing its entries. Add \(-z_b\) in parallel instead — Problem 13.
Modelling a busbar coupler as a branch. It is a bus merge, and treating it as a Type 4 destroys the accuracy — Challenge C1.
Building a fault matrix without the machines. The result is dominated by the line charging and is meaningless — Set 17, Problem 8.
Using \(x_d\) for switchgear duty. The subtransient \(x''_d\) is the right one; \(x_d\) understates the current fivefold — Challenge C3.
Neglecting motor contribution in an industrial system. It can be 30% of the initial current and is the largest neglected term — Problem 15.
Assuming a fault outside a bus is less severe. Two buses joined by a stiff tie collapse together, as buses 3 and 4 did — Problem 16.
Expecting fault current to take the direct route. It takes the low-impedance one; line 3–4 carried 39% of the current to a fault at its own end — Problem 17.
The impedance matrix has been built, verified, modified and used. Four cases, distinguished by two questions — does the element reach a new bus, and does it touch the reference — construct the whole thing, and one column of the result is a complete symmetrical fault study. The five-bus network now exists in both forms, and the two have been checked against each other.
Set 19 leaves fault analysis and returns to the nonlinear problem the DC approximation of Set 17 was invented to avoid: the load flow, solved on the same five-bus system by Gauss–Seidel. Set 20 solves it again by Newton–Raphson and compares the two. Part 5 then comes back to faults with the symmetrical components that make the unsymmetrical cases tractable — and there the impedance matrix reappears, three times over, one for each sequence network.