Expand description
Q-V curves: how much reactive headroom does one bus have?
continuation asks how much further the system can
be loaded before it collapses. This asks a narrower and more operational
question about a single bus: how much reactive support would it take to
hold this bus at a given voltage, and how much margin is there before that
stops being possible?
§The method, and why it needs no continuation
Put a fictitious synchronous condenser at the bus — an ideal machine that
holds a voltage and produces whatever reactive power that takes — by
retyping the bus to PV. Then sweep its setpoint downward and read the
reactive power it has to supply at each step:
Q the curve is traced left to right by lowering |V|
| \ (or right to left; the sweep direction is a choice)
| \___ Q > 0: the bus must be *supported* to hold this high
| \___
+-----------\------------------ |V|
| \___
| \__.-- the minimum: dQ/d|V| = 0.
| ^ Below it no setpoint is reachable with less
the nose reactive power — that is the margin.Every point is an ordinary power flow. Fixing |V| is what makes it so:
the bus’s reactive equation is dropped and its magnitude stops being an
unknown, which is exactly a PV bus, and the Jacobian stays non-singular
all the way through the nose. A P-V curve needs a predictor–corrector
precisely because it does not fix a magnitude — λ is a free parameter and
the Jacobian goes singular at the fold. Here the fold is in Q, which is an
output rather than an unknown, so nothing goes singular and a sweep is
enough.
That is a real difference in kind, not an implementation shortcut, and it is
why this module reuses crate::run_power_flow rather than
continuation’s bordered corrector.
§What the margin means
The minimum of the curve is the most reactive power the bus can absorb before the relationship inverts. Reported as a positive number of MVAr: a larger margin is a stronger bus. A bus whose curve barely dips below zero is one small contingency away from having no reachable setpoint at all.
§What this shares with the P-V side
The answer, when both are asked. The bus a P-V trace names critical — the
largest component of the tangent at the nose — should be the bus with the
smallest Q-V margin, because both are measuring the same weakness by
different means. tests/qv_test.rs asserts exactly that, and it is the
strongest gate here: two independent methods agreeing is worth more than
either agreeing with itself.
Structs§
- QvCurve
- A bus’s Q-V curve.
- QvNose
- The bottom of the curve: the most reactive power this bus can absorb.
- QvOptions
- Everything a Q-V sweep needs to know.
- QvPoint
- One setpoint and the reactive power holding it would take.
Enums§
- QvError
- A request a sweep will not attempt, stated rather than approximated.
- QvStatus
- How a sweep ended.
Functions§
- qv_
curve - Traces one bus’s Q-V curve.