Skip to main content

Shenfun -- Automated Spectral-Galerkin framework

Project description

https://api.codacy.com/project/badge/Grade/dc9c6e8e33c34382b76d38916852b36b https://circleci.com/gh/spectralDNS/shenfun.svg?style=svg https://dev.azure.com/spectralDNS/shenfun/_apis/build/status/spectralDNS.shenfun?branchName=master https://codecov.io/gh/spectralDNS/shenfun/branch/master/graph/badge.svg https://anaconda.org/conda-forge/shenfun/badges/platforms.svg

Try it in a jupyter hub using Binder

binder

Description

Shenfun is a high performance computing platform for solving partial differential equations (PDEs) by the spectral Galerkin method. The user interface to shenfun is very similar to FEniCS, but applications are limited to multidimensional tensor product grids, using either Cartesian or curvilinear grids (e.g., but not limited to, polar, cylindrical, spherical or parabolic). The code is parallelized with MPI through the mpi4py-fft package.

Shenfun enables fast development of efficient and accurate PDE solvers (spectral order and accuracy), in the comfortable high-level Python language. The spectral accuracy is ensured by using high-order global orthogonal basis functions (Fourier, Legendre, Chebyshev, Laguerre, Hermite and Jacobi), as opposed to finite element codes that are using low-order local basis functions. Efficiency is ensured through vectorization (Numpy), parallelization (mpi4py) and by moving critical routines to Cython or Numba. Shenfun has been used to run turbulence simulations (Direct Numerical Simulations) on thousands of processors on high-performance supercomputers, see the spectralDNS repository.

The demo folder contains several examples for the Poisson, Helmholtz and Biharmonic equations. For extended documentation and installation instructions see ReadTheDocs. Note that shenfun currently comes with the possibility to use two non-periodic directions (see biharmonic demo). Furthermore, equations may be solved coupled and implicit (see MixedPoisson.py).

Note that there is now some support for solving equations using curvilinear coordinates. For example, it is possible to solve equations on a spherical shell using spherical coordinates, or along any curved line in 2D/3D, like for the coil show below. Actually, any new coordinates may be defined by the user as long as the coordinates lead to separable systems of equations. After defining new coordinates, operators like div, grad and curl work automatically with the new curvilinear coordinates.

Solution of Poisson's equation on a Coil Solution of Poisson's equation on a spherical shell

Installation

Shenfun can be installed using either pip or conda, see installation chapter on readthedocs.

Dependencies

Contact

For comments, issues, bug-reports and requests, please use the issue tracker of the current repository, or see How to contribute? at readthedocs. Otherwise the principal author can be reached at:

Mikael Mortensen
mikaem at math.uio.no
http://folk.uio.no/mikaem/
Department of Mathematics
University of Oslo
Norway

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

shenfun-2.2.2.tar.gz (145.2 kB view details)

Uploaded Source

File details

Details for the file shenfun-2.2.2.tar.gz.

File metadata

  • Download URL: shenfun-2.2.2.tar.gz
  • Upload date:
  • Size: 145.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3.post20200325 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.6

File hashes

Hashes for shenfun-2.2.2.tar.gz
Algorithm Hash digest
SHA256 17fe02f58f87eb43efcd6db023bb7e0091e261c97f728dfb528f2fdcfa29ca8c
MD5 beba28d9427ffc644592165f717dc203
BLAKE2b-256 371ccbab1e8f211301dc2af9e861be2684880fd5a6709abbaf608f922e860bf7

See more details on using hashes here.

Supported by

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