Giter Site home page Giter Site logo

mihasm / python-bem Goto Github PK

View Code? Open in Web Editor NEW
13.0 1.0 1.0 3.58 MB

Python Pyqt5 GUI app for calculating wind turbine and propeller characteristics using BEM theory (Blade Element Momentum Theory).

License: GNU General Public License v3.0

Python 100.00%
bem efficiency gui propeller python turbine wind pyqt5-desktop-application bemt

python-bem's Introduction

About the software

What is it for?

Wind turbines and propellers involve relatively complex geometries, and due to the rotation of the turbine, movement of the air, and the fact that lift is a function of the shape of each blade, it is hard to calculate the forces, power and efficiency of such systems by hand.

Methods for determining the parameters of such turbines were in the past mainly experimental, and nowadays relatively accurate calculations can be made using 3D computational fluid dynamics calculations. The main disadvantages to such methods are the cost, and time involved in preparation, calculation, and post-calculation analysis.

In order for a turbine designer to quickly generate a geometry and determine the forces and other parameters of a turbine, a fast, cost-effective way is to use the blade element momentum theory.

Blade element momentum theory

Blade Element Momentum theory software (BEM) is a tool for calculating the local forces on a propeller or wind turbine using the blade element momentum theory. The calculation is based on the Rankine-Froude momentum theory and the blade element theory.

The main disadvantage of BEM is that it does not account for complex 3-D hydrodynamic and aerodynamic effects. It is still relatively accurate, and the quality of the analysis is better with larger turbines and with higher-quality input data.

In principle, the calculation is done on a single blade. Each blade is divided into sections, and forces on each section are calculated separately. The coefficients of lift and drag (cL and cD) of each section depends mainly on the Reynolds number of the medium and the angle of attack (but also depends on other factors, such as the boundary layer, etc.). An iterative system of equations is then set up to determine the needed parameters.

The input to the calculation consists of the following data:
a. basic turbine data (tip radius, hub radius, type of turbine, type of fluid)
b. geometry of each section (chord length, twist angle, radius, type of airfoil)
c. the lift/drag curves of each airfoil
d. calculation parameters (main equation selection, selection of corrections, etc.)
e. other parameters \

The output of the calculation consists of:
a. forces acting on each blade
b. the total power, torque and efficiency
c. (optionally) statical analysis
d. other parameters \

Similar software

Software that fulfill a similar role, and were an inspiration to the development of this software, include: QBlade, Aerodyn, XFOIL, etc.

There are many custom BEM-based applications that turbine and propeller manufacturers develop in-house and are not publicly available.

How to use the software

Main window

The BEM software main window is divided into multiple tabs, which are divided by their corresponding function, these are: Airfoil management, Turbine info, Analysis and Optimization. The analysis is started on the Analyiss tab and after it is finished, an Results window is finally opened, from which results can be checked on and exported, as necessary.

Airfoil management

In the Airfoil management tab, a designer can:
a. Add, rename, duplicate, remove, load and save airfoil data
b. import airfoil data
c. import or calculate the cL/cD curves of an airfoil
d. create 360° cL/cD curves using Montgomerie methods \

Turbine info

In the Turbine info tab, a designer can:
a. Set up the basic turbine data (name, radii, number of blades, etc.)
b. Set the turbine scaling and interpolation, if needed for calculation for different sizes and numbers of sections
c. Generate a preliminary geometry of wind turbines or propellers using different methods (included are Betz, Schmitz, Larrabee, Adkins)
d. View the generated geometry in 3D
e. Export the geometry to Solidworks
f. Create standard geometry graphs for distribution and documentation purposes \

Analysis

In the Analysis tab, a designer can:
a. Determine the basic calculation parameters
b. Run the analysis, which will, after finishing, open the results window \

Optimization

In the Optimization tab, the designer can optimize the geometry using an optimization algorithm in order to ensure that the geometry is optimized to a specific fluid speed/rotational velocity combination. The parameters that will be modified are called input parameters, and the parameters that will determine the success of the optimization (optimization function) are called the output variables. Target variables are also supported, in case one desires not the largest torque, power, or other parameter, but instead a specific torque, power or other parameter.

The optimization GUI is still in developement.

Installation and usage

Supported Python version

3.2+

Install

pip install -r requirements.txt

Usage

python main.py

Create Executable

pyinstaller main.spec

On Mac - to run xfoil

brew install xquartz

License

Python BEM - Blade Element Momentum Theory Software.

Copyright (C) 2022 M. Smrekar

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

python-bem's People

Contributors

mihasm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

kiranhegde

python-bem's Issues

Help with the code

Hello, firstly, congratulations on the code development!
I would like to know how to execute it directly through the script, could you give me an example?

Thank you for your help.

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.