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

Please be aware that this is a multi-environment project (see pixi.toml for details).

  • default: used for development and integration testing. Because it contains Snakemake, conda and pytest as dependencies it should not be used in Snakemake rules.
  • module: contains minimal dependencies used in Snakemake rules. If modified, be sure to export it to Snakemake so it can be recreated by module users:
# create module.yaml and conda-spec pin files in workflow/envs/
pixi run export-snakemake-env module

Testing

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:

Contributors ✨

Thanks goes to these wonderful people, sorted alphabetically (emoji key):

This project follows the all-contributors specification. Contributions of any kind welcome!

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