Grid-Free Monte Carlo Solvers for Physics Simulations Involving Partial Differential Equations
C++
303
245 commits
updated Sep 1, 2026
Zombie is a C++17 header-only library with Python bindings for solving partial differential equations with Walk on Spheres-style Monte Carlo methods. It is designed for problems where creating a volume mesh is awkward, expensive, or unnecessary: the solver queries the original boundary representation directly and estimates the solution only where values are needed.
NEW! For GPU implementations of these algorithms, check out WoSX, which builds on Zombie with GPU support and additional 3D demo applications.
Zombie is research software. The algorithms are still an active area of research, and the implementations are meant to be clear reference implementations rather than final word on performance or variance reduction. For a broader introduction to Walk on Spheres and its recent extensions, see this overview talk and this webpage for in-depth resources such as recent publications and tutorials.
The best way to get started is through the demo application in demo/.
It provides compact 2D reference problems for Laplace, Poisson, screened Poisson,
and multiple solvers. The folder has its own README with the problem setup,
expected outputs, and C++ and Python run commands.
Most Zombie applications follow the same high-level workflow:
The same conceptual workflow applies in C++ and Python.

Zombie targets scalar and vector-valued PDEs in 2D and 3D, including Laplace, Poisson, and screened Poisson equations. Boundary conditions may be mixed across the same boundary:
Screened Poisson problems currently use a constant absorption coefficient. Geometric queries are backed by FCPW, with line-segment boundaries in 2D and triangle-mesh boundaries in 3D. Exterior problems can be handled through a Kelvin transform.
Available solver families include Walk on Spheres for Dirichlet conditions, Walk on Stars for Neumann and Robin conditions, and Boundary Value Caching and Reverse Walk on Stars for noise reduction.
git clone https://github.com/rohan-sawhney/zombie.git
cd zombie && git submodule update --init --recursive
mkdir build && cd build && cmake ..
make -j4
After cloning Zombie and updating its submodules, build and install the Python bindings from the project root using:
mkdir build
pip install . --force-reinstall
The Python API can be inspected from a Python console:
>>> import zombie
>>> help(zombie)
@software{Zombie,
author = {Sawhney, Rohan and Miller, Bailey},
title = {Zombie: Grid-Free Monte Carlo Solvers for Partial Differential Equations},
version = {1.0},
year = {2023}
}
Code is released under an MIT License.
245 commits
C++
97.4%
Python
1.9%
Grid-Free Monte Carlo Solvers for Physics Simulations Involving Partial Differential Equations
C++
303
245 commits
updated Sep 1, 2026
Zombie is a C++17 header-only library with Python bindings for solving partial differential equations with Walk on Spheres-style Monte Carlo methods. It is designed for problems where creating a volume mesh is awkward, expensive, or unnecessary: the solver queries the original boundary representation directly and estimates the solution only where values are needed.
NEW! For GPU implementations of these algorithms, check out WoSX, which builds on Zombie with GPU support and additional 3D demo applications.
Zombie is research software. The algorithms are still an active area of research, and the implementations are meant to be clear reference implementations rather than final word on performance or variance reduction. For a broader introduction to Walk on Spheres and its recent extensions, see this overview talk and this webpage for in-depth resources such as recent publications and tutorials.
The best way to get started is through the demo application in demo/.
It provides compact 2D reference problems for Laplace, Poisson, screened Poisson,
and multiple solvers. The folder has its own README with the problem setup,
expected outputs, and C++ and Python run commands.
Most Zombie applications follow the same high-level workflow:
The same conceptual workflow applies in C++ and Python.

Zombie targets scalar and vector-valued PDEs in 2D and 3D, including Laplace, Poisson, and screened Poisson equations. Boundary conditions may be mixed across the same boundary:
Screened Poisson problems currently use a constant absorption coefficient. Geometric queries are backed by FCPW, with line-segment boundaries in 2D and triangle-mesh boundaries in 3D. Exterior problems can be handled through a Kelvin transform.
Available solver families include Walk on Spheres for Dirichlet conditions, Walk on Stars for Neumann and Robin conditions, and Boundary Value Caching and Reverse Walk on Stars for noise reduction.
git clone https://github.com/rohan-sawhney/zombie.git
cd zombie && git submodule update --init --recursive
mkdir build && cd build && cmake ..
make -j4
After cloning Zombie and updating its submodules, build and install the Python bindings from the project root using:
mkdir build
pip install . --force-reinstall
The Python API can be inspected from a Python console:
>>> import zombie
>>> help(zombie)
@software{Zombie,
author = {Sawhney, Rohan and Miller, Bailey},
title = {Zombie: Grid-Free Monte Carlo Solvers for Partial Differential Equations},
version = {1.0},
year = {2023}
}
Code is released under an MIT License.
245 commits
C++
97.4%
Python
1.9%