This repository contains the SHIFT model, a spatially resolved techno-economic optimization of global iron and steel supply chains under decarbonization. It explores how hydrogen-based direct reduced iron (DRI) production and hot-briquetted iron (HBI) trade can shift value creation to regions with renewable energy and capital availability.
The model identifies cost-optimal configurations for mining, hydrogen production, DRI processing, and HBI trade, using a two-stage optimization pipeline and open energy system libraries.
SHIFT evaluates global supply and trade of low-carbon iron and steel at high spatial resolution. The model quantifies where to produce, where to ship, and how to meet demand cost-effectively under decarbonization constraints.
Key features:
- 🚀 two-stage process: greenfield supply curves + cross-region LP trade
- 🌍 spatial renewable potentials: PyPSA-Earth wind/solar CF distributions
- 💰 integrated LCOX: region-level cost curves for H2, DRI, HBI
- 🛳️ global trade dispatch: route costs, flows, nodal prices, utilization
- ⚙️ configurable automation: regions, technologies, scenarios via YAML + Snakemake rules
Clone the repository:
git clone https://github.com/energyLS/shift.git
cdshiftInstall dependencies with pixi:
pixi installActivate the environment:
pixi shell(Optional) Install pre-commit hooks:
pre-commit installFor details, see https://pixi.prefix.dev/latest/ (or your local PIXI docs).
In the workspace root:
pixi run snakemake model_trade_allTo collect all figures (under development):
pixi run snakemake collect_figuresBefore execution, Snakemake reads:
- Global settings:
config/config.yaml(regions, cost years, solver options, enable flags) - Scenario matrix:
config/trade_scenarios.csv(rows = distinct trade scenarios)
These expand into a deterministic wildcard space (cost_year, region, product, scenario) that drives all downstream rule creation. This bootstrap is handled automatically by Snakemake; no user action required.
In this stage we generate the supply-side resource backbone.
Renewable capacity-factor series and maximum deployable potentials are pre-computed externally using PyPSA-Earth's build_renewable_profiles rule and stored in data/renewable_profiles/.
This stage is not part of the current Snakefile. SHIFT consumes pre-computed .nc datasets to avoid the long runtime of full GIS processing.
For new users: No action needed. Renewable data files are provided in the repository.
With renewable profiles and techno-economic assumptions in place, SHIFT builds regional PyPSA optimization models to size generation, storage, and process assets. It evaluates each candidate plant (H2 electrolyser, DRI furnace, HBI plant, steel mills) across resource quality and cost parameters to produce levelized cost curves (LCOX) as a function of capacity. The result is a fleet of supply curve elements (capacity buckets with marginal costs and metadata) for H2, DRI, HBI, and steel by region.
Step 1 is a multi-part stage: load techno-economic data and build regional cost baselines, prepare renewable candidate sets per region, solve optimization problems at discrete demand levels, and consolidate results into piecewise supply curves. Each stage depends on the prior; files are persisted between steps to support reproducibility and debugging. The output is a harmonized set of supply curves used as input for the trade stage.
This stage takes regional supply curves and demand obligations, then runs a linear program over the regional network. It includes transport cost matrices, ore production constraints, and market compatibility. The solver decides how much each region should produce versus import/export, by product and route.
The trade solution yields detailed outputs: regional production volume and shipped quantities. It can also be reconciled with scenarios for demand, policy constraints, and infrastructure availability.
Thanks to:
- Oda Agdal and her Master's Thesis on the Investigation of Future Global Trade of Hydrogen from Renewable Energy Sources
- Johannes Hampp and TRACE
This repository is licensed under the MIT License. See LICENCE for details.