All Projects → spectralDNS → Shenfun

spectralDNS / Shenfun

Licence: bsd-2-clause
High performance computational platform in Python for the spectral Galerkin method

Programming Languages

python
139335 projects - #7 most used programming language

Labels

Projects that are alternatives of or similar to Shenfun

Sst Elements
SST Architectural Simulation Components and Libraries
Stars: ✭ 36 (-60.87%)
Mutual labels:  hpc
Slurm In Docker
Slurm in Docker - Exploring Slurm using CentOS 7 based Docker images
Stars: ✭ 63 (-31.52%)
Mutual labels:  hpc
Hiop
HPC solver for nonlinear optimization problems
Stars: ✭ 75 (-18.48%)
Mutual labels:  hpc
Hpccloud
A Cloud/Web-Based Simulation Environment
Stars: ✭ 43 (-53.26%)
Mutual labels:  hpc
Strumpack
Structured Matrix Package (LBNL)
Stars: ✭ 57 (-38.04%)
Mutual labels:  hpc
Maestrowf
A tool to easily orchestrate general computational workflows both locally and on supercomputers
Stars: ✭ 72 (-21.74%)
Mutual labels:  hpc
Ktt
Kernel Tuning Toolkit
Stars: ✭ 33 (-64.13%)
Mutual labels:  hpc
Training Material
A collection of code examples as well as presentations for training purposes
Stars: ✭ 85 (-7.61%)
Mutual labels:  hpc
Geopm
Global Extensible Open Power Manager
Stars: ✭ 57 (-38.04%)
Mutual labels:  hpc
Compute
A C++ GPU Computing Library for OpenCL
Stars: ✭ 1,192 (+1195.65%)
Mutual labels:  hpc
Jean Zay Doc
Collaborative documentation for and from Jean Zay users. Official Jean Zay documentation is here: http://www.idris.fr/eng/jean-zay/
Stars: ✭ 45 (-51.09%)
Mutual labels:  hpc
Cbrain
CBRAIN is a flexible Ruby on Rails framework for accessing and processing of large data on high-performance computing infrastructures.
Stars: ✭ 51 (-44.57%)
Mutual labels:  hpc
Flux Core
core services for the Flux resource management framework
Stars: ✭ 73 (-20.65%)
Mutual labels:  hpc
Ondemand
Supercomputing. Seamlessly. Open, Interactive HPC Via the Web
Stars: ✭ 40 (-56.52%)
Mutual labels:  hpc
Wlm Operator
Singularity implementation of k8s operator for interacting with SLURM.
Stars: ✭ 78 (-15.22%)
Mutual labels:  hpc
Sos
Sandia OpenSHMEM is an implementation of the OpenSHMEM specification over multiple Networking APIs, including Portals 4, the Open Fabric Interface (OFI), and UCX. Please click on the Wiki tab for help with building and using SOS.
Stars: ✭ 34 (-63.04%)
Mutual labels:  hpc
Parenchyma
An extensible HPC framework for CUDA, OpenCL and native CPU.
Stars: ✭ 71 (-22.83%)
Mutual labels:  hpc
Transpyle
HPC-oriented transpiler for C, C++, Cython, Fortran, OpenCL and Python.
Stars: ✭ 90 (-2.17%)
Mutual labels:  hpc
Ompi
Open MPI main development repository
Stars: ✭ 1,221 (+1227.17%)
Mutual labels:  hpc
Celerity Runtime
High-level C++ for Accelerator Clusters
Stars: ✭ 74 (-19.57%)
Mutual labels:  hpc

Shenfun

.. image:: https://api.codacy.com/project/badge/Grade/dc9c6e8e33c34382b76d38916852b36b :target: https://app.codacy.com/app/mikaem/shenfunutm_source=github.com&utm_medium=referral&utm_content=spectralDNS/shenfun&utm_campaign=badger .. image:: https://dev.azure.com/spectralDNS/shenfun/_apis/build/status/spectralDNS.shenfun?branchName=master :target: https://dev.azure.com/spectralDNS/shenfun .. image:: https://github.com/spectralDNS/shenfun/workflows/github-CI/badge.svg?branch=master :target: https://github.com/spectralDNS/shenfun .. image:: https://codecov.io/gh/spectralDNS/shenfun/branch/master/graph/badge.svg :target: https://codecov.io/gh/spectralDNS/shenfun .. image:: https://anaconda.org/conda-forge/shenfun/badges/platforms.svg :target: https://anaconda.org/conda-forge/shenfun .. |binder| image:: https://mybinder.org/badge_logo.svg :target: https://mybinder.org/v2/gh/spectralDNS/shenfun/master?filepath=binder

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 <https://fenicsproject.org>, 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 <https://bitbucket.org/mpi4py/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 <https://www.numpy.org/>), parallelization (mpi4py <https://bitbucket.org/mpi4py/mpi4py>) and by moving critical routines to Cython <https://cython.org/>_ or Numba <https://numba.pydata.org>. Shenfun has been used to run turbulence simulations (Direct Numerical Simulations) on thousands of processors on high-performance supercomputers, see the spectralDNS <https://github.com/spectralDNS/spectralDNS> repository.

