Open
Conversation
for more information, see https://pre-commit.ci
git remote add upstream https://github.com/pypsa/pypsa-eur.git
- Add retrieve_ffe_load_profiles rule to download FfE industry load profiles - Fix sign error in DSR store-link coupling constraint (discharge - charge) - Fix DRI-H2 node extraction to use store name instead of bus name - Revert biomass-to-methanol cost formula from * to / efficiency - Remove duplicate "Non-specified (Industry)" YAML key in DSR config - Remove unused imports in build_industrial_energy_demand_per_node.py
Key changes: - Make DSR store capacity extendable (e_nom_extendable=True) with capital cost (5 EUR/MWh/year), so optimizer decides whether to build DSR based on value - Add charge/discharge efficiency losses (0.98) to DSR links - Vectorize ramp constraints using linopy/xarray for performance (4 bulk calls instead of millions of individual constraints) - Apply ramp constraints only to physically rigid technologies (BF-BOF, kilns, primary aluminium) with technology-specific rates from config - Remove redundant store-link coupling constraint that duplicated PyPSA's built-in bus balance (KCL), fixing numerical instability - Fix geopandas JSON auto-parsing in gas network scripts - Add temporal-demand-only config for proper A/B comparison - Add DSR impact analysis notebook (Temporal NO DSR vs Temporal + DSR) Results: DSR reduces system cost by 3.85B EUR/year (-0.62%), average electricity prices by 0.53%, and renewable curtailment by 26% compared to an equivalent temporal-demand baseline. Co-authored-by: Cursor <cursoragent@cursor.com>
- Replace weekly average plot (misleading mirror effect) with daily net DSR position over the year - Add DSR-vs-price correlation on representative days (highest activity, winter, summer) showing charge during low prices, discharge during high - Add average hourly DSR dispatch vs price profile across full year Co-authored-by: Cursor <cursoragent@cursor.com>
…ling constraint - Fix bug: use `h2_bus` instead of `dri_bus` in DRI H2 coupling log message - Remove `add_dsr_link_store_coupling_constraint` function (redundant with PyPSA's bus balance / KCL) Co-authored-by: Cursor <cursoragent@cursor.com>
…mall overrides - Move all DSR v3 parameters (economic costs, technology_breakdown, technology-specific flexibility/shift/ramp/restriction, negative_only, min_load) into config/config.default.yaml with enable: false - Create small override files in config/test/ for each scenario: - config.eu_38_2030_base.yaml: shared EU27 scenario settings - config.dsr_v3_test.yaml: DSR enabled test run - config.temporal_no_dsr.yaml: no-DSR baseline - config.dsr_v3_renewable.yaml: DSR + Fit-for-55 renewables - config.no_dsr_renewable.yaml: no-DSR + Fit-for-55 renewables - Replace config/test/config.industry.flex.yaml (1374 lines) with small override - Remove config/config.yaml and config/config.temporal_no_dsr.yaml from tracking (config/config.yaml stays local-only via .gitignore) - Update Snakefile with config stacking documentation - Add analysis_output/ and *Zone.Identifier to .gitignore Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
28 clusters (1/country), 3h resolution, 2030 costs & CO2 budget. Temporal industry load enabled but all flexibility disabled (no DSR, no heat DSM, no BEV DSM, no V2G). Custom space heat reduction factors. Intended as baseline for flex vs no-flex comparison. Co-authored-by: Cursor <cursoragent@cursor.com>
…ab/pypsa-eurelectric into industry-dsr-v3-optional
Standalone config files that bypass the planning_horizons wildcard bug (PyPSA-Eur PyPSA#2100) by hardcoding all year-dependent parameters. Key changes vs previous scenario-based approach: - V2G degradation cost via adjustments (100/60/30 EUR/MWh for 2030/2040/2050) - "Other chemicals" (petrochemicals) added to industry DSR - Industry DSR fractions and shift hours escalate with year - DSR store capital cost decreases over time (5.0/3.0/1.5) - hydrogen_fuel_cell enabled - CO2 budget, EV share, heat params hardcoded per year Made-with: Cursor
…ndustry_transport_fixed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes # (if applicable).
Changes proposed in this Pull Request
In this version, passenger cars have been treated separately along with the industrial flexibility. Scripts changes are build_electricity_demand.py, build_energy_totals.py
Checklist
pixi.toml(usingpixi add <dependency-name>).config/config.default.yaml.doc/configtables/*.csv.doc/release_notes.rstis added.