This repository contains the LaTeX source files and Python scripts for the Ph.D. manuscript
Wireless communications are the foundation of modern technologies, such as smartphones, Wi-Fi networks, connected vehicles, and future infrastructures. The design of these technologies relies on accurate models predicting radio wave propagation in complex environments shaped by obstacles, reflections, diffraction, and interference.
This book explores differentiable ray tracing for radio propagation modeling, an approach inspired by computer graphics and acoustics. By tracing radio waves through virtual environments and integrating differentiability into the simulation pipeline, this approach enables channel prediction and gradient computation for optimization, inverse problems, and machine learning workflows.
The book is organized into three parts: Understanding, Building, and Using. The first part covers the fundamentals of radio wave propagation, including electromagnetic theory, geometrical optics, and diffraction. The second part presents ray tracing algorithms, including GPU-accelerated path tracing and discontinuity smoothing techniques for differentiable simulations. The third part demonstrates applications to channel modeling, localization, material calibration, dynamic propagation via the multipath lifetime map, and machine-learning-assisted generative path sampling.
Additionally, the book highlights the link between scientific research and software development through open-source tools and reproducible implementations, showing how modern scientific computing can advance radio propagation modeling and support the design of future wireless systems.
Jérome Eertmans received B.Sc. (2019) and M.Sc. (2021) degrees in Electromechanical Engineering and a Ph.D. (2026) in Electrical Engineering from the Université catholique de Louvain, Belgium. His doctoral research focused on differentiable ray tracing, radio propagation modeling, and radio-network optimization. He is also an active open-source software developer and creator of DiffeRT and Manim Slides.
The book style was generated by customizing the kaobook LaTeX class, more specifically, starting from this version.
To compile the book, you need to have a LaTeX distribution installed with the required packages, as well as the Pygments syntax highlighter. Then, you can run latexmk to compile the document from scratch. A full compilation can take around 30 minutes, due to the heavy use of TikZ graphics and cross-references. Alternatively, you can rely on GitHub Actions to compile the book for you. This workflow is triggered on every push to the main branch and creates a new PDF artifact that you can download. The workflow file is located at .github/workflows/book.yml.
To lint the LaTeX and Python code, you need to install pre-commit. Then, you can run pre-commit run --all-files to check all files, or pre-commit run --files <file> to check specific files. The pre-commit configuration is located at .pre-commit-config.yaml.
To debug TikZ figures, you can use the custom tikz/debug_tikz.py script, which compiles the TikZ code in a standalone LaTeX document and opens the resulting PDF for inspection. You can run uv run tikz/debug_tikz.py <tikz_file> to debug a specific TikZ file.
To regenerate data files for the TikZ figures, you can run the scripts in the scripts/ folder with uv. While using uv is not strictly necessary, it provides a convenient way to manage Python dependencies and run scripts in a consistent environment.
Finally, common aliases for compiling and linting can be found in the justfile at the root of the repository. You can run just --list to see all available commands, assuming you have just installed on your system.
If you wish to cite this manuscript, please use the following BibTeX entry:
@phdthesis{Eertmans2026Thesis,
author = {Eertmans, Jérome},
title = {Differentiable Ray Tracing for Radio Propagation Modeling},
school = {École polytechnique de Louvain, Université catholique de Louvain},
year = {2026},
month = {July},
url = {https://hdl.handle.net/TODO}
}