psydac

Python 3 library for isogeometric analysis

https://github.com/pyccel/psydac

Science Score: 57.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 2 DOI reference(s) in README
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.9%) to scientific vocabulary

Keywords

bsplines high-performance-computing isogeometric-analysis python
Last synced: 6 months ago · JSON representation ·

Repository

Python 3 library for isogeometric analysis

Basic Info
Statistics
  • Stars: 58
  • Watchers: 9
  • Forks: 21
  • Open Issues: 109
  • Releases: 1
Topics
bsplines high-performance-computing isogeometric-analysis python
Created about 8 years ago · Last pushed 6 months ago
Metadata Files
Readme License Citation Authors

README.md

Welcome to PSYDAC

devel_tests docs

PSYDAC is a Python 3 library for isogeometric analysis. It is an academic, open-source project created by numerical mathematicians at the Max Planck Institute for Plasma Physics (NMPP division, FEM group).

PSYDAC can solve general systems of partial differential equations in weak form, which users define using the domain-specific language provided by SymPDE. It supports finite element exterior calculus (FEEC) with tensor-product spline spaces and handles multi-patch geometries in various ways.

PSYDAC automatically generates Python code for the assembly of user-defined functionals and linear and bilinear forms from the weak formulation of the problem. This Python code is then accelerated to C/Fortran speed using Pyccel. The library also enables large parallel computations on distributed-memory supercomputers using MPI and OpenMP.

Citing

If PSYDAC has been significant in your research, and you would like to acknowledge the project in your academic publication, we would ask that you cite the following paper:

Güçlü, Y., S. Hadjout, and A. Ratnani. “PSYDAC: A High-Performance IGA Library in Python.” In 8th European Congress on Computational Methods in Applied Sciences and Engineering. CIMNE, 2022. https://doi.org/10.23967/eccomas.2022.227.

The associated BibTeX file can be found here.

Installation

PSYDAC requires a certain number of components to be installed on the machine:

  • Fortran and C compilers with OpenMP support
  • OpenMP library
  • BLAS and LAPACK libraries
  • MPI library
  • HDF5 library with MPI support

The installation instructions depend on the operating system and on the packaging manager used. It is particularly important to determine the HDF5 root folder, as this will be needed to install the h5py package in parallel mode. Detailed instructions can be found in the documentation.

Once those components are installed, we recommend using venv to set up a fresh Python virtual environment at a location <ENV-PATH>: bash python3 -m venv <ENV-PATH> source <ENV-PATH>/bin/activate

PSYDAC and its Python dependencies can now be installed in the virtual environment using pip, the Python package manager: ```bash git clone https://github.com/pyccel/psydac.git

export CC="mpicc" export HDF5MPI="ON" export HDF5DIR=

pip install --upgrade pip pip install h5py --no-cache-dir --no-binary h5py pip install ./psydac `` Hereis the path to the HDF5 root folder, such that/lib/contains the HDF5 dynamic libraries with MPI support. For an editable install, the-e/--editable` flag should be provided to the last command above.

Again, for more details we refer to our documentation.

[!TIP] PSYDAC provides the functionality to convert its MPI-parallel matrices and vectors to their PETSc equivalent, and back. This gives the user access to a wide variety of linear solvers and other algorithms. Instructions for installing PETSc and petsc4py can be found in our documentation.

Running Tests

The test suite of PSYDAC is based on pytest, which should be installed in the same virtual environment: bash source <ENV-PATH>/bin/activate pip install pytest

Let <PSYDAC-PATH> be the installation directory of PSYDAC. In order to run all serial and parallel tests which do not use PETSc, just type: bash export PSYDAC_MESH_DIR=<PSYDAC-PATH>/mesh/ pytest --pyargs psydac -m "not parallel and not petsc" python <PSYDAC-PATH>/mpi_tester.py --pyargs psydac -m "parallel and not petsc"

If PETSc and petsc4py were installed, some additional tests can be run: bash pytest --pyargs psydac -m "not parallel and petsc" python <PSYDAC-PATH>/mpi_tester.py --pyargs psydac -m "parallel and petsc"

Speeding up PSYDAC's core

Many of PSYDAC's low-level Python functions can be translated to a compiled language using the Pyccel transpiler. Currently, all of those functions are collected in modules which follow the name pattern [module]_kernels.py.

The classical installation translates all kernel files to Fortran without user intervention. This does not happen in the case of an editable install, but the command psydac-accelerate is made available to the user instead. This command applies Pyccel to all the kernel files in the source directory. The default language is currently Fortran, C should also be supported in a near future.

  • Only in development mode: bash python /path/to/psydac/psydac_accelerate.py [--language LANGUAGE] [--openmp]

Examples and Tutorials

