floris

A controls-oriented engineering wake model.

https://github.com/nrel/floris

Science Score: 36.0%

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

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    1 of 44 committers (2.3%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.5%) to scientific vocabulary

Keywords from Contributors

operations-maintenance simpy wind-energy structures interactive serializer packaging network-simulation shellcodes hacking
Last synced: 10 months ago · JSON representation

Repository

A controls-oriented engineering wake model.

Basic Info
Statistics
  • Stars: 252
  • Watchers: 23
  • Forks: 176
  • Open Issues: 93
  • Releases: 50
Created over 7 years ago · Last pushed 10 months ago
Metadata Files
Readme Contributing License

README.md

FLORIS Wake Modeling and Wind Farm Controls Software

FLORIS is a controls-focused wind farm simulation software incorporating steady-state engineering wake models into a performance-focused Python framework. It has been in active development at NREL since 2013 and the latest release is FLORIS v.4.4.2. Online documentation is available at https://nrel.github.io/floris.

The software is in active development and engagement with the development team is highly encouraged. If you are interested in using FLORIS to conduct studies of a wind farm or extending FLORIS to include your own wake model, please join the conversation in GitHub Discussions!

Installation

If upgrading from a previous version, it is recommended to install FLORIS v4 into a new virtual environment. If you intend to use pyOptSparse with FLORIS, it is recommended to install that package first before installing FLORIS.

FLORIS can be installed by downloading the source code or via the PyPI package manager with pip.

The simplest method is with pip by using this command:

bash pip install floris

Developers and anyone who intends to inspect the source code can install FLORIS by downloading the git repository from GitHub with git and use pip to locally install it. It is highly recommended to use a Python virtual environment manager such as conda in order to maintain a clean and sandboxed environment. The following commands in a terminal or shell will download and install FLORIS.

``bash # Download the source code from themain` branch git clone -b main https://github.com/NREL/floris.git

# If using conda, be sure to activate your environment prior to installing
# conda activate <env name>

# If using pyOptSpare, install it first
conda install -c conda-forge pyoptsparse

# Install FLORIS
pip install -e floris

```

With both methods, the installation can be verified by opening a Python interpreter and importing FLORIS:

```python

import floris help(floris)

Help on package floris:

NAME floris - # Copyright 2024 NREL

PACKAGE CONTENTS convertflorisinputv3tov4 convertturbinev3tov4 core (package) cutplane florismodel flowvisualization layoutvisualization loggingmanager optimization (package) parallelflorismodel turbinelibrary (package) typedec uncertainflorismodel utilities version wind_data

VERSION 4.4.2

