Skip to main content

Python package for solving partial differential equations

Project description

py-pde

py-pde Logo

PyPI version Conda Version License: MIT Build Status codecov Binder Documentation Status DOI

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 finite differences, which 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, jax, or torch for speed.

Try it online!

Installation

PyPI / pip

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 manually (all or a subset of these):

pip install h5py pandas mpi4py numba-mpi py-modelrunner napari ffmpeg-python

or using the py-pde package variants mpi, io and/or interactive (any combination):

pip install py-pde[mpi]
pip install py-pde[io]
pip install py-pde[interactive]
pip install py-pde[mpi,io,interactive]

Moreover, ffmpeg needs to be installed for creating movies.

conda

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 the optional dependencies of py-pde.

Arch Linux package

py-pde is also available as an Arch package.

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

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py_pde-0.58.0.tar.gz (2.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

py_pde-0.58.0-py3-none-any.whl (464.0 kB view details)

Uploaded Python 3

File details

Details for the file py_pde-0.58.0.tar.gz.

File metadata

  • Download URL: py_pde-0.58.0.tar.gz
  • Upload date:
  • Size: 2.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for py_pde-0.58.0.tar.gz
Algorithm Hash digest
SHA256 f0706e05d8cf1cd9aeb75c72a8599464c32d8ff2a1828620b5048eb9458b5332
MD5 243eda85aa8701547f2ce8278734bf7a
BLAKE2b-256 4b8a6b9e99bfd63e1fb5df0f4db60394a7fdd9a6c280b93e87ab5f14a2b960bb

See more details on using hashes here.

File details

Details for the file py_pde-0.58.0-py3-none-any.whl.

File metadata

  • Download URL: py_pde-0.58.0-py3-none-any.whl
  • Upload date:
  • Size: 464.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for py_pde-0.58.0-py3-none-any.whl
Algorithm Hash digest
SHA256 480c46df3358aa401a1864a0a16800470b0c23a4565a89c285da02e500908a3a
MD5 950f5c25400d0e82d0c9c7d02a8e7212
BLAKE2b-256 f1f6f27dd639ce667adb57822c9831e3c4cff4c1c4c0ba00164c20c30f506d94

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page