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
Repository
Python 3 library for isogeometric analysis
Basic Info
- Host: GitHub
- Owner: pyccel
- License: mit
- Language: Python
- Default Branch: devel
- Homepage: https://pyccel.github.io/psydac/
- Size: 23.3 MB
Statistics
- Stars: 58
- Watchers: 9
- Forks: 21
- Open Issues: 109
- Releases: 1
Topics
Metadata Files
README.md
Welcome to PSYDAC
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 thatcontains 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
petsc4pycan 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
- Repositories: 18
- Profile: https://github.com/pyccel
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
Pull Request Labels
Dependencies
- actions/checkout v3 composite
- actions/setup-python v4 composite
- 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
- 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 *
- Cython >=0.25,<3.0
- mpi4py >=3.0.0
- numpy >=1.16,<1.25
- pkgconfig *
- setuptools >=61,
- wheel *
- h5py *