Inverter-based resources

An inverter-based resource (IBR) is a source interfaced to the AC network through a power-electronic converter: PV, battery storage, a STATCOM, or a generic converter. It injects controllable active and reactive power subject to a converter apparent-power rating, and can follow a smart-inverter control law (constant power factor, Volt-VAr, Volt-Watt). Parts 1–5 state the foundational model; part 6 records how BMOPFTools realises it. A converter that also connects to a DC network is covered in DC networks. Symbols are defined in Notation.

1. Data model

An IBR is an entry of the top-level ibr object, keyed by its string ID $r$.

FieldTypeUnitReq.Description
busstringHost bus ID $i$
terminal_mapstring[]Conductor→terminal map
topologystringFOUR_LEG, THREE_LEG, or SINGLE_PHASE
prime_moverstringPV / battery / STATCOM / …
s_maxnumber[]VAPer-phase apparent-power rating
p_min, p_maxnumber[]WPer-phase active-power bounds
q_min, q_maxnumber[]varPer-phase reactive-power bounds
i_maxnumber[]APer-conductor current-magnitude limit (optional neutral entry)
p_availnumberWAvailable active power (PV curtailment ceiling)
control_profilestringReference to a control profile
dc_link_coupledboolCouple the phases through a shared DC link
p_dc_min, p_dc_maxnumberWNet DC-side active-power bounds (when dc_link_coupled)
dc_bus, dc_terminal_map, dc_control, …Shared DC-node coupling — see DC networks

2. Input symbols

FieldSymbolNotes
s_max$\textcolor{red}{\mathbf{S}^{\max}_r}$per phase
p_min, p_max$\textcolor{red}{P^{\min}_r},\ \textcolor{red}{P^{\max}_r}$per phase
q_min, q_max$\textcolor{red}{Q^{\min}_r},\ \textcolor{red}{Q^{\max}_r}$per phase
i_max$\textcolor{red}{\mathbf{I}^{\max}_r}$per conductor
p_dc_min, p_dc_max$\textcolor{red}{P^{\text{dc},\min}_r},\ \textcolor{red}{P^{\text{dc},\max}_r}$net DC bounds

3. Variables

Each phase conductor $k$ injects a complex converter current $\textcolor{blue}{I_{r,k}}$, stacked into $\textcolor{blue}{\mathbf{I}_{r}}$. The number of currents follows the topology: one per phase (FOUR_LEG), one per conductor pair (THREE_LEG), or one (SINGLE_PHASE).

4. Equality constraints

Per-phase power

With $\Delta\textcolor{blue}{U_{r,k}}$ the phase voltage difference set by the topology — phase-to-neutral (FOUR_LEG), line-to-line (THREE_LEG), or the terminal pair (SINGLE_PHASE) — the injected complex power is

\[\textcolor{blue}{S_{r,k}} = \Delta\textcolor{blue}{U_{r,k}}\,(\textcolor{blue}{I_{r,k}})^{*} = P_{r,k} + \textcolor{brown}{j}\,Q_{r,k}.\]

Current conservation over the IBR terminals gives its KCL contribution (injection positive at the phase terminal, return at the neutral for FOUR_LEG).

Reactive-power control law

