Skip to main content

A Python implementation of spectral deferred correction methods and the likes

Project description

badge-ga badge-ossf badge-cc zenodo fair-software.eu SQAaaS badge shields.io

Welcome to pySDC!

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 FEniCS, mpi4py-fft and PETSc (through petsc4py)
  • Continuous integration via GitHub Actions and Gitlab CI
  • Fully compatible with Python 3.7 - 3.10, runs at least on Ubuntu and MacOS

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. While using pip install pySDC will give you a core version of pySDC to work with, working with the developer version is most often the better choice. We thus recommend to checkout the code from GitHub and install the dependencies e.g. by using a conda environment. For this, pySDC ships with environment files which can be found in the folder etc/. Use these as e.g.

conda env create -f etc/environment-base.yml

To check your installation, run

pytest pySDC/tests -m NAME

where NAME corresponds to the environment you chose (base in the example above). 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.

For many examples, LaTeX is used for the plots, i.e. a decent installation of this is needed in order to run those examples. 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

Contributing

pySDC code was originally developed by Robert Speck (@pancetta), and is now maintained and developed by a small community of scientists interested in SDC methods. Checkout the Changelog to see pySDC's evolution since 2016.

Any contribution is dearly welcome ! If you want to take part of this, please take the time to read our Contribution Guidelines (and don't forget to take a peek at our nice Code of Conduct :wink:).

Acknowledgements

This project has received funding from the European High-Performance Computing Joint Undertaking (JU) under grant agreement No 955701 (TIME-X). The JU receives support from the European Union's Horizon 2020 research and innovation programme and Belgium, France, Germany, and Switzerland. This project also received funding from the German Federal Ministry of Education and Research (BMBF) grant 16HPC047. The project also received help from the Helmholtz Platform for Research Software Engineering - Preparatory Study (HiRSE_PS).

                 

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-5.3.0.tar.gz (17.5 MB view details)

Uploaded Source

Built Distribution

pysdc-5.3.0-py2.py3-none-any.whl (17.9 MB view details)

Uploaded Python 2 Python 3

File details

Details for the file pysdc-5.3.0.tar.gz.

File metadata

  • Download URL: pysdc-5.3.0.tar.gz
  • Upload date:
  • Size: 17.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.9

File hashes

Hashes for pysdc-5.3.0.tar.gz
Algorithm Hash digest
SHA256 b99ce7e15d13de3bfcee7ce933252f1dae2eb5a4befd1475617bbbeb1fa21985
MD5 953158cd8a17319719006efea7e81fb1
BLAKE2b-256 2bec52e20843459241fad877fe636ed62b5ec5e9687790b97bdd79b3038bcd32

See more details on using hashes here.

File details

Details for the file pysdc-5.3.0-py2.py3-none-any.whl.

File metadata

  • Download URL: pysdc-5.3.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 17.9 MB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.9

File hashes

Hashes for pysdc-5.3.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 b8d07686c43c554a3293a99bb947c1c48f2defe4f0d87a9c633b0e591e381d16
MD5 0e6875029539df4a68a2215f2f39df2a
BLAKE2b-256 b725a1972d8298da3664ee72984a6d8c54b3cb42c5a2e0fbb772189a09ab0912

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