Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
f160e1f
test(pp_interop): parity with analyze on the canonical voltage-drop f…
harrysalmon May 10, 2026
488f99b
test(pp_interop): side-by-side comparison vs analyze on each fixture
harrysalmon May 10, 2026
beb3393
docs(research): why tree walk and pandapower AC flow disagree
harrysalmon May 10, 2026
d6cd989
docs(test): explain what each pp_interop test is comparing and why
harrysalmon May 10, 2026
347172d
test(pp_interop): topology comparison tests for three festival shapes
harrysalmon May 10, 2026
b6b9d39
chore(scripts): sensitivity sweep over high-impact pp_interop config
harrysalmon May 10, 2026
5bc2729
docs(research): sensitivity to pp_interop config assumptions
harrysalmon May 10, 2026
4ea2057
refactor(constants): decompose RHO_COPPER into traceable components
harrysalmon May 10, 2026
e2f47fb
fix: address pandapower interop review comments
harrysalmon May 10, 2026
fa9d97b
Merge branch 'feat/pandapower-comparison-tests' into feat/pandapower-…
harrysalmon May 10, 2026
52d4018
fix: satisfy ruff after pp interop comparison merge
harrysalmon May 10, 2026
ac9a8ec
ci: check ruff formatting
harrysalmon May 10, 2026
fdaaf17
docs(research): three-phase asymmetric modelling shopping list
harrysalmon May 10, 2026
105d7d9
docs(research): drop time-cost estimates
harrysalmon May 10, 2026
4a8399f
Merge pull request #13 from harrysalmon/feat/pandapower-interop
vfinel May 15, 2026
0a73e94
Merge remote-tracking branch 'origin/develop' into feat/pandapower-co…
harrysalmon May 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ jobs:
enable-cache: true
- run: uv sync --frozen
- run: uv run ruff check . --verbose
- run: uv run ruff format --check .

test:
runs-on: ubuntu-latest
Expand Down
2 changes: 1 addition & 1 deletion research/pandapower/02_nopywer_power_calculations.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ form factors (16 A / 32 A / 63 A / 125 A).
A GeoJSON FeatureCollection containing:

- **Point features** → loads or the generator. Properties: `name`, `power`
(watts), `phase` (1, 2, 3, "U", "Y", or null). The generator is identified
(watts), `phase` (1, 2, 3, or null). The generator is identified
by the substring `"generator"` in its name.
- **LineString features** → cables with the two coordinate endpoints.
Properties: `length` (m, optional — geodesic distance is used otherwise),
Expand Down
2 changes: 1 addition & 1 deletion research/pandapower/03_intersection.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ nopywer concepts have a direct pandapower analogue and which do not.

| nopywer concept | pandapower analogue | Notes / friction |
|---|---|---|
| `PowerNode` (load) | `net.load` (balanced) or `net.asymmetric_load` (per-phase) | Loads with `phase ∈ {1,2,3}` would need `asymmetric_load` with `p_a_mw / p_b_mw / p_c_mw`. nopywer's "U" / "Y" sub-grid markers have no pandapower analogue. |
| `PowerNode` (load) | `net.load` (balanced) or `net.asymmetric_load` (per-phase) | Loads with `phase ∈ {1,2,3}` would need `asymmetric_load` with `p_a_mw / p_b_mw / p_c_mw`. Non-numeric or missing phase data has no pandapower analogue and should be treated as unassigned. |
| `PowerNode` (generator) | `net.ext_grid` (slack bus) | Pandapower needs a slack reference. The generator has no internal impedance in nopywer — would map to a `vm_pu = 1.0` `ext_grid` on a dedicated bus. |
| `Cable` | `net.line` | The bridge requires R, X, C, max-I per km — see "Cable model gap" below. |
| `Cable.length_m` | `line.length_km` | Straight conversion `× 1e-3`. Pandapower forbids zero-length lines. |
Expand Down
9 changes: 4 additions & 5 deletions research/pandapower/04_porting_considerations.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,11 +109,10 @@ These apply regardless of strategy.
no upstream traceable source ("Rich's old notes"). Whatever path is
chosen, this number must be carried forward visibly, with a comment, or
explicitly retired with a justified replacement.
- **The "phase" property.** nopywer accepts `phase ∈ {1, 2, 3, "U", "Y",
None}`. Phases 1/2/3 map to pandapower's a/b/c. "U" / "Y" are sub-grid
labels with no electrical meaning in `analyze.py` (they appear only in
the reporting in `print_grid_info`). They have no pandapower equivalent
and would need to be threaded around any pandapower path.
- **The "phase" property.** nopywer accepts numeric phase assignments for
single-phase loads. Phases 1/2/3 map to pandapower's a/b/c. Missing or
non-numeric phase values have no pandapower equivalent and should be
treated as unassigned on any pandapower path.
- **Performance and packaging.** pandapower with numba is not pip-friendly
on every platform (Apple Silicon, NixOS, Alpine). Without numba it is
slower but portable. For a CLI that may run on a laptop in a field,
Expand Down
Loading
Loading