A tutorial on isogeometric analysis, with many example notebooks where various PDEs are solved with PSYDAC, is under construction in the IGA-Python repository. Some other examples can be found here.

Library Documentation

Contributing

There are several ways to contribute to this project!

If you find a problem, please check if this is already discussed in one of our issues and feel free to add your opinion; if not, please create a new issue. If you want to fix an issue, improve our notebooks, or add a new example, please fork our Git repository, make and commit your changes, and create a pull request (PRs). All PRs are reviewed by the project maintainers. During the PR review, GitHub workflows are triggered on various platforms.

We keep an up-to-date list of maintainers and contributors in our AUTHORS file. Thank you!

Owner

  • Name: Pyccel
  • Login: pyccel
  • Kind: organization

Citation (CITATION.bib)

@inproceedings{Guclu2022,
  title = {{{PSYDAC}}: A High-Performance {{IGA}} Library in {{Python}}},
  booktitle = {8th {{European Congress}} on {{Computational Methods}} in {{Applied Sciences}} and {{Engineering}}},
  author = {Güçlü, Y. and Hadjout, S. and Ratnani, A.},
  year = {2022},
  publisher = {CIMNE},
  doi = {10.23967/eccomas.2022.227},
  url = {https://www.scipedia.com/public/Guclu_et_al_2022a},
  eventtitle = {8th {{European Congress}} on {{Computational Methods}} in {{Applied Sciences}} and {{Engineering}}},
}

GitHub Events

Total
  • Issues event: 40
  • Watch event: 11
  • Delete event: 21
  • Issue comment event: 129
  • Push event: 297
  • Pull request event: 62
  • Pull request review comment event: 239
  • Pull request review event: 249
  • Fork event: 6
  • Create event: 34
Last Year
  • Issues event: 40
  • Watch event: 11
  • Delete event: 21
  • Issue comment event: 129
  • Push event: 297
  • Pull request event: 62
  • Pull request review comment event: 239
  • Pull request review event: 249
  • Fork event: 6
  • Create event: 34

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 43
  • Total pull requests: 57
  • Average time to close issues: 9 months
  • Average time to close pull requests: about 1 month
  • Total issue authors: 9
  • Total pull request authors: 12
  • Average comments per issue: 0.35
  • Average comments per pull request: 1.47
  • Merged pull requests: 32
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 25
  • Pull requests: 36
  • Average time to close issues: about 2 months
  • Average time to close pull requests: 22 days
  • Issue authors: 5
  • Pull request authors: 10
  • Average comments per issue: 0.24
  • Average comments per pull request: 1.44
  • Merged pull requests: 15
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • yguclu (25)
  • e-moral-sanchez (6)
  • campospinto (4)
  • jowezarek (4)
  • FrederikSchnack (2)
  • spossann (2)
  • alex-m-h (2)
  • jalalium (1)
  • wbarham (1)
  • saidctb (1)
Pull Request Authors
  • yguclu (24)
  • campospinto (12)
  • kvrigor (10)
  • e-moral-sanchez (8)
  • max-models (8)
  • FrederikSchnack (7)
  • jowezarek (7)
  • maxlin-ipp (5)
  • spossann (3)
  • anushkasinghh (2)
  • Sworzzy (1)
  • wbarham (1)
  • vcarlier (1)
  • ArasuCandassamy (1)
Top Labels
Issue Labels
bug (10) package (6) linalg (5) Next Release (5) enhancement (3) testing (3) codegen (3) performance (3) help wanted (2) FEEC (2) FEM API (2) documentation (1) question (1) PETSc (1) good first issue (1)
Pull Request Labels
bug (4) documentation (3) performance (2) testing (2) urgent (1) codegen (1) FEM API (1) FEEC (1) multi-patch (1)

Dependencies

.github/workflows/continuous-integration.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
.github/workflows/documentation.yml actions
  • actions/checkout v3 composite
  • actions/configure-pages v3 composite
  • actions/deploy-pages v2 composite
  • actions/setup-python v4 composite
  • actions/upload-pages-artifact v1 composite
pyproject.toml pypi
  • gelato == 0.12
  • h5py *
  • igakit @ https://github.com/dalcinl/igakit/archive/refs/heads/master.zip
  • matplotlib *
  • mpi4py *
  • numba *
  • numpy >= 1.16, < 1.25
  • packaging *
  • pyccel == 1.8.1
  • pyevtk *
  • pytest >= 4.5
  • pyyaml >= 5.1
  • scipy >= 0.18
  • sympde == 0.18.1
  • sympy >= 1.5
  • tblib *
requirements.txt pypi
  • Cython >=0.25,<3.0
  • mpi4py >=3.0.0
  • numpy >=1.16,<1.25
  • pkgconfig *
  • setuptools >=61,
  • wheel *
requirements_extra.txt pypi
  • h5py *
setup.py pypi