Skip to content
Merged
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
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