Introduction

The Yggdrasil is an immense and sacred tree in Norse mythology that upholds the nine realms of the cosmos.

_images/ygg.jpg

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:

Yggdrasil’s current capabilities

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.