Git Product home page Git Product logo

bpm.jl's Introduction

BPM Turbine Acoustics

Turbine acoustic code using the BPM equations developed by Brooks, Pope, and Marcolini

Developed by Eric Tingey at the FLOW Lab in Brigham Young University, 2015-2017, Translated to Julia by Kevin Moore and Taylor McDonald at FLOW Lab, 2018 Refactored by Tyler Critchfield and Eduardo Alvarez at FLOW Lab, 2020.

This code models the acoustic propagation of a wind turbine based on turbulent boundary layer edge noise, separation stall noise, tip vortex formation noise, laminar boundary layer vortex shedding noise, and trailing edge bluntness vortex shedding noise. Turbulent inflow noise is not assumed in this current code. The semi-empirical equations were developed from the NACA 0012 airfoil data and the blade segments used in the test file are based on the NREL 5-MW wind turbine. Scaling of the segments is based on the blade length specified.

Brooks, T., Pope, D., and Marcolini, M., “Aipower Self-Noise and Prediction,” NASA, 1989.

Brooks, T., and Marcolini, M., "Airfoil Tip Vortex Formation Noise," AIAA Journal, 1986.

Vargas, L., "Wind Turbine Noise Prediction," Master's Thesis, Technical University of Lisbon, 2008.

Running the code

This julia code can be run from another file using:

import BPM

OASPL_HAWT, SPLf_HAWT, SPLfA_HAWT = BPM.turbinepos(turbx, turby, obs, winddir, windvel, rpm, B, h, rad, c, c1, alpha, nu, c0, psi, AR, noise_corr)

OASPL_VAWT = BPM.turbinepos_VAWT(p,x,y,obs,winddir,B,Hub,high,rad,c,c1,alpha,nu,c0,psi,AR,noise_corr,rot,Vinf,wakex,wakey)

Input and Output Definition

"""

turbinepos(x,y,obs,winddir,windvel,rpm,B,Hub,rad,c,c1,alpha,nu,c0,psi,AR,noise_corr)


Calculating the sound pressure level for a HAWT

Parameters
----------
- `turbx::array`:  x-positions of all the turbines heard by an observer (east to west, meter)
- `turby::array`:  y-positions of all the turbines heard by an observer (north to south, meter)
- `obs::array`:  x-, y-, and z-position of a specified observer (E-W, N-S, height; meter)
- `winddir::float`:  direction the wind blows from (180=N, 270=E, 0=S, 90=W; degree)
- `windvel::array`:  wind velocity at each turbine in the specified wind direction (m/s)
- `rpm::array`:  rotation rate of each turbine (RPM)
- `B::float`:  number of blades on a turbine
- `h::float`:  height of a turbine (meter)
- `rad::array`:  radial positions of the blade geometry (meter)
- `c::array`:  chord length at each radial segment (meter)
- `c1::array`:  distance from the pitch axis to leading edge at each radial segment (meter)
- `alpha::array`:  angle of attack of each radial segment (degree)
- `nu::float`:  kinematic viscosity of the air (m^2/s)
- `c0::float`:  speed of sound of the air (m/s)
- `psi::float`:  solid angle of turbine blades between upper and lower sides of trailing edge (degree)
- `AR::float`:  aspect ratio of turbine blades
- `noise_corr::float`:  correction factor for SPL calculations (1=none, use if calculations differ from expected)

Returns
----------
- `OASPL_HAWT::float`:  A-weighted overall sound pressure level calculated at observer location (dB)
- `SPLf_HAWT`: sound pressure level at each frequency
- `SPLfA_HAWT`: A-weighted sound pressure level at each frequency

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

turbinepos_VAWT(p,x,y,obs,winddir,B,Hub,high,rad,c,c1,alpha,nu,c0,psi,AR,noise_corr,rot,Vinf,wakex,wakey)

Calculating the sound pressure level for a HAWT

# Parameters
----------
- `p::integer`: number of points along blade flight path to calculate velocities
- `turbx::array`:  x-positions of all the turbines heard by an observer (east to west, meter)
- `turby::array`:  y-positions of all the turbines heard by an observer (north to south, meter)
- `obs::array`:  x-, y-, and z-position of a specified observer (E-W, N-S, height; meter)
- `winddir::float`:  direction the wind blows from (180=N, 270=E, 0=S, 90=W; degree)
- `B::float`:  number of blades on a turbine
- `Hub::float`: hub height of a turbine (meter)
- `high::array`: height positions along the turbine blade (meter)
- `rad::array`:  turbine radius (meter)
- `c::array`:  chord length at each radial segment (meter)
- `c1::array`:  distance from the pitch axis to leading edge at each radial segment (meter)
- `alpha::array`:  angle of attack of each radial segment (degree)
- `nu::float`:  kinematic viscosity of the air (m^2/s)
- `c0::float`:  speed of sound of the air (m/s)
- `psi::float`:  solid angle of turbine blades between upper and lower sides of trailing edge (degree)
- `AR::float`:  aspect ratio of turbine blades
- `noise_corr::float`:  correction factor for SPL calculations (1=none, use if calculations differ from expected)
- `rot::array`: rotation rate of each turbine (rad/s)
- `Vinf::float`: free stream wind speed (m/s)
- `wakex::array`: the wake influenced x-velcoity of the turbine at each point along the blade flight path (m/s)
- `wakey::array`: the wake influenced y-velcoity of the turbine at each point along the blade flight path (m/s)
# Returns
----------
- `SPL_VAWT::float`:  sound pressure level calculated at observer location (dB)
"""

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.