Giter Site home page Giter Site logo

comppy's Introduction

CompPy - Compressor Design

This is a standalone axial compressor design program. I built this after the frustrating and monotonous task of using Python scripts in Blender to create and render axial compressor objects. Given user specified parameters, the program will render the object (rotor or stator) in the window and export the rendered object as a .STL file.

Ducted fans and axial compressors are designed using the same techniques. Given certain parameters, a blade shape can be constructed. Ducted fans work by increasing the velocity of the inflow, whereas an axial compressor attempts to maintain the velocity but increase the pressure. The difference is the use of stator vanes, which (on a very basic level) are reversed, static rotor blades.

There are many ways to calculate how the rotor will be created and how it will perform, this program utilizes the Mean Line Radius technique.

Dependencies

  • numpy
  • matplotlib
  • numpy-stl (Link)
  • PyQt 4/5: It's compatible for both PyQt4 and PyQt5

Usage

I've really tried to make this user-friendly but I'll still give a brief overview.

  • When the user opens the program, every box will be yellow and there will be no stages in the left-most list widget.
  • To generate a rotor or stator object, the parameters need to be filled in.
  • To add a stage the Add Stage button must be clicked. This will generate the first stage object.
  • Each stage has five common variables, Reaction Coefficient, Loading Coefficient, Flow Coefficient, RPM, and the Mean Line Radius.
  • As the user fills in the parameters, if the values are permissible, the box will turn green. Most items are simple floats, except for the obvious ones (RPM, Num of Blades)
  • To generate just a rotor, you need to fill out the Universal Coefficients and the Rotor Specifications sections, you do not need to mess with the Stator Sepcifications section. And vise versa for generating a stator.
  • After entering all the parameters for the object, one can either click Draw Blade Profile to get drawings of the cross sections of the root and tip of blade. Or click Render STL to generate the 3D object.
  • Under Rotor Specifications there is a checkbox that says Support Wall, that is used to generate a wall around the rotor. This wall is primarily used for micro turbomachinery to prevent the rotor from destroying itself.
  • Once one of those is picked, a window will pop up to choose which object to use. If all the parameters are valid in the subsection, the drawing or render will be generated.
  • If a 3D render is generated, it will appear in the top right-most corner. It has basic matplotlib functionality: Right Click to rotate, and Left Click to Zoom.
  • If the user is happy with the 3D rendering, they can choose to export the STL file to a specified location with Export STL.
  • You can continue this process for as many stages as you want.
  • Once done, you can save your compressor under File > Save and it will generate a .json file that houses all the relevant information to be opened another time.

Assumptions

If there is any calculation done wrong, I apologize, it's a large program so overlooking something is very easy.

  • One assumption I did take was to make the Max Camber Pos to be 0.35. If you know what I'm talking about and have a problem with it, it's clearly labeled in the code and easily changed. If you don't or don't care, it's no issue at all. At the sizes I use this for, that parameter is almost insignificant.

Known Issues

  • For some reason, depending on the graphics card being used, the 3D render either appears perfectly, or without any contour lines. I'm still looking into the cause but if any of you experience it, give me a holler.
  • There have been reports of freezing and/or extreme wait times for larger (~ 1 meter) scaled rotors and stators. I'm also looking into that, but at that size blade, you wouldn't want to use a single piece anyways as the rotor anyways...

What's To Come

  • Rotor/stator performance statistics in the program.
  • Generating all the parameters giving desired compressor performance (there's some serious Thermodynamics involved in this so it'll take a while)

Contact

Want to yell at me? Or have a question, shoot me an email.

comppy's People

Contributors

aseylys avatar

Stargazers

 avatar  avatar  avatar Zoe avatar Conlan Kreher avatar  avatar Rob Speed avatar  avatar  avatar wgzhao avatar Lantern Master  avatar mikewolfli avatar  avatar  avatar Ibrahim Mohamed avatar  avatar Ibrahim Mohamed avatar Philippe de Reynal avatar Anton Pushkov avatar Athul Ram avatar Christian Ledermann avatar Caleb Jacobson avatar  avatar

Watchers

James Cloos avatar Anton Pushkov avatar  avatar Manjunath avatar  avatar Caleb Jacobson avatar  avatar  avatar

comppy's Issues

TypeError when clicking any Button

I get the following error when I try and click any button in the GUI

C:\Users\USERNAME\Downloads\CompPy>python MainWindow.py                                                                                                                                                                                               
Traceback (most recent call last):                                                                                                                                                                                                                          
  File "C:\Users\USERNAME\Downloads\CompPy\MainWindow.py", line 971, in PlotProfile                                                                                                                                                                   
    for dict in [self.commonVars[self.clicked], self.rotorVars[self.clicked], self.statorVars[self.clicked]]:                                                                                                                                               
TypeError: list indices must be integers or slices, not NoneType  

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.