• Stars
    star
    907
  • Rank 50,133 (Top 1.0 %)
  • Language
    Jupyter Notebook
  • License
    Other
  • Created over 10 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Classical Aerodynamics of potential flow using Python and Jupyter Notebooks

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 is also supported by an open learning space in the GW SEAS Open edX platform.

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:

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:

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:

pip install jupyter

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

pip install numpy scipy matplotlib

Running the notebook server

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

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.)

More Repositories

1

CFDPython

A sequence of Jupyter notebooks featuring the "12 Steps to Navier-Stokes" http://lorenabarba.com/
Jupyter Notebook
3,380
star
2

numba_tutorial_scipy2016

Numba tutorial materials for Scipy 2016
Jupyter Notebook
140
star
3

PetIBM

PetIBM - toolbox and applications of the immersed-boundary method on distributed-memory architectures
C++
103
star
4

cuIBM

cuIBM: a GPU-based immersed boundary method code.
Cuda
88
star
5

FMM_tutorial

A step-by-step introduction to treecode.
Jupyter Notebook
55
star
6

AmgXWrapper

AmgXWrapper: An interface between PETSc and the NVIDIA AmgX library
C++
42
star
7

essential_skills_RRC

Essential skills for reproducible research computing
Jupyter Notebook
39
star
8

snake-repro

An article reporting the travails of reproducibility in unsteady CFD studies
Jupyter Notebook
26
star
9

jupyter-tutorial

"The world of Jupyter"—a tutorial
Jupyter Notebook
21
star
10

teaching-materials

Jupyter Notebook
21
star
11

petrbf

Automatically exported from code.google.com/p/petrbf
Makefile
21
star
12

pyrbf

Automatically exported from code.google.com/p/pyrbf
C
10
star
13

fmm-bem-relaxed

Source code for the paper on inexact Krylov iterations with FMM BEM
C++
10
star
14

pyfmm

Automatically exported from code.google.com/p/pyfmm
Python
9
star
15

AeroPython-studentprojects2015

Student projects for the Spring 2015 MAE 6226 class at GW
Jupyter Notebook
9
star
16

gemsfmm

Automatically exported from code.google.com/p/gemsfmm
Cuda
9
star
17

MG_tutorial

Multigrid Tutorial (based on W.L. Briggs, V.E. Henson and S.F. McCormick, A Multigrid Tutorial, 2nd. ed., SIAM, Philadelphia, 2000)
Python
9
star
18

cloud-repro

Reproducible workflow on a public cloud for computational fluid dynamics
Jupyter Notebook
9
star
19

jcs_paper_pinn

PINN paper that will be submitted to Journal of Computational Science
TeX
8
star
20

pipe_verification

OpenFoam example of pipe flow and result comparison with analytical solution of Hagen-Poiseuille flow
Jupyter Notebook
8
star
21

inexact-gmres

Paper: inexact GMRES with fast multipole method and low-p relaxation
TeX
8
star
22

JITcode-MechE

Online learning modules to learn computing in a problem-based context within Mechanical Engineering
Jupyter Notebook
7
star
23

geoclaw-landspill

An oil land-spill and overland flow simulator for pipeline rupture events
Fortran
7
star
24

bibtex

TeX
6
star
25

bempp_exafmm_paper

Manuscript repository for our research paper, including reproducibility packages for all results, and latex source files.
Jupyter Notebook
6
star
26

AeroPython-studentprojects2017

Jupyter Notebook
5
star
27

petibm-rollingpitching

3D rolling and pitching flat plate with PetIBM
Python
3
star
28

land-spill

TeX
3
star
29

geoclaw-azure-launcher

Helpers for launching GeoClaw land-spill simulations on Azure.
Python
3
star
30

AeroPython-studentprojects2018

Jupyter Notebook
3
star
31

pygbe_lspr_paper

GLSL
3
star
32

legate-evaluation

Legate evaluation reports
2
star
33

pygbe_lspr

GLSL
2
star
34

DirectForcingMethod

Python
2
star
35

petibm-examples

Collection of the PetIBM examples
Python
2
star
36

chuang-dissertation-repro-pack

Python
2
star
37

snake-lips-2d

2d cfd study (PetIBM on Azure) on the lateral lips of a gliding snake
Python
1
star
38

snake-lips

Numerical study of the effect of the lips on the aerodynamics of the gliding snake
Python
1
star
39

petibm-recipes

Collection of Dockerfiles and Singularity recipes for PetIBM
Dockerfile
1
star
40

JITcode-MechE-Workbook

CSS
1
star
41

geoclaw-landspill-paper

Python
1
star
42

pygbe_lspr_proposal

Porposal on using PyGBe to develop LSPR (Localized Surface Plasmon Resonance) applications.
1
star
43

pygbe_validation_paper

Paper on Validation for PyGBe and replication studies.
Jupyter Notebook
1
star
44

conferences

TeX
1
star
45

scipy-2022-repro-pack

Reproducibility package for SciPy 2022
Python
1
star
46

rescience-rollingpitching

Manuscript for ReScience C about the replication study on the pitching and rolling wing
TeX
1
star
47

PASI2013

Lessons based on a Pan-American Advanced Studies Institute "The science of predicting and understanding tsunamis, storm surges and tidal phenomena"
CSS
1
star
48

Caminos

"Data Science for a Better World"—A tutorial for the GW Caminos al Futuro Summer program
Jupyter Notebook
1
star