# Aerodynamic potential-flow code

In fluid dynamics, aerodynamic potential flow codes or panel codes are used to determine the fluid velocity, and subsequently the pressure distribution, on an object. This may be a simple two-dimensional object, such as a circle or wing, or it may be a three-dimensional vehicle.
A series of singularities as sources, sinks, vortex points and doublets are used to model the panels and wakes. These codes may be valid at subsonic and supersonic speeds.

## History

Early panel codes were developed in the late 1960s to early 1970s. Advanced panel codes, such as Panair (developed by Boeing), were first introduced in the late 1970s, and gained popularity as computing speed increased. Over time, panel codes were replaced with higher order panel methods and subsequently CFD (Computational Fluid Dynamics). However, panel codes are still used for preliminary aerodynamic analysis as the time required for an analysis run is significantly less due to a decreased number of elements.

## Assumptions

These are the various assumptions that go into developing potential flow panel methods:
* Inviscid
* Incompressible $\nabla \cdot V=0$
* Irrotational $\nabla \times V=0$
* Steady ${\frac {\partial }{\partial t}}=0$
However, the incompressible flow assumption may be removed from the potential flow derivation leaving:
* Potential flow (inviscid, irrotational, steady) $\nabla ^{2}\phi =0$

## Derivation of panel method solution to potential flow problem

* From Small Disturbances
    $(1-M_{\infty }^{2})\phi _{xx}+\phi _{yy}+\phi _{zz}=0$ (subsonic)
* From Divergence Theorem
    $\iiint \limits _{V}\left(\nabla \cdot \mathbf {F} \right)dV=\iint \limits _{S}\mathbf {F} \cdot \mathbf {n} \,dS$
* Let Velocity U be a twice continuously differentiable function in a region of volume V in space. This function is the stream function $\phi$.
* Let P be a point in the volume V
* Let S be the surface boundary of the volume V.
* Let Q be a point on the surface S, and $R=|P-Q|$.
As Q goes from inside V to the surface of V,
* Therefore:
    $U_{p}=-{\frac {1}{4\pi }}\iiint \limits _{V}\left({\frac {\nabla ^{2}\cdot \mathbf {U} }{R}}\right)dV_{Q}$
    $-{\frac {1}{4\pi }}\iint \limits _{S}\left({\frac {\mathbf {n} \cdot \nabla \mathbf {U} }{R}}\right)dS_{Q}$
    $+{\frac {1}{4\pi }}\iint \limits _{S}\left(\mathbf {U} \mathbf {n} \cdot \nabla {\frac {1}{R}}\right)dS_{Q}$
For :$\nabla ^{2}\phi =0$, where the surface normal points inwards.
    $\phi _{p}=-{\frac {1}{4\pi }}\iint \limits _{S}\left(\mathbf {n} {\frac {\nabla \phi _{U}-\nabla \phi _{L}}{R}}-\mathbf {n} \left(\phi _{U}-\phi _{L}\right)\nabla {\frac {1}{R}}\right)dS_{Q}$
This equation can be broken down into both a source term and a doublet term.
The Source Strength at an arbitrary point Q is:
    $\sigma =\nabla \mathbf {n} (\nabla \phi _{U}-\nabla \phi _{L})$
The Doublet Strength at an arbitrary point Q is:
    $\mu =\phi _{U}-\phi _{L}$
The simplified potential flow equation is:
    $\phi _{p}=-{\frac {1}{4\pi }}\iint \limits _{S}\left({\frac {\sigma }{R}}-\mu \cdot \mathbf {n} \cdot \nabla {\frac {1}{R}}\right)dS$
With this equation, along with applicable boundary conditions, the potential flow problem may be solved.

## Required boundary conditions

The velocity potential on the internal surface and all points inside V (or on the lower surface S) is 0.
    $\phi _{L}=0$
The Doublet Strength is:
    $\mu =\phi _{U}-\phi _{L}$
    $\mu =\phi _{U}$
The velocity potential on the outer surface is normal to the surface and is equal to the freestream velocity.
    $\phi _{U}=-V_{\infty }\cdot \mathbf {n}$
These basic equations are satisfied when the geometry is a 'watertight' geometry. If it is watertight, it is a well-posed problem. If it is not, it is an ill-posed problem.

## Discretization of potential flow equation

The potential flow equation with well-posed boundary conditions applied is:
    $\mu _{P}={\frac {1}{4\pi }}\iint \limits _{S}\left({\frac {V_{\infty }\cdot \mathbf {n} }{R}}\right)dS_{U}+{\frac {1}{4\pi }}\iint \limits _{S}\left(\mu \cdot \mathbf {n} \cdot \nabla {\frac {1}{R}}\right)dS$
* Note that the $dS_{U}$ integration term is evaluated only on the upper surface, while th $dS$ integral term is evaluated on the upper and lower surfaces.
The continuous surface S may now be discretized into discrete panels. These panels will approximate the shape of the actual surface. This value of the various source and doublet terms may be evaluated at a convenient point (such as the centroid of the panel). Some assumed distribution of the source and doublet strengths (typically constant or linear) are used at points other than the centroid. A single source term s of unknown strength $\lambda$ and a single doublet term m of unknown strength $\lambda$ are defined at a given point.
    $\sigma _{Q}=\sum _{i=1}^{n}\lambda _{i}s_{i}(Q)=0$
    $\mu _{Q}=\sum _{i=1}^{n}\lambda _{i}m_{i}(Q)$
where:
    $s_{i}=ln(r)$
    $m_{i}=$
