In our theoretical work we typically combine analytical approximations with more detailed numerical simulations. In our numerical work, we hugely profit from the strong open source community and we thus also want to contribute a little bit. This page describes the packages that we released on our GitHub page.
py-pde: A Python package for solving partial differential equations
Partial differential equations (PDEs) play a central role in describing the dynamics of physical systems in research and in practical applications. The py-pde python package provides infrastructure to solve the typical non-linear equations that appear in realistic scenarios. The package contains classes for grids on which scalar and tensorial fields can be defined. The associated differential operators are computed using a numba-compiled implementation of finite differences. This allows defining, inspecting, and solving typical PDEs that appear for instance in the study of dynamical systems in physics. The focus of the package lies on easy usage to explore the behavior of PDEs. However, core computations can be compiled transparently using numba for speed.
flory: A Python package for finding coexisting phases
Analyzing multicomponent mixtures is difficult since many different phases can coexist at the same time. This Python package implements a state-of-the-art algorithm to find such phases in equilibrium systems that are described by a free energy density, which can be defined flexible. The package provides an easily accessible, performant, and extensible code, which is accelerated with numba, so the package can also be used to explorer high-dimensional phase diagrams.
numba-mpi: Using Message Passing Interface (MPI) in numba-compiled Python code
Numba is a Python package that transparently compiles Python code to accelerate particularly numerical calculations. In contrast, the Message Passing Interface (MPI) is a technique for running numerical code in parallel on many different processing units. Both techniques are widely used in scientific computing, and numba-mpi provides the infrastructure for combining them efficiently. The numba-mpi development is organized by Sylwester Arabas and we contribute.
py-droplets: A Python package for analyzing droplets
The py-droplets package provides python code for representing physical droplets using key parameters like position, size, or shape. These droplets can also be represented as collections (emulsions) over time. Moreover, the package provides methods for locating droplets in microscope images or phase field data from simulations.
py-modelrunner: A Python package for organizing (HPC) simulations
Numerical simulations typically require multiple runs with different inputs and various outputs, often employing high-performance computing (HPC) clusters. The package provides various routines and classes to address this problem.
MathematicaToPython: Convert Mathematica expressions to Python
This Mathematica package helps with translating analytical expression to a form that can be interpreted by python. We use this tool to convert analytical results and equations, e.g. originating from a linearization, to python code that we can use to run numerical simulations, including on a high-performance computing cluster.