Reactive power is set one of three ways (mutually exclusive):

  • Box (default): the inequality of part 5.
  • Constant power factor (from a control profile's power_factor.pf), a bilinear equality coupling $Q$ to $P$:

\[\operatorname{sign}(\textcolor{red}{\mathrm{pf}})\,Q_{r,k} + \tan(\arccos|\textcolor{red}{\mathrm{pf}}|)\,P_{r,k} = 0,\]

with $\textcolor{red}{\mathrm{pf}}>0$ lagging (absorbing VAr), $<0$ leading.

  • Volt-VAr droop (from volt_var): $Q$ follows a piecewise-linear function of a monitored voltage magnitude $U_k$,

\[Q_{r,k} = \textcolor{red}{Q^{\text{base}}_{r,k}}\; f^{\text{VV}}(U_k),\]

where $U_k$ is phase-to-neutral, phase-to-ground, or phase-to-phase per the profile's voltage_reference, and may be per-phase or phase-averaged.

5. Inequality constraints

Cartesian variable bounds

Optional per-conductor current box on the converter-current components, from i_max (implied by the current circle below).

Engineering bounds

Active-power availability:

\[\textcolor{red}{P^{\min}_{r,k}} \le P_{r,k} \le \textcolor{red}{P^{\max}_{r,k}}.\]

A Volt-Watt droop (from volt_watt) adds a voltage-dependent curtailment cap $P_{r,k}\le\textcolor{red}{P^{\text{base}}_{r,k}}\,f^{\text{VW}}(U_k)$ on top, so the effective limit is the tighter of the two.

Apparent-power circle (the converter rating):

\[P_{r,k}^2 + Q_{r,k}^2 \le (\textcolor{red}{S^{\max}_{r,k}})^2.\]

Converter current circle (optional, per conductor). Because $|\textcolor{blue}{S_{r,k}}| = |\Delta\textcolor{blue}{U_{r,k}}|\,|\textcolor{blue}{I_{r,k}}|$, this makes reactive capability roll off roughly linearly with voltage — the faithful voltage-source-converter behaviour — rather than staying flat at $\textcolor{red}{S^{\max}}$:

\[\textcolor{blue}{I_{r,k}}(\textcolor{blue}{I_{r,k}})^{*} \le (\textcolor{red}{I^{\max}_{r,k}})^2.\]

A trailing i_max entry additionally bounds the FOUR_LEG neutral return current.

Shared-DC-link net power (when dc_link_coupled without an external dc_bus): the per-phase active powers are coupled by a net balance, letting the converter circulate active power between phases (e.g. a four-wire STATCOM balancing an unbalanced feeder):

\[\textcolor{red}{P^{\text{dc},\min}_r} \le \sum_k P_{r,k} \le \textcolor{red}{P^{\text{dc},\max}_r}.\]

For a pure STATCOM both bounds are $0$ (no net active source). When the IBR instead references an external dc_bus, this net power is balanced through DC KCL — see DC networks.

6. Implementation in BMOPFTools

Realisation

  • Rectangular bilinear power with cri/cii the converter currents: $P = \Delta v^r\,\text{cri} + \Delta v^i\,\text{cii}$, $Q = \Delta v^i\,\text{cri} - \Delta v^r\,\text{cii}$ (ibr.jl:_add_ibr_constraints!, stamped per phase by _apply_ibr_phase!).
  • Apparent-power circle via auxiliaries (pi,qi pinned to $P,Q$), as for generators.
  • Physical-root warm start. The bilinear power has a spurious low-voltage / high-current root; the code seeds each current at $\textcolor{blue}{I}\approx\overline{S}/\overline{U}$ from the seeded nominal voltage (_warmstart_ibr_current!) to steer Ipopt onto the physical branch (important in per-unit).
  • Smooth droop encoding. Volt-VAr and Volt-Watt curves are piecewise-linear; BMOPFTools stamps them with a smoothed ReLU/softplus operator (_resolve_volt_var/_resolve_volt_watt, curve_expr) so the corners are differentiable for Ipopt. Droop is applied for SINGLE_PHASE/FOUR_LEG only; THREE_LEG (delta) has too few degrees of freedom and falls back to box bounds with a warning.
  • Neutral-conductor limit via _neutral_current_limit! (as for generators).

Source map

ConstraintCode location
Current variablesibr.jl:_add_ibr_variables!
P/Q, ratings, control lawibr.jl:_add_ibr_constraints!, _apply_ibr_phase!
Volt-VAr / Volt-Watt curvesibr.jl:_resolve_volt_var, _resolve_volt_watt, _monitor_U
Shared-DC couplingdcnetwork.jl:_couple_converter_to_dc! (see DC networks)

Reconciliation note

IBR is not in the Task Force PDF

The entire ibr object — topologies, smart-inverter control profiles (constant-PF, Volt-VAr, Volt-Watt), the shared-DC-link STATCOM coupling, and grid-forming fields — is a BMOPFTools extension with no counterpart in the current PDF. It should be a first-class component in the superseding spec, alongside the DC subsystem it pairs with.