Metadata-Version: 2.4
Name: foxes
Version: 1.9.7
Summary: Farm Optimization and eXtended yield Evaluation Software
Author: Jonas Schulte
Maintainer: Jonas Schulte
License-Expression: MIT
Project-URL: Homepage, https://github.com/FraunhoferIWES/foxes
Project-URL: Documentation, https://fraunhoferiwes.github.io/foxes
Project-URL: Repository, https://github.com/FraunhoferIWES/foxes.git
Project-URL: Bug Tracker, https://github.com/FraunhoferIWES/foxes/issues
Project-URL: Changelog, https://github.com/FraunhoferIWES/foxes/blob/main/CHANGELOG.md
Keywords: Wind farm,Wake modelling,Wind farm optimization
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
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: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: matplotlib>=3.8
Requires-Dist: numpy>=1.26
Requires-Dist: pandas>=2.0
Requires-Dist: scipy>=1.12
Requires-Dist: xarray>=2023
Requires-Dist: netcdf4>=1.6
Requires-Dist: h5netcdf>=1.8.1
Requires-Dist: h5py>=3.11.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: tqdm>=4.31.1
Requires-Dist: utm>=0.5
Provides-Extra: opt
Requires-Dist: foxes-opt>=0.9.0; extra == "opt"
Provides-Extra: icon-dream
Requires-Dist: cdo>=1.0.4; extra == "icon-dream"
Requires-Dist: requests>=2.31; extra == "icon-dream"
Provides-Extra: era5
Requires-Dist: metpy>=1.6; extra == "era5"
Provides-Extra: shp
Requires-Dist: geopandas>=0.14.4; extra == "shp"
Provides-Extra: mpi
Requires-Dist: mpi4py>=4.0; extra == "mpi"
Provides-Extra: ray
Requires-Dist: ray>=2.58.0; extra == "ray"
Provides-Extra: multiprocess
Requires-Dist: multiprocess>=0.70.17; extra == "multiprocess"
Provides-Extra: dask
Requires-Dist: dask>=2022.0; extra == "dask"
Requires-Dist: distributed>=2022.0; extra == "dask"
Requires-Dist: dask-jobqueue>=0.8; extra == "dask"
Requires-Dist: setuptools>=84.0.0; extra == "dask"
Provides-Extra: doc
Requires-Dist: setuptools>=84.0.0; extra == "doc"
Requires-Dist: sphinx>=5.0; extra == "doc"
Requires-Dist: sphinx-autoapi>=3.0; extra == "doc"
Requires-Dist: numpydoc>=1.0; extra == "doc"
Requires-Dist: sphinx-immaterial>=0.10; extra == "doc"
Requires-Dist: myst-nb>=1.0; extra == "doc"
Requires-Dist: tomli>=2.0; python_version < "3.11" and extra == "doc"
Requires-Dist: ipykernel>=6.0.2; extra == "doc"
Requires-Dist: ipywidgets>=8.0; extra == "doc"
Requires-Dist: lxml_html_clean>=0.4.5; extra == "doc"
Requires-Dist: dask>=2022.0; extra == "doc"
Requires-Dist: distributed>=2022.0; extra == "doc"
Requires-Dist: jupyterlab>=4.6.3; extra == "doc"
Requires-Dist: mistune>=3.3.4; extra == "doc"
Requires-Dist: nbconvert>=7.17.1; extra == "doc"
Requires-Dist: pillow>=12.3.0; extra == "doc"
Requires-Dist: tornado>=6.5.8; extra == "doc"
Provides-Extra: test
Requires-Dist: pytest>=9.0.3; extra == "test"
Requires-Dist: nbmake>1.0; extra == "test"
Requires-Dist: pre-commit>=3.0; extra == "test"
Requires-Dist: mypy!=2.3.1,>=1.11.0; extra == "test"
Requires-Dist: multiprocess>=0.70.17; extra == "test"
Requires-Dist: jupyterlab>=4.6.3; extra == "test"
Requires-Dist: mistune>=3.3.4; extra == "test"
Requires-Dist: nbconvert>=7.17.1; extra == "test"
Requires-Dist: pillow>=12.3.0; extra == "test"
Requires-Dist: tornado>=6.5.8; extra == "test"
Provides-Extra: dev
Requires-Dist: pre-commit>=3.0; extra == "dev"
Requires-Dist: mypy!=2.3.1,>=1.11.0; extra == "dev"
Requires-Dist: objsize>=0.5; extra == "dev"
Requires-Dist: jupyter>=1.0; extra == "dev"
Requires-Dist: jupyterlab>=4.6.3; extra == "dev"
Requires-Dist: mistune>=3.3.4; extra == "dev"
Requires-Dist: nbconvert>=7.17.1; extra == "dev"
Requires-Dist: pillow>=12.3.0; extra == "dev"
Requires-Dist: tornado>=6.5.8; extra == "dev"
Dynamic: license-file

