https://github.com/barbagroup/aeropython

Classical Aerodynamics of potential flow using Python and Jupyter Notebooks

https://github.com/barbagroup/aeropython

Science Score: 49.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 7 DOI reference(s) in README
  • Academic publication links
  • Committers with academic emails
    4 of 12 committers (33.3%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (7.7%) to scientific vocabulary

Keywords

aerodynamics engineering fluid-mechanics jupyter-notebook python

Keywords from Contributors

computational-fluid-dynamics immersed-boundary-method nvidia-amgx petsc interpreter interactive mpi amgx nvidia notebook
Last synced: 6 months ago · JSON representation

Repository

Classical Aerodynamics of potential flow using Python and Jupyter Notebooks

Basic Info
  • Host: GitHub
  • Owner: barbagroup
  • License: other
  • Language: Jupyter Notebook
  • Default Branch: master
  • Homepage: http://lorenabarba.com/
  • Size: 30.9 MB
Statistics
  • Stars: 970
  • Watchers: 96
  • Forks: 535
  • Open Issues: 1
  • Releases: 1
Topics
aerodynamics engineering fluid-mechanics jupyter-notebook python
Created about 12 years ago · Last pushed 9 months ago
Metadata Files
Readme License

README.md

Classical Aerodynamics with Python

Cite as: Barba, Lorena A., and Mesnard, Olivier (2019). Aero Python: classical aerodynamics of potential flow using Python. Journal of Open Source Education, 2(15), 45, https://doi.org/10.21105/jose.00045

Version License License status

The AeroPython series of lessons is the core of a university course (Aerodynamics-Hydrodynamics, MAE-6226) by Prof. Lorena A. Barba at the George Washington University. The first version ran in Spring 2014 and these Jupyter Notebooks were prepared for that class, with assistance from Barba-group PhD student Olivier Mesnard. In Spring 2015, we revised and extended the collection, adding student assignments to strengthen the learning experience. The course was also supported by an open learning space in the GW SEAS Open edX platform (taken offline in 2025).

The materials are distributed publicly and openly under a Creative Commons Attribution license, CC-BY 4.0

Cite as:

Barba, Lorena A., Mesnard, Olivier (2019). Aero Python: classical aerodynamics of potential flow using Python. Journal of Open Source Education, 2(15), 45, https://doi.org/10.21105/jose.00045

Archive

— Barba, Lorena A.; Mesnard, Olivier (2014): AeroPython. figshare. Code. DOI: 10.6084/m9.figshare.1004727.v5

List of notebooks

0. Getting Started

Module 1. Building blocks of potential flow

  1. Source & Sink
  2. Source & Sink in a Freestream
  3. Doublet
  4. Assignment: Source distribution on an airfoil

Module 2. Potential vortices and lift

  1. Vortex
  2. Infinite row of vortices
  3. Vortex Lift on a cylinder
  4. Assignment: Joukowski transformation

Module 3. Source-panel method for non-lifting bodies

  1. Method of Images
  2. Source Sheet
  3. Flow over a cylinder with source panels
  4. Source panel method

Module 4. Vortex-source panel method for lifting bodies

  1. Vortex-source panel method
  2. Exercise: Derivation of the vortex-source panel method
  3. Assignment: 2D multi-component airfoil

Statement of need

Classical aerodynamics based on potential theory can be an arid subject when presented in the traditional "pen-and-paper" approach. It is a fact that the mathematical framework of potential flow was the only tractable way to apply theoretical calculations in aeronautics through all the early years of aviation, including the development of commercial aircraft into the 1980s and later. Yet, the only way to exercise the power of potential-flow aerodynamics is through numerical computation. Without computing, the student can explore only the simplest fundamental solutions of the potential equation: point sinks and sources, point vortex, doublet, uniform flow.

The essential tool for applying this theoretical framework to aerodynamics is the panel method, which obtains the strength of a distribution of singularities on a body that makes the body a closed streamline. The addition of vortex singularities to satisfy a Kutta condition allows treating lifting bodies (like airfoils). The AeroPython series begins with simple point-singularity solutions of the potential equation, and applies the principle of superposition to show how to obtain streamline patterns corresponding to flow around objects. Around the half-way point, the module presents the learner with the fundamental relationship between circulation (via a point vortex) and the production of a lift force. Using a distribution of many point singularities on an airfoil, finally, the module shows how we can obtain pressure distributions, and the lift around an airfoil. With this foundation, the student is ready to apply the panel method in authentic engineering situations.

Dependencies

To use these lessons, you need Python 3, and the standard stack of scientific Python: NumPy, Matplotlib, SciPy. And of course, you need Jupyter—an interactive computational environment that runs on a web browser.

This mini-course is built as a set of Jupyter notebooks containing the written materials and worked-out solutions on Python code. To work with the material, we recommend that you start each lesson with a fresh new notebook, and follow along, typing each line of code (don't copy-and-paste!), and exploring by changing parameters and seeing what happens.

Installing via Anaconda

We highly recommend that you install the Anaconda Python Distribution. It will make your life so much easier. You can download and install Anaconda on Windows, OSX, and Linux.

After installing, to ensure that your packages are up to date, run the following commands in a terminal:

shell conda update conda conda update jupyter numpy scipy matplotlib

If you prefer Miniconda (a mini version of Anaconda that saves you disk space), install all the necessary libraries to follow this course by running the following commands in a terminal:

shell conda update conda conda install jupyter numpy scipy matplotlib

Without Anaconda

If you already have Python installed on your machine, you can install Jupyter using pip:

shell pip install jupyter

Please also make sure that you have the necessary libraries installed by running

shell pip install numpy scipy matplotlib

Running the notebook server

Once Jupyter is installed, open up a terminal and then run

shell jupyter notebook

This will start up a Jupyter session in your browser!

How to contribute to AeroPython

We accept contributions via pull request. You can also open an issue if you find a bug, or have a suggestion.

Copyright and License

(c) 2017 Lorena A. Barba, Olivier Mesnard. All content is under Creative Commons Attribution CC-BY 4.0, and all code is under BSD-3 clause (previously under MIT, and changed on November 12, 2018).

We are happy if you re-use the content in any way!

Note

Another Python course exists under the AeroPython title with different content, and in the Spanish language. (See tweet from 2014.)

Owner

  • Name: Barba group
  • Login: barbagroup
  • Kind: organization
  • Location: Washington, DC

GitHub Events

Total
  • Issues event: 1
  • Watch event: 47
  • Push event: 1
  • Gollum event: 10
  • Fork event: 9
Last Year
  • Issues event: 1
  • Watch event: 47
  • Push event: 1
  • Gollum event: 10
  • Fork event: 9

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 396
  • Total Committers: 12
  • Avg Commits per committer: 33.0
  • Development Distribution Score (DDS): 0.591
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
mesnardo m****o@g****u 162
Lorena A. Barba l****a@g****u 155
Gil Forsyth g****h@g****m 32
Pi-Yueh p****g@g****u 22
Gil Forsyth g****h@g****u 11
Natalia Clementi n****i@g****m 5
Adam Wickenheiser a****k@g****m 3
Kyle Niemeyer k****r@g****m 2
tingyu66 v****g@g****m 1
mglasstone m****w@g****m 1
Santiago Castro s****0@h****m 1
Aron Ahmadia a****n@a****t 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 9 months ago

All Time
  • Total issues: 7
  • Total pull requests: 45
  • Average time to close issues: 7 months
  • Average time to close pull requests: 8 days
  • Total issue authors: 4
  • Total pull request authors: 19
  • Average comments per issue: 1.29
  • Average comments per pull request: 1.07
  • Merged pull requests: 31
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 1
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 1
  • Pull request authors: 0
  • Average comments per issue: 0.0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • mesnardo (3)
  • labarba (2)
  • kaanatak (1)
  • ketch (1)
Pull Request Authors
  • mesnardo (6)
  • gforsyth (6)
  • labarba (4)
  • ncclementi (3)
  • piyueh (3)
  • cparvini (2)
  • kyleniemeyer (2)
  • amiya89 (2)
  • nbatista0630 (2)
  • mglasstone (2)
  • tingyu66 (1)
  • giantplane (1)
  • ahmadia (1)
  • AdaWick (1)
  • awaizmukadam (1)
Top Labels
Issue Labels
enhancement (3)
Pull Request Labels