Giter Club home page Giter Club logo

python-toolbox's Introduction

pyfast

Build status Python: 3.6+

Python package to work with NREL-supported OpenFAST tool. This repository intends to provide simple scripts to help OpenFAST users setup models, run simulations and postprocess the results.

Installation and testing

git clone http://github.com/OpenFAST/python-toolbox
cd python-toolbox
python -m pip install -e .
pytest

Subpackages

The repository contains a set of small packages:

  • input_output: read/write OpenFAST/FAST.Farm/OLAF input and output files (see README)
  • postpro: postprocess OpenFAST outputs (extract radial data, compute fatigue loads) (see examples)
  • linearization: tools to deal with OpenFAST linearization, e.g. generate a Campbell diagram (see examples)
  • aeroacoustics: tools for aeroacoustics (generate BL files and plot outputs)
  • case_generation: tools to generate and run a set of input of OpenFAST input files (see examples)

QuickStart and main usage

Read and write files

Find examples scripts in this folder and the different fileformats here.

Read an AeroDyn file (or any OpenFAST input file), modifies some values and write the modified file:

from pyFAST.input_output import FASTInputFile
filename = 'AeroDyn.dat'
f = FASTInputFile(filename)
f['TwrAero'] = True
f['AirDens'] = 1.225
f.write('AeroDyn_Changed.dat')

Read an OpenFAST binary output file and convert it to a pandas DataFrame

from pyFAST.input_output import FASTOutputFile
df = FASTOutputFile('5MW.outb').toDataFrame()
time  = df['Time_[s]']
Omega = df['RotSpeed_[rpm]']

Read a TurbSim binary file, modify it and write it back

from pyFAST.input_output import TurbSimFile
ts = TurbSimFile('Turb.bts')
print(ts.keys())
print(ts['u'].shape)  
ts['u'][0,:,:,:] += 1 # Adding 1 m/s in the streamwise
tw.write('NewTurbulenceBox.bts')

Polar/airfoil manipulation

Find examples scripts in this folder.

Read a CSV file with alpha, Cl, Cd, Cm, and write it to AeroDyn format (also computes unsteady coefficients)

from pyFAST.airfoils.Polar import Polar
polar = Polar('pyFAST/airfoils/data/DU21_A17.csv', fformat='delimited')
ADpol = polar.toAeroDyn('AeroDyn_Polar_DU21_A17.dat')

Write a set of OpenFAST input file for multiple simulations

Find examples scripts in this folder.

Postprocessing

Below are different scripts to manipulate OpenFAST outputs:

Future work and friend projects

This repository intends to provide simple scripts to help users of OpenFAST. The repo is still in its early phase, so you may find that functionalities are missing or not bullet proof. Your contributions would be much appreciated, feel free to post issues and pull-requests. We will thrive to provide tests and examples.

In the meantime, you can also find relevant python scripts in the following repositories:

  • WISDEM: models for assessing overall wind plant cost of energy (COE), also contains file IO, (DLC) case generation, polar manipulations, visualization, and much more!
  • weio : reader and writer for typical files used by the wind energy community
  • welib: misc tools for wind energy applications (BEM, FEM, polars, ...)
  • ROSCO_toolbox: tools to work with the ROSCO controller that is supported by OpenFAST
  • windtools: toolsfor wind simulation setup, data processing and analysis
  • pyDatView: cross-platform visualization and processing program for input and output files

Matlab script are found in the matlab-toolbox.

Open-source OpenFAST wind turbine models can be found here:

  • openfast-turbine-models: open source wind turbine models (in development)
  • r-test: regression tests for OpenFAST, contains models for OpenFAST and its drivers (AeroDyn, SubDyn, HydroDyn, etc.). This repository is not intended to be used as a "database" of models, but it has the advantage that the input files are alwasy up to date with the latest format specifications

General documentation for OpenFAST is found on its readthedocs page.

Contributing

This repository is still work in progress, thank you for your understanding. Any contribution is much appreciated, feel free to post issues or pull-requests.

python-toolbox's People

Contributors

ebranlard avatar rafmudaf avatar rhammond2 avatar dzalkind avatar ptrbortolotti avatar brookeslawski avatar tatesnow avatar kshaler avatar latons452 avatar verlivkra avatar zwergon avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.