These terms can be used to create a system of linear equations which can be solved for all the unknown values of $\lambda$.

## Methods for discretizing panels

* constant strength - simple, large number of panels required
* linear varying strength - reasonable answer, little difficulty in creating well-posed problems
* quadratic varying strength - accurate, more difficult to create a well-posed problem
Some techniques are commonly used to model surfaces.
* Body Thickness by line sources
* Body Lift by line doublets
* Wing Thickness by constant source panels
* Wing Lift by constant pressure panels
* Wing-Body Interface by constant pressure panels

## Methods of determining pressure

Once the Velocity at every point is determined, the pressure can be determined by using one of the following formulas. All various Pressure coefficient methods produce results that are similar and are commonly used to identify regions where the results are invalid.
Pressure Coefficient is defined as:
    $C_{p}={\frac {p-p_{\infty }}{q_{\infty }}}={\frac {p-p_{\infty }}{{\frac {1}{2}}\rho _{\infty }V_{\infty }^{2}}}={\frac {p-p_{\infty }}{{\frac {\gamma }{2}}p_{\infty }M_{\infty }^{2}}}$
The Isentropic Pressure Coefficient is:
    $C_{p}={\frac {2}{\gamma M_{\infty }^{2}}}\left(\left(1+{\frac {\gamma -1}{2}}M_{\infty }^{2}\left[{\frac {1-|{\vec {V}}|^{2}}{|{\vec {V_{\infty }}}|^{2}}}\right]\right)^{\frac {\gamma }{\gamma -1}}-1\right)$
The Incompressible Pressure Coefficient is:
    $C_{p}=1-{\frac {|{\vec {V}}|^{2}}{|{\vec {V_{\infty }}}|^{2}}}$
The Second Order Pressure Coefficient is:
    $C_{p}=1-|{\vec {V}}|^{2}+M_{\infty }^{2}u^{2}$
The Slender Body Theory Pressure Coefficient is:
    $C_{p}=-(2u+v^{2}+w^{2})$
The Linear Theory Pressure Coefficient is:
    $C_{p}=-2u$
The Reduced Second Order Pressure Coefficient is:
    $C_{p}=1-|{\vec {V}}|^{2}$

## What panel methods cannot do

* Panel methods are inviscid solutions. You will not capture viscous effects except via user "modeling" by changing the geometry.
* Solutions are invalid as soon as the flow changes locally from subsonic to supersonic (i.e. the critical Mach number has been exceeded) or vice versa.

## Potential flow software

| Name | License | Lan | Operating system | Operating system | Operating system | Geometry import | Meshing | Meshing | Meshing | Body Representation | Wake model | Developer |
| Name | License | Lan | Linux | OS X | Microsoft Windows | Geometry import | Structured | Unstructured | Hybrid | Body Representation | Wake model | Developer |
| Aeolus ASP | Proprietary | Java / Fortran | Yes | | Yes | | Yes | | | Quadrilaterals | | Aeolus Aero Sketch Pad |
| CMARC | Proprietary | C | Yes | | Yes | | | | | | | Homepage, AeroLogic, based on PMARC-12 |
| DesignFOIL | Proprietary | | Wine | | Yes | | | | | | | www.dreesecode.com, DreeseCode Software LLC |
| FlightStream | Proprietary | Fortran / C++ | | | Yes | CAD, Discrete | | Yes | Yes | Solids | | Research in Flight Company |
| HESS | Proprietary | | | | | | | | | | | Douglas Aircraft Company |
| LinAir | Proprietary | | Yes | | | | | | | | | Desktop Aeronautics |
| MACAERO | Proprietary | | | | | | | | | | | McDonnell Aircraft |
| NEWPAN | Proprietary | C++ | Yes | | | | Yes | Yes | | | | Flow Solutions Ltd. |
| Tucan | GPLv3 | VB.NET/C#.NET | Yes (Console) | | Yes | STL | Yes | | | Quadrilaterals & triangles | Free | G. Hazebrouck & contributors |
| QBlade | GPLv2 | C/C++ | Yes | | | | | | | | | TU Berlin |
| Quadpan | Proprietary | | | | | | | | | | | Lockheed |
| PanAir a502 | Public domain software | Fortran | Yes | Yes | Yes | | | | | | | Homepage, Boeing? |
| PANUKL | freeware | C++/Fortran | Yes | | Yes | NX - partially | Yes | | | Quadrilaterals | | Warsaw University of Technology, PANUKL exports data to SDSA and to Calculix |
| PMARC | Free On Request | Fortran 77 | UNIX | Yes | Yes | | | | | | | NASA, descendant of VSAERO |
| VSAero | Proprietary | | UNIX | | | | | | | | | Homepage |
| Vortexje | GPLv2 | C++ | Yes | | | | | | | | | Baayen & Heinz GmbH |
| XFOIL | GPLv2 | Fortran | Yes | Yes | Yes | | | | | | | web.mit.edu/drela/Public/web/xfoil/ |
| XFLR5 | GPLv2 | C/C++ | Yes | | | | | | | | | www.xflr5.com |
| VSPAERO Packaged with OpenVSP | NOSA | C++ | Yes | Yes | Yes | | | Yes | | Polygons, typically quad & tri dominated | Free & rigid | openvsp.org |
| MachLine | MIT License | Fortran | Yes | untested | untested | STL, VTK, TRI | | Yes | | Solid bodies using surface tris | Rigid | Utah State University AeroLab aerolab.usu.edu github.com/usuaero/MachLine |