Skip to content

Commit 3254a96

Browse files
committed
Initial state input file design spec
1 parent af5a66c commit 3254a96

2 files changed

Lines changed: 1382 additions & 0 deletions

File tree

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
# State Input Format
2+
3+
A representation of the models state from which it can be initialized. This decouples the model definition from the model state.
4+
5+
In addition to making model initialization easier, it also lets us seperate the case from the dispatch. With one canonical `texas.case.json` we might have multiple operating points provided in `examples/`:
6+
- `texas-summer2025.state.json`
7+
- `texas-winter2025.state.json`
8+
- `texas-summer2026.state.json`
9+
10+
For example `texas-summer2025.state.json` might be structured as:
11+
12+
```json
13+
"header":{
14+
...
15+
},
16+
"buses":{
17+
...
18+
},
19+
"devices":{
20+
...
21+
}
22+
```
23+
24+
Inside the `buses` and `devices` the relevant boundary states needed for intiailziation are given for each component. Then Model initialization at a higher or lower fidelity `PowerFlow`$\leftrightarrow$ `PhasorDynamics`$\leftrightarrow$ `EMT` requires no direct API.
25+
26+
## Bus
27+
28+
### RMS State (PowerFlow & PhasorDynamics)
29+
30+
RMS state initialization/storage is written with real and imaginary parts:
31+
32+
```json
33+
"bus_id_2533":{
34+
"vr": 0.9289638822595822,
35+
"vi": -0.39534548980249884,
36+
"injections": {
37+
"6533_C":{
38+
"ir": 13.185009956359863,
39+
"ii": 0.785739004611969
40+
},
41+
"6533_G":{
42+
"ir": 12.132010459899902,
43+
"ii": 0.785739004611969
44+
}
45+
}
46+
},
47+
```
48+
49+
### ABC State (EMT)
50+
51+
EMT should support balanced initialization (see previous section) but also unbalanced initialization, which would require higher fidelity. This would also specifiy branch injections for distirbuted network models.
52+
53+
```json
54+
"bus_id_2533":{
55+
"va": 0.9289638822595822,
56+
"vb": -0.39534548980249884,
57+
"vc": -0.39534548980249884,
58+
"injections": {
59+
"gen_325":{
60+
"ia": 13.185009956359863,
61+
"ib": 0.785739004611969,
62+
"ic": 0.785739004611969
63+
},
64+
"branch_6533":{
65+
"ia": 13.185009956359863,
66+
"ib": 0.785739004611969,
67+
"ic": 0.785739004611969
68+
}
69+
}
70+
},
71+
```
72+
73+
## Devices
74+
75+
This is where we store stateful information like connectivity and dispatch, which can be shared across all domains (PowerFlow & PhasorDynamics & EMT). This would also let us specify non steady state initialziations with `"omega": 0.0`
76+
77+
78+
```json
79+
"gen_id_2":{
80+
"online": true,
81+
"p": 55,
82+
"q": -12
83+
}
84+
"br_id_2":{
85+
"open": false,
86+
"tap": 1,
87+
"phase": 0
88+
}
89+
```
90+
91+
92+
# Migration
93+
94+
`Bus`:
95+
- Remove the `init` fields from `Bus` in the `INPUT_FORMAT.md`
96+
- make an interface `setVr(..)` and `setVi(..)`.
97+
98+
`Branch`:
99+
- Remove `tap` and `phase` as parameters
100+
- make an interface `setTap(..)` and `setPhase(..)`.
101+
- add `setOpen(..)` interface
102+
103+
`LoadZIP`, `GENROU`, `GENSAL`, `GenClassical`:
104+
- Remove `p0` and `q0` as parameters
105+
- make an interface `setP(..)` and `setQ(..)`.
106+
- add `setOnline(..)` interface

0 commit comments

Comments
 (0)