pypsa-eur icon indicating copy to clipboard operation
pypsa-eur copied to clipboard

feat: add river-water and sea-water sourced heat pumps

Open amos-schledorn opened this issue 8 months ago • 1 comments

Closes # (if applicable).

Changes proposed in this Pull Request

This PR adds potential river-water and sea-water sourced heat pumps based on the implementations by @MajaHIC, @juboerms and @felix-land:

  • retrieval of HERA data for river discharge and ambient temperature
  • retrieval of Copernicus data for seawater temperatures
  • Computation of river-water heat potentials per onshore region (approximation of river water temperature from ambient temperature based on Triebs & Tsatsaronis 2022
  • Mapping of seawater temperatures to onshore regions
  • Spatial limitation of river-water and sea-water heat to district heating areas (Manz et al. 2024)
  • For both river water and sea water, DEA's excess-heat-sourced heat pumps are assumed for cost data - improvement to be tracked in separate issue
  • Added interactive plotting of heat source maps for air, river water and sea water (temperature and, where available energy)
  • Added interactive plotting of COPs
  • Optional interactive plotting of bus balances, s.t. matching string pattern (plotting:interactive_bus_balance:bus_name_pattern), defaults to None

Open TODOs

  • [x] Introduce lower temperature threshold for sea water utilisation
  • [x] Add Copernicus data to bundle
  • [x] Add copyright notice for Copernicus data
  • [x] Update data retrieval
  • [x] Add plotting procedure for heat potentials
  • [x] Final sanity checks

Checklist

  • [x] I tested my contribution locally and it works as intended.
  • [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 config/config.default.yaml.
  • [x] Changes in configuration options are documented in doc/configtables/*.csv.
  • [x] Sources of newly added data are documented in doc/data_sources.rst.
  • [x] A release note doc/release_notes.rst is added.

To be tracked in separate issues

  • Scaling of heat pump investment costs: #1705
  • Restriction of sea-water heat usage: #1706

Testing

Note: I've made these test runs with sea-water heat pump investment costs set to those of air-sourced heat pumps (fixed now but the results have not been re-computed).

Test config

scenario:
  clusters:
  - 30 # number of clusters

clustering:
  resolution_sector: 5h

sector:
  heat_pump_sources:
      urban central:
      - air
      - sea_water
      - river_water
      - geothermal

plotting:
  heat_source_map:
    enable: true

countries: ['DE', 'DK', 'AT']

electricity:
  renewable_carriers: [solar, solar-hsat, onwind, offwind-ac, offwind-dc, offwind-float]

Results

District heat balances

Sea-water heat pumps are built extensively, river-water heat pumps only sparingly. This is expected, due to unlimited sea-water use and river-water heat pump investment costs likely being overestimated. image

image

Example of COP plot

image

Example of heat source plot

(river water temperature) image

amos-schledorn avatar Mar 28 '25 17:03 amos-schledorn

The failing CI is a little odd: System.IO.IOException: No space left on device : '/home/runner/actions-runner/cached/_diag/Worker_20250526-162559-utc.log' Maybe @lkstrp can help?

amos-schledorn avatar May 27 '25 07:05 amos-schledorn

Here is a first batch of comments, mainly reflecting my observations when testing the feature in PyPSA-DE Thanks! I've incorporated your comments.

amos-schledorn avatar Aug 13 '25 12:08 amos-schledorn

So far, test results suggest a CAPEX-based competition between air and water-sourced HPs. With the current costs (to be changed with #1748 ), river-water sourced heat pumps are more expensive and not built. I'd suggest to analyse this further after integrating this feature into #1748. My intuition is that, without a high spatial resolution and focus on district heating, air-sourced heat pumps could remain proxies for surface-water heat pumps. That's why I'd suggest deactivating the latter in config.default.yaml but include them in testing.

amos-schledorn avatar Aug 13 '25 12:08 amos-schledorn

@cpschau Thanks for the feedback! I've resolved most issues. Feel free to commentto / resolve the remaining comments if you disagree.

amos-schledorn avatar Sep 01 '25 09:09 amos-schledorn

@cpschau @fneum Thanks for the comments! Should all be addressed. Only the failing CI remains to be solved. Maybe @lkstrp can help?

amos-schledorn avatar Sep 12 '25 08:09 amos-schledorn

There were a range of comments that are collapsed. Could you double-check these were addressed too?

fneum avatar Sep 12 '25 08:09 fneum