py-pde
py-pde
is a Python package for solving partial differential equations (PDEs).
The package provides classes for grids on which scalar and tensor 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.
Try it online!
Installation
py-pde
is available on pypi
, so you should be able to install it through pip
:
pip install py-pde
In order to have all features of the package available, you might want to
install the following optional packages:
pip install h5py pandas mpi4py numba-mpi
Moreover, ffmpeg
needs to be installed for creating movies.
As an alternative, you can install py-pde
through conda
using the conda-forge channel:
conda install -c conda-forge py-pde
Installation with conda
includes all dependencies of py-pde
.
Usage
A simple example showing the evolution of the diffusion equation in 2d:
import pde
grid = pde.UnitGrid([64, 64])
state = pde.ScalarField.random_uniform(grid)
eq = pde.DiffusionPDE(diffusivity=0.1)
result = eq.solve(state, t_range=10)
result.plot()
PDEs can also be specified by simply writing expressions of the evolution rate.
For instance, the
Cahn-Hilliard equation
can be implemented as
eq = pde.PDE({'c': 'laplace(c**3 - c - laplace(c))'})
which can be used in place of the DiffusionPDE
in the example above.
More information