Metadata-Version: 2.4
Name: pyfuga
Version: 0.3.0
Summary: Linearised CFD wake model (PyFuga)
Author-email: PyFuga team <lalc@dtu.dk>
License-Expression: MIT
Project-URL: Repository, https://gitlab.windenergy.dtu.dk/TOPFARM/PyFuga
Project-URL: Documentation, https://topfarm.pages.windenergy.dtu.dk/PyFuga/
Project-URL: Issues, https://gitlab.windenergy.dtu.dk/TOPFARM/PyFuga/-/issues
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering
Requires-Python: <3.15,>=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=1.26
Requires-Dist: scipy>=1.10
Requires-Dist: matplotlib>=3.10.8
Requires-Dist: xarray>=2025.6.1
Requires-Dist: tqdm>=4.67.3
Requires-Dist: h5netcdf>=1.8.1
Requires-Dist: h5py>=3.15.1
Requires-Dist: numba>=0.63.1
Provides-Extra: tests
Requires-Dist: pytest>=8.3; extra == "tests"
Requires-Dist: pytest-cov>=6.0; extra == "tests"
Requires-Dist: pytest-xdist>=3.0; extra == "tests"
Requires-Dist: memory_profiler>=0.61.0; extra == "tests"
Requires-Dist: line_profiler>=5.0.0; extra == "tests"
Requires-Dist: nbconvert<8,>=7.16.6; extra == "tests"
Requires-Dist: ipykernel<8,>=6.29; extra == "tests"
Requires-Dist: jupyter_client<9,>=8.6; extra == "tests"
Provides-Extra: lint
Requires-Dist: ruff>0.14; extra == "lint"
Requires-Dist: black[jupyter]>=26.1.0; extra == "lint"
Requires-Dist: mypy>=1.19.1; extra == "lint"
Requires-Dist: packaging>=24; extra == "lint"
Requires-Dist: scipy-stubs>=1.10; extra == "lint"
Requires-Dist: types-tqdm>=4.0; extra == "lint"
Provides-Extra: docs
Requires-Dist: sphinx==7.4.7; extra == "docs"
Requires-Dist: sphinx-autobuild==2024.10.3; extra == "docs"
Requires-Dist: sphinx-rtd-theme==3.1.0; extra == "docs"
Requires-Dist: sphinx-rtd-dark-mode==1.3.0; extra == "docs"
Requires-Dist: nbsphinx==0.9.8; extra == "docs"
Requires-Dist: sphinxcontrib-bibtex==2.6.5; extra == "docs"
Requires-Dist: sphinx-multiversion==0.2.4; extra == "docs"
Requires-Dist: sphinx-copybutton==0.5.2; extra == "docs"
Requires-Dist: ipykernel==7.2.0; extra == "docs"
Provides-Extra: dev
Requires-Dist: pyfuga[docs,lint,tests]; extra == "dev"
Requires-Dist: pre-commit; extra == "dev"
Requires-Dist: build<2,>=1.4.0; extra == "dev"
Dynamic: license-file

<p align="center">
  <img width="460" height="300" src="https://gitlab.windenergy.dtu.dk/TOPFARM/PyFuga/-/raw/main/docs/_static/logo_icon_text.svg">
</p>

**PyFuga** is the Python implementation of the **Fuga** look-up table (LUT) generator for wind turbine wakes, previously computed in FORTRAN and with the Windows Fuga GUI.

PyFuga is part of the [**PyWake**](https://gitlab.windenergy.dtu.dk/TOPFARM/PyWake) ecosystem and provides the LUTs required to run PyWake's Fuga wake deficit model.

[![pipeline status](https://gitlab.windenergy.dtu.dk/TOPFARM/PyFuga/badges/main/pipeline.svg)](https://gitlab.windenergy.dtu.dk/TOPFARM/PyFuga/-/commits/main)
[![coverage report](https://gitlab.windenergy.dtu.dk/TOPFARM/PyFuga/badges/main/coverage.svg)](https://gitlab.windenergy.dtu.dk/TOPFARM/PyFuga/-/commits/main)
[![documentation](https://img.shields.io/badge/docs-latest-brightgreen.svg)](https://topfarm.pages.windenergy.dtu.dk/PyFuga)
[![All versions DOI (Zenodo)](https://zenodo.org/badge/DOI/10.5281/zenodo.19569518.svg)](https://doi.org/10.5281/zenodo.19569518)

## Installation

Install via pip:

```bash
pip install pyfuga
```

or from conda-forge with conda:

```bash
conda install conda-forge:pyfuga
```

or Pixi:

```bash
pixi add pyfuga
```

A minimal example to get you started is available in **[the QuickStart Jupyter notebook](docs/examples/01_QuickStart.ipynb)**.

## Documentation

Learn more about PyFuga at the **[official documentation](https://topfarm.pages.windenergy.dtu.dk/PyFuga)**.

## Release history

See **[CHANGELOG.md](CHANGELOG.md)** for release notes and version history.

## Contributing

Read more at **[CONTRIBUTING.md](CONTRIBUTING.md)**.

## Support

Issues and feature requests can be submitted through the project's [**GitLab issue tracker**](https://gitlab.windenergy.dtu.dk/TOPFARM/PyFuga/-/issues).

## Citing PyFuga

Please cite both the underlying Fuga theory and the PyFuga software implementation.

For PyFuga itself, **use the DOI on the Zenodo record for the release version you used** (this is the canonical source of truth). The repository `CITATION.cff` mirrors this metadata for convenience.

The badge above points to the latest release DOI. For scientific citation, always use the DOI for the exact release version used in your work.

If you have PyFuga installed, you can print a Zenodo search link for your installed version:

```bash
python scripts/citation.py
```

See the "Citing PyFuga" section in the documentation for recommended references and BibTeX entries.

## Authors and acknowledgements

PyFuga is developed at **DTU Wind and Energy Systems** and builds on the Fuga model described in the technical report by Søren Ott, Mads Mølgaard Pedersen, Gunnar Chr. Larsen, Leonardo Alcayaga, Nils Gaukroger, Elvira Jarmbæk Jacobsen, and colleagues.

The PyFuga project would like to acknowledge **Equinor ASA** for their support of the project over many years.

## Licence

This project is released under the terms of the licence in the [`LICENSE`](LICENSE) file.

## Project status

Active development as part of the PyWake suite. PyFuga continues to evolve alongside ongoing improvements to the Fuga model and its numerical implementation.
