Skip to content

Python package for solving general partial differential equations

License

Notifications You must be signed in to change notification settings

jhurreaq/py-pde

This branch is 550 commits behind zwicker-group/py-pde:master.

Folders and files

NameName
Last commit message
Last commit date
Aug 16, 2021
Sep 17, 2021
Aug 16, 2021
Sep 19, 2021
Sep 17, 2021
Sep 17, 2021
Feb 3, 2021
Feb 17, 2021
Oct 15, 2020
Mar 15, 2021
Mar 16, 2020
Feb 21, 2020
Jul 23, 2021
Feb 4, 2021
Sep 19, 2021
Mar 30, 2020
Feb 17, 2021
Feb 21, 2020
Sep 17, 2021

Repository files navigation

py-pde

PyPI version Conda Version Documentation Status DOI Binder

Build Status codecov Language grade: Python Code style: black License: MIT

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 out 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 also want to install the following optional packages:

pip install h5py pandas tqdm

Moreover, ffmpeg needs to be installed for creating movies.

As an alternative, you can install py-pde through conda using conda-forge channel:

conda install -c conda-forge py-pde

Installation with conda includes all required dependencies to have all features of py-pde.

Usage

A simple example showing the evolution of the diffusion equation in 2d:

import pde

grid = pde.UnitGrid([64, 64])                 # generate grid
state = pde.ScalarField.random_uniform(grid)  # generate initial condition

eq = pde.DiffusionPDE(diffusivity=0.1)        # define the pde
result = eq.solve(state, t_range=10)          # solve the pde
result.plot()                                 # plot the resulting field

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

About

Python package for solving general partial differential equations

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 99.3%
  • Other 0.7%