Skip to content

ESFEX v0.1.6

Choose a tag to compare

@msotocalvo msotocalvo released this 08 Jun 08:13
· 103 commits to main since this release

Grid Builder reliability, completeness, and country-scale performance.

⚡ Performance

  • "Building network" no longer hangs on country-scale regions. Four independent O(n²) hot paths in the build pipeline are now linear: bus snapping (over-wide candidate window), disconnected-component bridging and equipment chaining (linear nearest-bus scans → projected KD-tree), line removal (per-fix list rebuild → batched), and per-edge bridge detection in electrical-parameter inference (a BFS per edge → a single iterative Tarjan pass). A ~25k-feature import (e.g. Japan) that previously hung for 20+ minutes now completes in seconds.

✨ Added

  • Demand visualizer — a reusable Plotly demand chart (Grid Builder and node panel) with a date x-axis that auto-scales on zoom, a red mean line, and a deep "Demand statistics" panel.
  • Complete, functional built networks — generators are assigned a fuel and a technology from a powerplantmatching-style taxonomy (CCGT/OCGT, steam and combustion engines, run-of-river/reservoir/pumped hydro, PV, on/offshore wind), lines get capacities and impedances from a standard line-type catalog (PyPSA-style r/x/c per km with an N-1 derate), and nodes are filled with default operating reserves and transmission losses. No more orphan generators without a fuel or technology.
  • Per-phase build timing — the Grid Builder result panel now reports a "Timing" breakdown (seconds per build phase).

🔧 Changed

  • Fuel Entry Point and Fuel Source unified into a single "Fuel Source" concept across the model and the Studio GUI.

🐛 Fixed

  • OSM fetch timeout on large regions — large Overpass queries (e.g. Japan) are tiled into sub-requests instead of failing on a single monolithic query, and wrapped longitudes are normalized so the WRI/GEM/GridFinder layers return data across the ±180° meridian.
  • "Naming nodes" hang — the node-naming step is time-boxed and the subsequent rendering no longer freezes the UI after large-region builds.
  • "Lines toward a centroid" after a rebuild — the node-assignment spatial index cached on the centroid count, so a rebuild with re-clustered centroids of the same count reused a stale tree and collapsed the network toward the wrong centroids. It is now keyed on centroid content with a projected metric and exact-haversine refinement.
  • Map zoom-out and world wrapping — the Grid Builder map is constrained to a single copy of the world: no zooming out below 1× world size and no panning onto wrapped copies of the globe (which produced out-of-range longitudes).
  • OTEC cycle diagrams across NumPy/SciPy versions — thermodynamic state values are coerced to plain floats so the T-s / P-h loop arrays stay homogeneous and mass_flow is always a float, regardless of the installed NumPy/CoolProp build.

Full changelog: v0.1.5...v0.1.6