{"id":23382133,"url":"https://github.com/chiefenne/pyaero","last_synced_at":"2025-04-04T07:04:59.658Z","repository":{"id":39897901,"uuid":"145753681","full_name":"chiefenne/PyAero","owner":"chiefenne","description":"PyAero is an open-source airfoil contour analysis and CFD meshing tool.","archived":false,"fork":false,"pushed_at":"2024-12-31T09:52:04.000Z","size":137960,"stargazers_count":189,"open_issues_count":0,"forks_count":31,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-28T06:03:55.030Z","etag":null,"topics":["airfoil","cae","cfd","mesh-generation","pyside6","python","qt"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chiefenne.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-08-22T19:30:13.000Z","updated_at":"2025-03-24T21:05:16.000Z","dependencies_parsed_at":"2025-01-04T23:12:34.360Z","dependency_job_id":"b1662b6b-2b0a-4fb5-8354-fa1dd80deb4b","html_url":"https://github.com/chiefenne/PyAero","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chiefenne%2FPyAero","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chiefenne%2FPyAero/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chiefenne%2FPyAero/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chiefenne%2FPyAero/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chiefenne","download_url":"https://codeload.github.com/chiefenne/PyAero/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247135141,"owners_count":20889420,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["airfoil","cae","cfd","mesh-generation","pyside6","python","qt"],"created_at":"2024-12-21T21:17:39.523Z","updated_at":"2025-04-04T07:04:59.638Z","avatar_url":"https://github.com/chiefenne.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# PyAero\n![](docs/images/SD7003_velocity_AOA6.png)\nPyAero generated mesh (Solver: [SU2](https://su2code.github.io), Visualization: [ParaView](https://www.paraview.org/))\n\u003cbr\u003e\n\n[![readthedocs](https://img.shields.io/badge/docs-latest-brightgreen.svg?style=flat)](https://pyaero.readthedocs.io/en/latest/?badge=latest)\n[![GitHub](https://img.shields.io/github/license/mashape/apistatus.svg)](https://en.wikipedia.org/wiki/MIT_License)\n\n\nPyAero is an open-source airfoil contour analysis and CFD meshing tool written in Python. The graphical user interface is based on [Qt for Python](https://www.qt.io/qt-for-python) (Pyside6).\n\n## Features\n\n - Load and display airfoil contour files\n - Airfoil splining and refining\n   - Get a smooth contour and sufficient contour points\n   - Refine leading edge and trailing edge\n   - Prepare contour for meshing\n   - Automatic calculation of leading edge radius\n   - Point distribution on spline used as mesh distribution around airfoil\n - Automatic generation of block-strcuctured mesh\n   - Single element C-type mesh\n   - **Strictly orthogonal** mesh in the vicinity of the airfoil\n   - Mesh resolution control for airfoil, leading edge, trailing edge and windtunnel\n - Sharp or blunt trailing edges\n - Mesh smoothing (to be improved)\n - Mesh export\n   - [AVL FIRE](https://www.avl.com/fire) (.flma)\n   - Some other file formats are exported as well (only listed formats)\n     - [SU2](https://su2code.github.io) (.su2)\n       - Including boundary markers\n     - [GMSH](http://gmsh.info) (.msh)\n     - [VTK](https://vtk.org) (.vtk)\n\n   - Automatic definition of boundary elements (edges, faces)\n     - Airfoil, inlet, outlet, symmetry\n - Run in batch mode (i.e. run PyAero from the command line)\n   - Mesh multiple airfoils and export the meshes in multiple formats in one run without user interaction\n   - Using the ``-no-gui`` option and a [control file](data/Batch/batch_control.json) in json format\n   - Example command: ``python src/PyAero.py -no-gui data/Batch/batch_control.json``\n - Simple aerodynamic analysis using [AeroPython](http://nbviewer.ipython.org/github/barbagroup/AeroPython/blob/master/lessons/11_Lesson11_vortexSourcePanelMethod.ipynb)\n - Airfoil contour analysis (gradient, curvature and curvature circle)\n - NOT YET IMPLEMENTED:\n   - Decent smoothing algorithm for the mesh regions outside the orthogonal blocks\n   - Advanced aerodynamic analysis (i.e. linking to open source CFD software, e.g. SU2)\n\n## Header image\n - Airfoil SD7003\n - Meshing with PyAero\n - Calculation with the CFD code [SU2](https://su2code.github.io)\n - Post-processing done in [ParaView](https://www.paraview.org/)\n\n## Sample screenshots\n\n![](docs/images/gui_airfoil1_new.png)\n**PyAero GUI at a glance**\n\u003cbr\u003e\u003cbr\u003e\n\n![](docs/images/mesh_RAE2822_MAC.png)\n**Example mesh around RAE2822 airfoil**\n\u003cbr\u003e\u003cbr\u003e\n\n![](docs/images/LE_mesh_RAE2822_MAC.png)\n**Example mesh around RAE2822 airfoil - Leading Edge**\n\u003cbr\u003e\u003cbr\u003e\n\n![](docs/images/TE_mesh_RAE2822_MAC.png)\n**Example mesh around RAE2822 airfoil with a blunt Trailing Edge (with finite thickness)**\n\u003cbr\u003e\u003cbr\u003e\n\n![](docs/images/TE_mesh_sharp_MAC.png)\n**Example mesh with a sharp Trailing Edge**\n\u003cbr\u003e\u003cbr\u003e\n\n![](docs/images/MAKAROV_KPS_mesh_MAC.png)\n**Example mesh around MAKAROV KPS airfoil as used in the CFD code AVL-FIRE**\n\u003cbr\u003e\u003cbr\u003e\n\n![](docs/images/MAKAROV_KPS_Veloyity.gif)\n**Velocity field (RE=50000) around MAKAROV KPS airfoil using the CFD code AVL-FIRE**\n\u003cbr\u003e\u003cbr\u003e\n\n![](docs/images/MAKAROV_KPS_TKE.gif)\n**Turbulence kinetic energy field (RE=50000) around MAKAROV KPS airfoil using the CFD code AVL-FIRE**\n\u003cbr\u003e\u003cbr\u003e\n\n![](docs/movies/RG14_3D_laminar_Iso-Q_pressure.gif)\n**Unsteady 3D calculation of the RG14 airfoil using the CFD code AVL-FIRE**\n\u003cbr\u003e\n**RE=330000, AOA=2°, 20 million cells.**\n\u003cbr\u003e\n**Laminar calculation: CD=0.0079, CL=0.371**\n\u003cbr\u003e\n**LES calculation (subgrid scale model: Kobayashi CSM): CD=0.0078, CL=0.362**\n\u003cbr\u003e\u003cbr\u003e\n\n![](docs/images/SD7003_CP_RE200000_AOA3.png)\n**Steady 2D calculation of the SD7003 airfoil using the CFD code SU2 (RE=200000, AOA=3), post-processing with ParaView**\n\u003cbr\u003e\u003cbr\u003e\n\n## Documentation\n\nThe PyAero documentation can be found at the following link:\n\n**[http://pyaero.readthedocs.io](http://pyaero.readthedocs.io)**\n\nThe documentation is automatically generated using the markdown files in the [docs](https://github.com/chiefenne/PyAero/tree/master/docs) folder via [Sphinx](http://www.sphinx-doc.org/en/stable/index.html).\n\n## Dependencies\n\n - [Python 3.x](https://www.python.org/)\n - [Qt for Python (PySide6)](https://www.qt.io/qt-for-python)\n - [Numpy](http://www.numpy.org/)\n - [Scipy](https://www.scipy.org/)\n - [meshio](https://github.com/nschloe/meshio)\n\nAt the moment no binary is available for Windows.\n\n## Download\nThe $ symbol at the beginning the following command examples represents the prompt at command shell. It is not part of the command.\n\n### Option 1: Download source version using Git:\n\n```bash\n$ cd anywhere_on_your_computer\n$ git clone https://github.com/chiefenne/PyAero.git\n```\nor if you want a specific branch (e.g. develop):\n\n```bash\n$ git clone https://github.com/chiefenne/PyAero.git -b develop\n```\n\n\n### Option 2: Download source version as a ZIP file:\n\nFrom the [PyAero GitHub repository](https://github.com/chiefenne/PyAero). There is on the upper right side a green pull down menu ***Clone or download***. Click on it and then click ***Download ZIP***. You get a file ***PyAero-master.zip*** which you store anywhere on your computer.\n\n```bash\n$ cd anywhere_on_your_computer\n$ unzip PyAero-master.zip\n```\n\n## Installation\n\nAfter cloning from Git, or downloading and unzipping, set the environment variable for the PyAero installation path.\n\n### Linux\n\nIf your shell is **bash**:\n```bash\n$ export PYAEROPATH=path_to_your_installation\n```\n\nAnd if you want to set it permanently across sessions (one of the following):\n```bash\n$ echo 'export PYAEROPATH=path_to_your_installation' \u003e\u003e ~/.bashrc\n$ echo 'export PYAEROPATH=path_to_your_installation' \u003e\u003e ~/.bash_profile\n```\n\nFor **csh** or **tcsh** use:\n```bash\n$ setenv PYAEROPATH path_to_your_installation\n```\n\nAnd if you want to set it permanently across sessions:\n```bash\n$ echo 'setenv PYAEROPATH path_to_your_installation' \u003e\u003e ~/.cshrc\n```\n\nRun PyAero using:\n\n```bash\n$ python $PYAEROPATH/src/PyAero.py\n```\n\nTo simplify the command, set an *alias* (the upper beeing for bash and the lower for csh/tcsh).\n\n```bash\n$ alias pyaero=\"python $PYAEROPATH/src/PyAero.py\"\n$ alias pyaero \"python $PYAEROPATH/src/PyAero.py\"\n```\n\nTo keep this across sessions, again append the *alias* command to the respective *.bashrc*, *.cshrc*, etc.\n\nThen start PyAero using:\n\n```bash\n$ pyaero\n```\n\n## Qt for Python version\n\nPyAero version based on the [Qt for Python](https://www.qt.io/qt-for-python) API (alias PySide2 for QT5 or PySide6 for QT6).\n\nPyAero started based on the PyQt4 framework which for me was the API to go at the time when I started development.\n\nAfter a small creative break I decided to upgrade to PyQt5 and continue development. I soon realized that the PyQt5 documentation lacks information, i.e. there were only links to the Qt C++ documentation and no Python related docs, I had the feeling that the PyQt5 development probably stagnates.\n\nShort online research revealed to me that meanwhile Qt themselves are developing now **Qt for Python** which is based on the legacy Pyside API. This made me think that it is possibly best to go with Qt for Python as it is tightly coupled to Qt.\n\n## License\n\nDistributed under the MIT license. See [LICENSE](https://raw.githubusercontent.com/chiefenne/PyAero/master/LICENSE) for more information.\n\n2024 Andreas Ennemoser – andreas.ennemoser@aon.at\n\n## Stargazers over time\n\n[![Stargazers over time](https://starchart.cc/chiefenne/PyAero.svg?variant=adaptive)](https://starchart.cc/chiefenne/PyAero)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchiefenne%2Fpyaero","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchiefenne%2Fpyaero","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchiefenne%2Fpyaero/lists"}