Skip to content

modelblocks-org/module_co2stop_cdr

Repository files navigation

Module CO2Stop - Carbon Dioxide Removal in Europe

A module to aggregate CDR potential in Europe into flexible spatial resolutions, using the CO2Stop dataset

About

This is a modular snakemake workflow created as part of the Modelblocks project. It can be imported directly into any snakemake workflow.

For more information, please consult the Modelblocks documentation, the integration example, and the snakemake documentation.

Overview

The analysis of the module is structured as follows:

  1. The CO2Stop dataset is downloaded and cleaned up following methods described in the JRC - CO2 transport report.
  2. To avoid double-counting, traps within the remaining storage units are removed as their capacity is already included in the storage unit total (please consult the CO2Stop Final report section 2.3.1 for details). Additionally, the following removal criteria is applied to further clean the data:
    • Cases marked as 'not assessed' or as 'undisclosed' in the dataset.
    • Ambiguous duplicates (these are a few small traps located in the north sea with repeated IDs and capacities).
    • Optionally, details from the dataset are used to remove the following, if configured:
      • Qualitative cases marked as having surface or subsurface issues, and artificially created polygons.
      • Quantitative values (e.g., porosity, depth, ...).
  3. Three scenarios (low, medium, high) are created for each sequestration type (aquifer, gas, oil) for the remaining CO2Stop data. User-configured lower and upper bounds are applied per-polygon at this stage. See bounds_mtco2: co2stop_polygons in the configuration schema for more information.

  1. The resulting sequestration potential is aggregated per scenario into user provided shapes.

Warning

Estimates from the CO2Stop dataset are biased by disclosure (or lack thereof), and the filtering settings used. Some countries are affected more than others, with Germany having particularly poor disclosure.

Similarly, CO2Stop suffers from poor data handling practices that make unavailable data and 'true' zero values indistinguishable from each other, amplifying the uneven assignation of sequestration. For example: setting porosity_ratio: 0.1 will completely remove France in most cases.

We provide automated figures and logging (in logs/storage_units/ and logs/traps/) so users can evaluate how their settings affect polygon selection. Below is an example for storage unit aquifers where only undisclosed and artificial polygons have been removed. This can be seen as a MINIMUM amount of removals.

Configuration

Please consult the configuration README and the configuration example for a general overview on the configuration options of this module.

Input / output structure

As input, all you need to provide is a .parquet shapes file with the polygons to aggregate capacities into. This file should follow the schema provided by the geo-boundaries module.

Outputs for each input shape file can be requested per potential scenario (low, medium, high), and CDR group (aquifer, gas, oil, and total aggregate sum).

Please consult the interface file for more information.

Development

We use pixi as our package manager for development. Once installed, run the following to clone this repository and install all dependencies.

git clone git@github.com:modelblocks-org/module_co2stop_cdr.git
cd module_co2stop_cdr
pixi install --all

For testing, simply run:

pixi run test-integration

To test a minimal example of a workflow using this module:

pixi shell    # activate this project's environment
cd tests/integration/  # navigate to the integration example
snakemake --use-conda --cores 2  # run the workflow!

References

This module is based on the following research and datasets:

About

A module to aggregate European CDR potential from the CO2Stop dataset into flexible spatial resolutions

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages