pypsa-eur
pypsa-eur copied to clipboard
Enhanced Geothermal Systems
Addresses #541.
Adds enhanced geothermal systems (EGS) for electricity generation an combined heat and power.
This PR adds EGS to PyPSA-Eur. EGS refers to extracting heat from engineered (e.g. fractured) hot dry rock in deep geological layers. The main features are
- Inclusion of potentials for egs capacity for electricity generation and the respective capital costs, based on geothermal gradients, subsurface heat conductivity based on Aghahosseini, Breyer 2020.
- EGS for combined heat and power; if
urban central heatis found in the network, EGS generates both forACandurban central heat, respecting preliminary findings from the upcoming paper: CHP operation is most cost-effective. - A switch in the config that makes either optimistic or pessimistic assumptions on future developments of EGS cost. In the case of optimism the cost reduces exponentially towards 2050, replicating estimations made in the Aghahosseini et al. (2020). That paper assumes a cost reduction of 7.5% for each doubling in installed capacity, paired with an exponential increase in installed capacity towards 2050. The switch is by default set to the pessimist version, where the costs remain at their estimated 2020 level.
- Flexible EGS which adds a storage unit to the generation nodes. Its use represents the application of backpressure to the production well, and boosted generation afterwards, see Ricks et al. 2023.
- A switch that makes the execution more performant, and checks afterwards if that choice potentially changed model results.
- Temperature-dependent capacity factors. Research suggests that EGS runs more efficiently when ambient temperatures are lower relative to the temperature for which the plant was planned. This induces time-dependent efficiencies, which can be switched on in the config.
This PR is how sharp, but crashed without adding the attached file to the databundle (egs_costs.json), and also needs a PR for organic rankine cycles just added to tech-data.
More long-term but very relevant features could be deep geothermal aquifers, along the lines of the recently completed district heating project finished in Munich.
Please let me know about any ideas and suggestions that you have :) All the best, Lukas
Checklist
- [X] I tested my contribution locally and it seems to work fine.
- [X] Code and workflow changes are sufficiently documented.
- [X] Changed dependencies are added to
envs/environment.yaml. - [X] Changes in configuration options are added in all of
config.default.yaml. - [ ] Changes in configuration options are also documented in
doc/configtables/*.csv. - [X] A release note
doc/release_notes.rstis added. - [X] Fixed pre-commit issues
@LukasFrankenQ is the dataset behind that also globally available? What's missing in this PR as it is still in draft mode?
Hi @pz-max, yeah valid points, the dataset is from the plotting in Aghahosseini et al.. In the original supplemental of that paper, only a country-aggregated version was included, through a mail exchange the lon-lat version of the data used here was given to me. The file would need to be added to the databundle, this is the main reason it is just a draft right now
Alright, many thanks for the review @lisazeyen! Will make the changes!
@LukasFrankenQ should I have another look at the PR? If so, can you update to the latest master?
@lisazeyen Thank you for the offer! I would work on it for one/two more days, mainly I would like to use the adjustments in the config to take care of the cost reductions. I would also remove the performant part :)
Hi @lisazeyen, I think it would be ready now for another round.
I should note that it this PR depends on a cost file compiled by technology-data including the PR on organic Rankine cycles (https://github.com/PyPSA/technology-data/pull/111)
The corresponding PR for technology-data is now merged and included in the new release.
Awesome, many thanks @fneum. Will shortly update to newest commits!
Hi @lisazeyen, Hi @fneum, I updated the PR, made some final checks for bugs and tested an array of configurations. Everything seems to run smooth, and should be implemented as discussed.
There are two points/questions that are still open:
- I took some freedom to make the logging within
prepare_sector_networkquite verbose. I think the user is passed some useful (necessary?) information on how to use the EGS feature though, so I think it could be worth it - given the default of EGS being not enabled. If EGS is enabled, the user probably cares about these details. - The default execution appears to not use the latest cost files created by
technology-datawhich crashes the code, probably a standard problem for which you have a procedure in place?
Eager to hear any feedback beyond this, and All the best, Lukas
@LukasFrankenQ great!
- Awesome that you added some logging inforamtion there. I think this is going to be useful.
- In the
config.yamlyou specify the technology data version here. And I think in the latest version all your cost data should be included. Can you double check that this is the reason that the workflow is not running?
Hi @lisazeyen, thanks for getting back so quickly!
Great call about the config, I figured it out, when running the workflow in testing, I originally had laying around an older costs2023.csv file, that was not updated because I had --touched it. It runs smoothly with the the current technology-data version 👍
@LukasFrankenQ great! Nice to have this in the master!
Thank you! :)