Skip to content

Latest commit

 

History

History
98 lines (79 loc) · 4.66 KB

File metadata and controls

98 lines (79 loc) · 4.66 KB

Project: GenX-SE — Nordic 12-zone energy-system simulator

A standalone GenX case covering all 12 Nordic bidding zones — SE1–4, NO1–5, FI, DK1, DK2 — with 17 transmission lines including the three Swedish snitt cuts, six NO internal AC lines, the seven SE↔neighbor interconnectors, and NO2↔DK1 Skagerrak HVDC.

The companion library checkout is at ~/projects/GenX.jl/ — read that for canonical input-file formats and source code. Don't modify it from inside this repo.

Key locations

Path What it is
system/ Network + 8760-h time-series CSVs
resources/ Resource definitions (Thermal/Vre/Storage/Hydro)
policies/ CO2 cap + min-capacity policies
plots/, scripts/ Plotting + validation Python
data/fetch_entsoe.py ENTSO-E real-data fetcher
~/projects/GenX.jl/example_systems/1_three_zones/ Reference for CSV formats
~/projects/GenX.jl/src/ Source of truth for input semantics

Sweden case — what's real vs synthetic

  • Topology (Network.csv): real. SE1–SE4 with snitt 1/2/4 NTC values reflecting market-available (post-minRAM) capacities.
  • Resource capacities (resources/*.csv): real, ~2024 fleet. Nuclear/oil/hydro are existing-only; renewables and batteries can expand.
  • Time-series (system/Demand_data.csv, Generators_variability.csv, Fuels_data.csv): synthetic, generated by build_timeseries.py. Calibrated to plausible Swedish totals (≈145 TWh/yr, ≈28 GW peak).
  • Real-data path: data/fetch_entsoe.py pulls from ENTSO-E and overwrites the synthetic CSVs. Needs ENTSOE_API_TOKEN in data/.env.

Never commit data/.env, data/raw/, or results/ — they are gitignored inside the sweden_4_zones folder.

Domain facts that must be preserved when extending

Don't re-derive these from memory; they are easy to get wrong:

  1. Nordic synchronous area = NO + FI + DK2 + SE (AC-coupled). DK1, DE, PL, LT are connected only via HVDC (asynchronous). Reserves (FCR/aFRR/mFRR) flow only inside the synchronous area, so neighbor zones must be tagged accordingly if CapacityReserveMargin is added.
  2. EU minRAM / Article 16(8) of Regulation 2019/943 requires ≥70% of secure cross-zonal capacity be offered to the market. Binding since 31 Dec 2025. The values in Network.csv already reflect this. Sweden (Svenska Kraftnät) has compliance issues on snitt 4 — Ei is reviewing after ACER flagged it. If a minRAM_fraction knob is added, that's the dial for sweeping compliance scenarios.
  3. Bidding zones ≠ countries. SE1-SE4 are separate zones within Sweden; DK has two zones (DK1, DK2) in different sync areas.

For more detail, see the memory entries:

  • nordic_synchronous_area.md
  • eu_70pct_maczt.md

Running the Sweden case

cd Tutorials/example_systems_tutorials/sweden_4_zones/
julia --project=. -e 'using Pkg; Pkg.add("GenX"); Pkg.instantiate()'  # once
julia --project=. Run.jl

For fast iteration, set TimeDomainReduction: 1 in settings/genx_settings.yml (8–11 representative weeks → solve in seconds instead of minutes).

Detailed runbook: Tutorials/example_systems_tutorials/sweden_4_zones/HOW_TO_RUN.md.

Working conventions

  • GenX input CSVs: column conventions vary slightly between resource types (Thermal.csv, Vre.csv, Storage.csv, Hydro.csv each have their own schema). Always cross-check against ~/projects/GenX.jl/example_systems/1_three_zones/ or the test fixtures in ~/projects/GenX.jl/test/ before adding new resource rows.
  • Currency: GenX is currency-agnostic; all costs in the Sweden case are nominal $/MWh and $/MW-yr. Don't introduce SEK or EUR conversions silently.
  • Comment frugality: GenX input CSVs aren't documented inline. Domain notes belong in README.md / HOW_TO_RUN.md, not in CSV cells.
  • Julia not installed in this shell — testing the model end-to-end requires the user to run julia Run.jl locally. Don't claim a run succeeded if it wasn't actually executed.

Don'ts

  • Don't modify files in ~/projects/GenX.jl/ from this repo.
  • Don't commit ENTSO-E raw downloads or .env files.
  • Don't change upstream Tutorial_*.ipynb notebooks unless the user asks — they're maintained by Princeton/MIT.
  • Don't conflate AC and HVDC neighbor links (see domain fact #1 above).
  • Don't quote Line_Max_Flow_MW values as "thermal capacity" — they are market-available NTC values.