Introduction
The Yggdrasil is an immense and sacred tree in Norse mythology that upholds the nine realms of the cosmos.
Purpose of Yggdrasil
Yggdrasil is a generic physics simulation framework. It is designed to be used as a base for varied physics simulation methods (FVM,FEM,etc) while keeping helper methods like equations of state and integrators generic enough to be portable between a wide variety of methods choices. Yggdrasil’s major classes and methods are written in C++ and wrapped in Python using pybind11 to enable them to be imported as Python3+ modules inside a runscript. Python holds and passes the pointers to most objects inside the code, while the integration step is always handled by compiled C++ code. Any Python class that returns the expected data types of the compiled C++ classes can substitute for a precompiled package (e.g. a custom equation of state), though speed will suffer.
Overview of Capabilities
Yggdrasil’s capabilities as of Jun 02, 2026 are shown below:
Component |
Working |
Under Development |
Planned |
|---|---|---|---|
Physics |
N-body gravity |
FEM |
|
Point source gravity |
HLLC hydro |
||
Vector gravity |
Conduction |
||
Tree gravity |
Complex Waves |
||
Particle kinetics |
|||
Acoustic wave solvers |
|||
Shallow wave solvers |
|||
Chemical Reaction-Diffusion |
|||
HLLE hydro |
|||
Phase coupling |
|||
Equations of State |
Ideal gas |
Helmholtz |
|
Polytrope |
|||
Isothermal |
|||
Mie-Gruneisen |
|||
Tillotson |
|||
Opacity/Conductivity |
Constant/Mean |
||
Time Integrators |
Forward Euler |
Symplectic |
|
RK2 |
|||
RK4 |
|||
Crank-Nicolson |
|||
Meshing |
Eulerian grid |
Tet mesh |
AMR |
Triangular mesh |
Hexahedron mesh |
||
Quad mesh |
Voronoi3d |
||
Voronoi2d |
|||
Data IO |
silo |
||
vtk |
|||
obj |
|||
Custom Data Types |
Vectors |
||
Tensors |
|||
Cosmologies |
|||
Units/PhysicalConstants |
|||
Parallelization |
OpenMP |
MPI |
|
CUDA |
Intended Audience
Yggdrasil’s intended audience is computational scientists who want a toy simulation code to scope simple problems that’s easily driveable and scriptable with a Python interface, and anyone who doesn’t mind getting their hands dirty writing their own physics packages in a fully abstracted simulation framework.