Skip to main content

A Python implementation of spectral deferred correction methods and the likes

Project description

The pySDC project is a Python implementation of the spectral deferred correction (SDC) approach and its flavors, esp. the multilevel extension MLSDC and PFASST. It is intended for rapid prototyping and educational purposes. New ideas like e.g. sweepers or predictors can be tested and first toy problems can be easily implemented.

Features

  • Variants of SDC: explicit, implicit, IMEX, multi-implicit, Verlet, multi-level, diagonal, multi-step

  • Variants of PFASST: virtual parallel or MPI-based parallel, classical of multigrid perspective

  • 8 tutorials: from setting up a first collocation problem to SDC, PFASST and advanced topics

  • Projects: many documented projects with defined and tested outcomes

  • Many different examples, collocation types, data types already implemented

  • Works with PETSc through petsc4py, FEniCS and mpi4py-fft

  • Continuous integration via Github Actions

  • Fully compatible with Python 3.6 - 3.9

Getting started

The code is hosted on GitHub, see https://github.com/Parallel-in-Time/pySDC, and PyPI, see https://pypi.python.org/pypi/pySDC. Use

pip install pySDC

to get the latest stable release including the core dependencies. Note that this will omit some of the more complex packages not required for the core functionality of pySDC, e.g. mpi4py, fenics and petsc4py (see below). All requirements are listed in the files requirements.txt . To work with the source files, checkout the code from Github and install the dependencies e.g. by using a conda environment and

conda install -c conda-forge --file requirements.txt

To check your installation, run

pytest pySDC/tests

You may need to update your PYTHONPATH by running

export PYTHONPATH=$PYTHONPATH:/path/to/pySDC/root/folder

in particular if you want to run any of the playgrounds, projects or tutorials. All import statements there assume that the pySDC’s base directory is part of PYTHONPATH.

Note: When installing mpi4py, fenics and petsc4py, make sure they use the same MPI installation (e.g. MPICH3). You can achieve this e.g. by

conda install -c conda-forge mpich petsc4py mpi4py fenics

Most of the code is tested automatically using Github Actions, so a working version of the installation process can always be found in the ci_pipeline.yml file. This workflow can be run locally using act by

act --env CONDA=/usr/share/miniconda -j ci

See also here for details on how to run workflos depending on miniconda locally.

For many examples, LaTeX is used for the plots, i.e. a decent installation of this is needed in order to run the tests. When using fenics or petsc4py, a C++ compiler is required (although installation may go through at first).

For more details on pySDC, check out http://www.parallel-in-time.org/pySDC.

How to cite

If you use pySDC or parts of it for your work, great! Let us know if we can help you with this. Also, we would greatly appreciate a citation of this paper:

Robert Speck, Algorithm 997: pySDC - Prototyping Spectral Deferred Corrections, ACM Transactions on Mathematical Software (TOMS), Volume 45 Issue 3, August 2019, https://doi.org/10.1145/3310410

The current software release can be cited using Zenodo: zenodo

Project details


Download files

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

Source Distribution

pySDC-4.2.tar.gz (3.1 MB view details)

Uploaded Source

Built Distribution

pySDC-4.2-py3-none-any.whl (3.7 MB view details)

Uploaded Python 3

File details

Details for the file pySDC-4.2.tar.gz.

File metadata

  • Download URL: pySDC-4.2.tar.gz
  • Upload date:
  • Size: 3.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.7.10

File hashes

Hashes for pySDC-4.2.tar.gz
Algorithm Hash digest
SHA256 c06722ecb1ddfe0acff1572dbd1fea62aea0d753806471f051f944e3585086a2
MD5 fb1c8a02d886401609fa11095dc957bb
BLAKE2b-256 bb6a2111fb1cba9ed4d880d952efdad0648d403b727b205fca13a793d5335a40

See more details on using hashes here.

File details

Details for the file pySDC-4.2-py3-none-any.whl.

File metadata

  • Download URL: pySDC-4.2-py3-none-any.whl
  • Upload date:
  • Size: 3.7 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.7.10

File hashes

Hashes for pySDC-4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b4f602e171a683f7283d35e248f94b39ff03b47b54eae2049fadecaedb90c896
MD5 9084124b0eb2208bb1ad5797dec8fa04
BLAKE2b-256 d8cf05353c7b61ad09b8f4bb24384555db058a6b9ddda231da03a7b124bd62e4

See more details on using hashes here.

Supported by

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