Fault Types and Their Boundary Conditions

Four fault situations are distinguished, and they differ from each other only in what is constrained at the faulted bus. Everything else — the network, the sources, the voltage factor — is identical. This page is about those constraints and how to read the result.

The four types

TypePhasesRough frequency in practiceZero sequence?
Three-phaseallrareno (balanced)
Single-phase-to-groundonethe large majorityyes
Two-phasetwo, clear of grounduncommonno
Two-phase-to-groundtwo, plus grounduncommonyes

The three-phase fault is the balanced one and usually — though not always — gives the largest current, which is why it is the default sizing case. The single-phase-to-ground fault is by a wide margin the most common in real systems, and it is the one whose magnitude depends most on transformer winding configuration, because its current has to return through the zero-sequence network.

Default phases

A fault may name its phases explicitly (a, b, c, ab, ac, bc) or leave it to the type:

TypeDefault
Three-phaseabc
Single-phase-to-grounda
Two-phasebc
Two-phase-to-groundbc

The two two-phase types default to bc, not ab. This follows power-grid-model, and it is worth stating loudly because getting it wrong produces an entirely plausible magnitude on the wrong pair of conductors — the kind of error that survives a casual review.

Bolted versus impedance faults

A bolted fault is a dead short: zero impedance, therefore infinite admittance. An impedance fault goes through some finite \(Z_f\) — an arc, a tree, a resistive earth path.

The two are not the same formula evaluated at a limit, and gridoxide does not treat them that way. An impedance fault adds an admittance to the faulted bus's diagonal. A bolted fault replaces that bus's equations: its voltage is known to be zero, so the unknown in that position becomes the injected current instead. Letting an infinity into the matrix would produce NaN, not a large current.

The practical consequence for input data: r_f = x_f = 0 means bolted, and that is the default when a fault omits them. A fault that draws no current is not something the component can express, because it would not be a fault.

Reading the symmetrical components

Every result carries the symmetrical-component view alongside the phase quantities, and it is the fastest way to tell whether an answer is sane:

  • Three-phase — positive sequence only. Zero and negative should be numerical noise. If they are not, either the network is genuinely unbalanced or something is wrong.
  • Single-phase-to-ground — all three components present, comparable in size.
  • Two-phase (clear of ground) — no zero-sequence component at all. With no ground return there is nowhere for zero-sequence current to go. This is the single sharpest check available on a short-circuit result.
  • Two-phase-to-ground — all three present.

A second useful check: a delta winding blocks zero-sequence current. If a node sits behind one and still shows zero-sequence voltage, the transformer's zero-sequence branch is wrong.

Both properties are asserted directly in python/tests/test_short_circuit.py.

Multiple simultaneous faults

Several faults may be declared at once, on the same bus or on different ones, subject to one restriction: they must all share a fault type and phase. The boundary conditions of different types rewrite the same matrix entries in incompatible ways, so "one of each, at once" is not a well-posed linear system. Mixing them returns ShortCircuitError::MixedFaultTypes rather than a plausible-looking answer.

Two faults on one bus divide the current between them. A bolted fault short-circuits its bus outright, so any other fault sharing that bus — bolted or not — is bypassed and carries nothing.