## PowerModelsProtection.jl

Fault study formulations for PowerModels and PowerModelsDistribution
Author lanl-ansi
Popularity
7 Stars
Updated Last
1 Year Ago
Started In
February 2020

# PowerModelsProtection

Fault study for PowerModels and PowerModelsDistribution

In the future this will also include optimal protection coordation formulations and possibly also protection coordination constraints for optimal switching problems

## Modeling Assumptions

• Generators are modeled as voltage sources behind an impedance. For synchronous generation, this is the subtransient reactance \$X_d''\$. For inverters, this is currently a virtual resistance. A more accurate model for inverters will take into account their current limits
• Loads are neglected
• Faults are modeled as an admittance matrix

## Usage Example (Balanced Case)

```using PowerModels, PowerModelsProtection, Ipopt
net = PowerModels.parse_file("case5.raw", import_all=true)
solver = Ipopt.Optimizer

net["fault"] = Dict()
net["fault"]["1"] = Dict("bus"=>2, "r"=>0.0001)

results = PowerModelsProtection.run_fault_study(net, solver )
print(results)```

## TODO

TODO section has moved to issues

## Inverter Fault Models

### Grid-Following Inverter

#### Balanced

1. `k*p = vr*cr - vi*ci`
2. `k*q = vr*ci + vi*cr`

where `k` is a decision variable ranging from 0 to 1

### Unbalanced

An inverter under unbalanced conditions will operate at a fixed power factor averaged across all phases while injecting only positive-sequence current. This sounds ugly, but the constraints don't appear to be too bad.

Given

1. `a = ar + ai = exp(j*2*pi/3) = -1/2 + j*sqrt(3/2`
2. `a^2 = a2r + j*a2i = exp(j*4*pi/3) = -1/2 - j*sqrt(3/2`

Positive-sequence current constraints:

1. `car = c1r`
2. `cai = c1i`
3. `cbr = a2r*c1r + a2i*c1i`
4. `cbi = a2r*c1i + a2i*c2r`
5. `ccr = ar*c1r + ai*c1i`
6. `cci = ar*c1i + ai*c1i`

Constant power factor constraints:

1. `k*p = var*car + vbr*cbr + vcr*ccr - vai*cai - vbi*cbi - vci*cci`
2. `k*q = var*cai + vbr*cbi + vcr*cci + vai*car + vbi*cbr + vci*ccr`

### Grid-Forming Inverter

#### Virtual Resistance Model

`vr`, `vi` set from inverter node voltage base power flow `rs = 0.8 pu`, gives `1.3 pu` current into a short `xs = 0 pu`

#### Current Limiting Model

This model assumes that `vm`, `va` set from inverter node voltage from base power flow

```vr[c] = kg[c]*vm[c]*cos(va[c])
vi[c] = kg[c]*vm[c]*sin(va[c])
-cmax <= crg[c] <= cmax for c in cnds
-cmax <= cig[c] <= cmax for c in cnds```

Objective is `sum( sum((vr[c] - vm[c]*cos(va[c]))^2 + (vi[c] - vm[c]*sin(va[c]))^2 for c in cnd) for g in inverter_gens)`

#### Current Limiting Model with Droop

Constraints

``````Vg0 = V0 + zg*Ig0
V = kg*Vg0 - Z*Ig
|Ig| <= Igmax
``````

Objective is `sum( (vg - vg0)^2 for g in inverter_gens)`

This code is provided under a BSD license as part of the Multi-Infrastructure Control and Optimization Toolkit (MICOT) project, LA-CC-13-108.

### Required Packages

View all packages