Distribution load models#

GPF supports all eight OpenDSS load models. Each model defines how active and reactive power change with terminal voltage.

Common terminal equation#

Let x = |V|/V_nom, where V is one load branch voltage and V_nom is its nominal voltage. In the normal voltage region, each power channel is expressed as a weighted sum of exponent responses:

\[\begin{split}\begin{aligned} P(x) &= P_0 \sum_k w_{P,k}x^{e_{P,k}}, \\ Q(x) &= Q_0 \sum_k w_{Q,k}x^{e_{Q,k}}, \\ I(V) &= \left(\frac{P(x)+jQ(x)}{V}\right)^*. \end{aligned}\end{split}\]

GPF differentiates this equation analytically with respect to the real and imaginary voltage components.

OpenDSS model mapping#

The following table states the normal-region response.

Model

Active-power response

Reactive-power response

Source meaning

1

P0

Q0

Constant power

2

P0 x^2

Q0 x^2

Constant impedance

3

P0

Q0 x^2

Motor load approximation

4

P0 x^cvrwatts

Q0 x^cvrvars

Conservation voltage reduction

5

P0 x

Q0 x

Constant current magnitude

6

P0

Q0

Constant power with fixed-Q source policy

7

P0

Q0 x^2

Constant active power and fixed impedance Q

8

Weighted ZIP

Weighted ZIP

ZIPV response with voltage cutoff

For model 8, the first three ZIPV values weight the impedance, current, and power terms for active power. The next three values provide the corresponding reactive weights. The seventh value defines the cutoff voltage. GPF preserves the entered weights and does not renormalize them.

Voltage-region policies#

Models 1, 3, 4, 5, and 8 use the normal response between VMinPU and VMaxPU. Below VMinPU, current is interpolated toward the bounded low-voltage region. Above VMaxPU, a matched impedance response preserves the boundary value while preventing unbounded current behavior.

At or below VLowPU, a base-impedance response is used. This response keeps current finite as voltage approaches zero. Model 2 remains its quadratic response across all voltages and therefore needs no separate voltage policy.

Models 6 and 7 apply separate active and reactive boundary rules. Their active channel uses a boundary-matched impedance response, while their reactive channel uses the base-impedance response outside the normal region. This distinction preserves their OpenDSS semantics even where their normal-region equations match another model.

Model 8 multiplies both power channels by the smooth OpenDSS cutoff function:

\[m(x)=\frac{1}{1+\exp[-1000(x-x_{\mathrm{cutoff}})]}.\]

The analytic derivative includes the derivative of this multiplier.

Connections and phases#

The entered total kW and kvar are divided across the active load branches. A wye connection uses phase-to-neutral branch voltage. A delta connection uses phase-to-phase branch voltage. Open-delta and missing-phase loads retain only the branches that their conductor declarations create.

Power sign and operating-point updates#

Positive load power denotes consumption. Negative active or reactive values are accepted and retain the same voltage-response law, which permits source-like test cases without changing the current convention.

The snapshot parser retains daily profile references but does not execute an OpenDSS time-mode simulation. A GPF operating-point schedule can apply explicit active and reactive multipliers to the base operating point.

Validation#

The load equations are validated against OpenDSS terminal-current results. The test matrix covers all eight models, wye and delta connections, missing phases, positive and negative power, zero power, normal and limited voltage regions, and exact voltage boundaries. Network tests then verify the same laws inside complete feeder solutions.