FILE ~/floris/floris/init.py ```

It is important to regularly check for new updates and releases as new features, improvements, and bug fixes will be issued on an ongoing basis.

Quick Start

FLORIS is a Python package run on the command line typically by providing an input file with an initial configuration. It can be installed with pip install floris (see installation). The typical entry point is FlorisModel which accepts the path to the input file as an argument. From there, changes can be made to the initial configuration through the FlorisModel.set routine, and the simulation is executed with FlorisModel.run.

python from floris import FlorisModel fmodel = FlorisModel("path/to/input.yaml") fmodel.set( wind_directions=[i for i in range(10)], wind_speeds=[8.0]*10, turbulence_intensities=[0.06]*10 ) fmodel.run()

Finally, results can be analyzed via post-processing functions available within FlorisModel such as - FlorisModel.getturbinelayout - FlorisModel.getturbinepowers - FlorisModel.getfarmAEP

and in two visualization packages: layoutviz and flowviz. A collection of examples describing the creation of simulations as well as analysis and post processing are included in the repository. Examples are also listed in the online documentation.

Engaging on GitHub

FLORIS leverages the following GitHub features to coordinate support and development efforts:

  • Discussions: Collaborate to develop ideas for new use cases, features, and software designs, and get support for usage questions
  • Issues: Report potential bugs and well-developed feature requests
  • Projects: Include current and future work on a timeline and assign a person to "own" it

Generally, the first entry point for the community will be within one of the categories in Discussions. Ideas is a great spot to develop the details for a feature request. Q&A is where to get usage support. Show and tell is a free-form space to show off the things you are doing with FLORIS.

License

BSD 3-Clause License

Copyright (c) 2024, Alliance for Sustainable Energy LLC, All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

  • Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Owner

  • Name: National Renewable Energy Laboratory
  • Login: NREL
  • Kind: organization
  • Location: Golden, CO

Committers

Last synced: 11 months ago

All Time
  • Total Commits: 1,940
  • Total Committers: 44
  • Avg Commits per committer: 44.091
  • Development Distribution Score (DDS): 0.503
Past Year
  • Commits: 82
  • Committers: 10
  • Avg Commits per committer: 8.2
  • Development Distribution Score (DDS): 0.463
Top Committers
Name Email Commits
Rafael M Mudafort r****f@g****m 964
Paul p****g@n****v 327
bayc c****y@g****m 178
misi9170 3****0 86
Bay c****y@n****v 69
Rob Hammond 1****2 68
Eric Simley e****y@n****v 38
Annoni j****i@n****v 32
Annoni j****i@.****v 26
nhamilto n****n@g****m 23
Bart Doekemeijer b****r@n****v 21
Pete Bachant p****t@g****m 19
Nicholas Hamilton n****n@n****v 19
Hammond, Robert R****d@n****v 16
Bart Doekemeijer b****r@s****m 10
kflemin k****g@n****v 6
Eliot Quon e****n@n****v 4
PJ Stanley s****j@y****m 3
Bensason d****o@n****v 2
jrannoni j****i@n****v 2
Pablo Benito Cia p****o@c****m 2
Gopal Yalla g****a@s****v 2
pjireland p****d@w****m 2
Tony Martinez t****e@g****m 1
afarrell2 5****2 1
dependabot[bot] 4****] 1
jfrederik-nrel 1****l 1
pduff-code 5****e 1
rctredgold 6****d 1
scottryn s****n@g****m 1
and 14 more...

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 260
  • Total pull requests: 690
  • Average time to close issues: 5 months
  • Average time to close pull requests: 29 days
  • Total issue authors: 75
  • Total pull request authors: 50
  • Average comments per issue: 2.03
  • Average comments per pull request: 2.05
  • Merged pull requests: 539
  • Bot issues: 0
  • Bot pull requests: 1
Past Year
  • Issues: 30
  • Pull requests: 121
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 12 days
  • Issue authors: 15
  • Pull request authors: 12
  • Average comments per issue: 1.1
  • Average comments per pull request: 1.81
  • Merged pull requests: 88
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • paulf81 (48)
  • rafmudaf (33)
  • Bartdoekemeijer (24)
  • misi9170 (21)
  • bayc (15)
  • pjireland (8)
  • achenry (7)
  • MYMahfouz (4)
  • Josue9740 (4)
  • zerweck (4)
  • fpxno1 (3)
  • gogannes (3)
  • ElieKadoche (3)
  • fabiodominguezs (3)
  • DeeDive (3)
Pull Request Authors
  • paulf81 (222)
  • misi9170 (150)
  • rafmudaf (97)
  • bayc (59)
  • Bartdoekemeijer (37)
  • RHammond2 (18)
  • ejsimley (12)
  • nhamilto (8)
  • pjireland (7)
  • gogannes (5)
  • ElieKadoche (4)
  • jaredthomas68 (4)
  • ewquon (4)
  • gyalla (4)
  • pjstanle (3)
Top Labels
Issue Labels
bug (74) enhancement (69) v3 (46) floris.simulation (15) floris.tools (13) documentation (12) v4 (8) v2.x (6) help wanted (5) floating-turbine (5) ideas-list (5) back-log (4) in-progress (4) good first issue (3) examples (3) floris.optimization (2) new-feature (2) v3.3 (1) feature (1) question (1) backlog (1)
Pull Request Labels
enhancement (199) bug (128) v4 (80) v3 (72) documentation (39) floris.tools (27) floris.simulation (15) new-feature (13) examples (11) floris.optimization (8) in-progress (5) on-hold (5) floating-turbine (4) v2.x (4) v3.3 (3)

Packages

  • Total packages: 4
  • Total downloads:
    • pypi 8,614 last-month
  • Total dependent packages: 3
    (may contain duplicates)
  • Total dependent repositories: 11
    (may contain duplicates)
  • Total versions: 149
  • Total maintainers: 4
pypi.org: floris

A controls-oriented engineering wake model.

  • Homepage: https://github.com/NREL/floris
  • Documentation: https://nrel.github.io/floris/
  • License: BSD 3-Clause License Copyright (c) 2024, Alliance for Sustainable Energy LLC, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  • Latest release: 4.4.2
    published about 1 year ago
  • Versions: 55
  • Dependent Packages: 3
  • Dependent Repositories: 11
  • Downloads: 8,614 Last month
Rankings
Forks count: 4.2%
Dependent repos count: 4.4%
Average: 5.6%
Stargazers count: 5.7%
Downloads: 6.2%
Dependent packages count: 7.3%
Maintainers (4)
Last synced: 10 months ago
proxy.golang.org: github.com/nrel/floris
  • Versions: 40
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 7.0%
Average: 8.2%
Dependent repos count: 9.3%
Last synced: 10 months ago
proxy.golang.org: github.com/NREL/floris
  • Versions: 40
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 7.0%
Average: 8.2%
Dependent repos count: 9.3%
Last synced: 10 months ago
conda-forge.org: floris
  • Versions: 14
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Forks count: 16.1%
Stargazers count: 29.3%
Average: 32.7%
Dependent repos count: 34.0%
Dependent packages count: 51.2%
Last synced: 10 months ago

Dependencies

requirements.txt pypi
  • attrs *
  • coloredlogs *
  • matplotlib *
  • numexpr *
  • numpy *
  • pandas *
  • pytest *
  • pyyaml *
  • scipy *
  • shapely *