The demo folder contains several examples for the Poisson, Helmholtz and Biharmonic equations. For extended documentation and installation instructions see ReadTheDocs <http://shenfun.readthedocs.org>. For interactive demos, see the jupyter book <https://mikaem.github.io/shenfun-demos>. Note that shenfun currently comes with the possibility to use two non-periodic directions (see biharmonic demo <https://github.com/spectralDNS/shenfun/blob/master/demo/biharmonic2D_2nonperiodic.py>), and equations may be solved coupled and implicit (see MixedPoisson.py <https://github.com/spectralDNS/shenfun/blob/master/demo/MixedPoisson.py>).

Note that shenfun works with curvilinear coordinates. For example, it is possible to solve equations on a sphere <https://github.com/spectralDNS/shenfun/blob/master/demo/sphere_helmholtz.py>_ (using spherical coordinates), on the surface of a torus <https://github.com/spectralDNS/shenfun/blob/master/binder/Torus.ipynb>, on a Möbius strip <https://mikaem.github.io/shenfun-demos/content/moebius.html> or along any curved line in 2D/3D <https://github.com/spectralDNS/shenfun/blob/master/demo/curvilinear_poisson1D.py>. 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. See also this notebook on the sphere <https://github.com/spectralDNS/shenfun/blob/master/binder/sphere2-helmholtz.ipynb> or an illustration of the vector Laplacian <https://github.com/spectralDNS/shenfun/blob/master/binder/vector-laplacian.ipynb>_.

.. image:: https://cdn.jsdelivr.net/gh/spectralDNS/[email protected]/figures/moebius8_trans.png :target: https://mikaem.github.io/shenfun-demos/content/moebius.html :alt: The eigenvector of the 8'th smallest eigvalue on a Möbius strip .. image:: https://cdn.jsdelivr.net/gh/spectralDNS/[email protected]/figures/smallcoil2.png :alt: Solution of Poisson's equation on a Coil .. image:: https://cdn.jsdelivr.net/gh/spectralDNS/[email protected]/figures/spherewhite4.png :target: https://mikaem.github.io/shenfun-demos/content/sphericalhelmholtz.html :alt: Solution of Poisson's equation on a spherical shell .. image:: https://cdn.jsdelivr.net/gh/spectralDNS/[email protected]/figures/torus2.png :target: https://github.com/spectralDNS/shenfun/blob/master/binder/Torus.ipynb :alt: Solution of Poisson's equation on the surface of a torus

For a more psychedelic experience, have a look at the simulation <https://github.com/spectralDNS/shenfun/blob/master/demo/Ginzburg_Landau_sphere_IRK3.py>_ of the Ginzburg-Landau equation on the sphere (click for Youtube-video):

.. image:: https://cdn.jsdelivr.net/gh/spectralDNS/[email protected]/figures/GLimage.png :target: https://youtu.be/odsIoHVcqek :alt: Ginzburg-Landau spherical coordinates

Shenfun can also be used to approximate analytical functions with global spectral basis functions <https://mikaem.github.io/shenfun-demos/content/functions.html>, and to integrate over highly complex domains, like the seashell below, see this demo <https://mikaem.github.io/shenfun-demos/content/surfaceintegration.html>.

.. image:: https://cdn.jsdelivr.net/gh/spectralDNS/[email protected]/figures/seashell3.png :alt: The surface of a seashell

Installation

Shenfun can be installed using either pip <https://pypi.org/project/pip/>_ or conda <https://conda.io/docs/>, see installation chapter on readthedocs <https://shenfun.readthedocs.io/en/latest/installation.html>.

Dependencies

* `Python <https://www.python.org/>`_ 3.3 or above. Test suits are run with Python 3.6, 3.7 and 3.8.
* A functional MPI 2.x/3.x implementation like `MPICH <https://www.mpich.org>`_ or `Open MPI <https://www.open-mpi.org>`_ built with shared/dynamic libraries.
* `FFTW <http://www.fftw.org/>`_ version 3, also built with shared/dynamic libraries.
* Python modules:
    * `Numpy <https://www.numpy.org/>`_
    * `Scipy <https://www.scipy.org/>`_
    * `Sympy <https://www.sympy.org>`_
    * `Cython <https://cython.org/>`_
    * `mpi4py <https://bitbucket.org/mpi4py/mpi4py>`_
    * `mpi4py-fft <https://bitbucket.org/mpi4py/mpi4py-fft>`_

Contact

For comments, issues, bug-reports and requests, please use the issue tracker of the current repository, or see How to contribute? <https://shenfun.readthedocs.io/en/latest/howtocontribute.html>_ 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
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].