# Welcome to FOXES

![FOXES Logo](Logo_FOXES.svg)

## Overview

*Farm Optimization and eXtended yield Evaluation Software*

*FOXES* is a modular Python package for wind-farm and wake modelling by
Fraunhofer IWES. Typical applications include:

- Wind farm optimization, e.g. layout optimization or wake steering,
- Wind farm post-construction analysis,
- Wake model studies, comparison and validation,
- Wind farm simulations invoking complex model chains.

FOXES uses vectorized calculations and supports local or distributed execution.
Wind-farm optimization is provided by the separate
[foxes-opt](https://github.com/FraunhoferIWES/foxes-opt) package.

| Resource | Link |
| :--- | :--- |
| Documentation | [https://fraunhoferiwes.github.io/foxes](https://fraunhoferiwes.github.io/foxes) |
| Source code | [https://github.com/FraunhoferIWES/foxes](https://github.com/FraunhoferIWES/foxes) |
| PyPI | [https://pypi.org/project/foxes/](https://pypi.org/project/foxes/) |
| conda-forge | [https://anaconda.org/conda-forge/foxes](https://anaconda.org/conda-forge/foxes) |
| License | [MIT](https://github.com/FraunhoferIWES/foxes/blob/main/LICENSE) |

[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/FraunhoferIWES/foxes)

## Citation

Please cite the JOSS paper "FOXES: Farm Optimization and eXtended yield
Evaluation Software".

[![DOI](https://joss.theoj.org/papers/10.21105/joss.05464/status.svg)](https://doi.org/10.21105/joss.05464)

BibTeX:
```bibtex
@article{
    Schmidt2023,
    author = {Jonas Schmidt and Lukas Vollmer and Martin Dörenkämper and Bernhard Stoevesandt},
    title = {FOXES: Farm Optimization and eXtended yield Evaluation Software},
    doi = {10.21105/joss.05464},
    url = {https://doi.org/10.21105/joss.05464},
    year = {2023},
    publisher = {The Open Journal},
    volume = {8},
    number = {86},
    pages = {5464},
    journal = {Journal of Open Source Software}
}
```

## Requirements

Requires Python 3.10 through 3.14.

## Installation

Either install via pip:

```console
pip install foxes
```

Alternatively, install via conda:

```console
conda install foxes -c conda-forge
```

## Usage

For detailed examples of how to run _foxes_, check the [examples](examples/)
and [notebooks](notebooks/) folders in this repository. A minimal running
example is the following, based on provided static `csv` data files:

```python
import foxes

if __name__ == "__main__":
    states = foxes.input.states.Timeseries(
        "timeseries_3000.csv.gz", ["WS", "WD", "TI", "RHO"]
    )

    farm = foxes.WindFarm()
    foxes.input.farm_layout.add_from_file(
        farm, "test_farm_67.csv", turbine_models=["NREL5MW"]
    )

    algo = foxes.algorithms.Downwind(farm, states, ["Jensen_linear_k007"])
    farm_results = algo.calc_farm()

    print(farm_results)
```

## Testing

For testing, please clone the repository and install the required dependencies:

```console
git clone https://github.com/FraunhoferIWES/foxes.git
cd foxes
uv sync --extra test
```

Run the tests with:

```console
uv run pytest tests
```

For the full development setup, see the [development guide](docs/development.md).

## Contributing

1. Fork _foxes_ on _github_.
2. Create a branch (`git checkout -b new_branch`)
3. Commit your changes (`git commit -am "your awesome message"`)
4. Push to the branch (`git push origin new_branch`)
5. Create a pull request [here](https://github.com/FraunhoferIWES/foxes/pulls)

## Acknowledgements

Development of *FOXES* was supported by:

- BMWK projects *Smart Wind Farms* (0325851B), *GW-Wakes* (0325397B), and *X-Wakes* (03EE3008A)
- BMBF project *H2Digital* (03SF0635)
- Horizon Europe projects *FLOW* (101084205) and *AIRE* (101083716)
