Skip to content

EdgarDevNat/H2EU2050

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

H2EU2050

H2EU2050 is an equilibrium model of the European hydrogen system in 2050.
The model is formulated as a mixed complementarity problem (MCP) and captures system-wide interactions across Europe.
It supports two market structures: perfect competition and Cournot (strategic) behaviour.

This repository contains the model implementation used in my Bachelor thesis:
Germany's Role in the European Green Hydrogen Market in 2050: A Market Model Approach to Quantifying the Impact of Different Market Structures.


Table of contents


Quickstart

Requirements: Julia ≥ 1.11 (tested with 1.11.7).
Dependencies are specified in Project.toml and pinned in Manifest.toml.

git clone https://github.com/EdgarDevNat/H2EU2050.git
cd H2EU2050
julia --project -e 'using Pkg; Pkg.instantiate(); Pkg.precompile()'
julia --project scripts/run_h2eu2050.jl

Run outputs are stored in out/.


Project structure

H2EU2050/
├─ data/                 # Model input CSVs
├─ out/                  # Default output directory (runtime files)
├─ results_s1/           # Organized results: Scenario 1 (perfect competition)
├─ results_s2/           # Organized results: Scenario 2 (Cournot behaviour)
│
├─ scripts/
│  └─ run_h2eu2050.jl    # Entry script (activates env, runs model)
│
└─ src/
   ├─ H2EU2050.jl        # Package entry (module definition)
   ├─ common/            # Paths, IO helpers, utilities
   ├─ load_data/         # CSV loaders, data pre-processing
   ├─ model/             # Model construction, KKT/MCP formulation, solver
   ├─ analytics/         # Extraction, summarisation and saving of results
   └─ validation/        # Data & model validation tools
        ├─ validate_datafiles.jl
        ├─ validate_modeldata.jl
        └─ validation_utils.jl

How the model runs

The entry script scripts/run_h2eu2050.jl activates the project environment, loads the model, executes it, and writes summary output.

using Pkg
Pkg.activate(joinpath(@__DIR__, ".."))

using H2EU2050

res = H2EU2050.run()
out = H2EU2050.Analytics.summarize_and_save(
    res.status, res.model, res.vars, res.sets;
    prefix="results", top=5, verbose=:short
)

Internally, H2EU2050.run():

  1. validates all input CSVs,
  2. loads all input CSVs,
  3. builds the MCP using JuMP, Complementarity.jl, and PATHSolver,
  4. solves the system,
  5. returns the model status, JuMP model, variables, and index sets.

Scenario results are organised into:

  • results_s1/ — Perfect competition
  • results_s2/ — Cournot oligopoly

Citing H2EU2050

If you use this model in academic work, please cite this repository:

@misc{H2EU2050,
  author       = {Natzke, Edgar Valentin},
  title        = {H2EU2050: An MCP model of Europe's hydrogen system in 2050},
  url          = {https://github.com/EdgarDevNat/H2EU2050},
  version      = {Version 1.0.0},
  year         = {2025},
  month        = {11}
}

License & Contact

H2EU2050 is licensed under the MIT License. See LICENSE.

Contact:
natzke@campus.tu-berlin.de

About

H2EU2050 is an open-source equilibrium model of the European hydrogen system in 2050.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages