Richard L. Fearn

Potential flow over an airfoil plays an important historical role in the theory of flight. The governing equation for potential flow is Laplace’s equation, a widely studied linear partial differential equation. One of Green’s identities can be used to write a solution to Laplace’s equation as a boundary integral. Numerical models based on this approach are known as panel methods in the aerodynamics community. This article introduces the availability of a collection of computational tools for constructing numerical models for potential flow over an airfoil based on panel methods. Use of the software is illustrated by implementing a specific model using vortex panels of linearly varying strength to compute the flow over a member of the NACA four-digit family of airfoils.


Fluid dynamics is a branch of mechanics concerned with the motion of a fluid continuum under the action of applied forces. The motion and general behavior of a fluid is governed by the fundamental laws of classical mechanics and thermodynamics and plays an important role in such diverse fields as biology, meteorology, chemical engineering, and aerospace engineering. An introductory text on fluid mechanics, such as [1], surveys the basic concepts of fluid dynamics and the various mathematical models used to describe fluid flow under different restrictive assumptions. Advances in computational power and in modeling algorithms during the past few decades have enabled industry to use increasingly realistic models to solve problems of practical geometric complexity. Alternatively, these advances make it feasible to adapt some of the older, simpler models to inexpensive desktop computers.

Aerodynamics is a branch of fluid dynamics concerned primarily with the design of vehicles moving through air. In the not-so-distant past, a collection of relatively simple numerical models, known as panel methods, was the primary computational tool for estimating some of the aerodynamic characteristics of airplanes and their components for cruise conditions. For example, Hess [2] commented in 1990 that at Douglas Aircraft Company, a major design calculation was performed using panel methods approximately 10 times per day.

Panel methods are numerical models based on simplifying assumptions about the physics and properties of the flow of air over an aircraft. The viscosity of air in the flow field is neglected, and the net effect of viscosity on a wing is summarized by requiring that the flow leaves the sharp trailing edge of the wing smoothly. The compressibility of air is neglected, and the curl of the velocity field is assumed to be zero (no vorticity in the flow field). Under these assumptions, the vector velocity describing the flow field can be represented as the gradient of a scalar velocity potential, , and the resulting flow is referred to as potential flow. A statement of conservation of mass in the flow field leads to Laplace’s equation as the governing equation for the velocity potential, . Laplace’s equation is a widely studied linear partial differential equation and is discussed in detail in classical books on applied mathematics such as [3]. It also plays an important role in the theoretical development of several fields, including electrostatics and elastic membranes as well as fluid dynamics.

To solve the problem of potential flow over a solid object, Laplace’s equation must be solved subject to the boundary condition that there be no flow across the surface of the object. This is usually referred to as the tangent-flow boundary condition. Additionally, the flow far from the object is required to be uniform. The results of solving Laplace’s equation subject to tangent-flow boundary conditions provide an approximation of cruise conditions for an airplane.

Using a vector identity, the solution to this linear partial differential equation can be written in terms of an integral over the surface of the object. This boundary integral contains expressions for surface distributions of basic singular solutions to Laplace’s equation. A linear combination of relatively simple singular solutions is also a solution to the differential equation. This superposition of simple solutions provides the complexity needed for satisfying boundary conditions for flow over objects of complex geometry. Panel methods are based on this approach and are described in detail in [4]. Commonly used singular solutions for panel methods are referred to as source, vortex, and doublet distributions. Analogies can be made to other fields of study. The velocity field induced by a point source is analogous to the electrostatic field induced by a point charge. A doublet would be positive and negative charges of equal strength in close proximity. The velocity induced by a line vortex is analogous to the magnetic field induced by a current-carrying wire.

The basic solution procedure for panel methods consists of discretizing the surface of the object with flat panels and selecting singularities to be distributed over the panels in a specified manner, but with unknown singularity-strength parameters. Since each singularity is a solution to Laplace’s equation, a linear combination of the singular solutions is also a solution. The tangent-flow boundary condition is required to be satisfied at a discrete number of points called collocation points. This process leads to a system of linear algebraic equations to be solved for the unknown singularity-strength parameters. Details of the procedure vary depending on the singularities used and other details of problem formulation, but the end result is always a system of linear algebraic equations to be solved for the unknown singularity-strength parameters.

Panel methods are applicable to two- and three-dimensional flows. For flow over a two-dimensional object, the flat panels become straight lines, but can be thought of as infinitely long rectangular panels in the three-dimensional interpretation. For two-dimensional potential flow, the powerful technique of conformal mapping can also be used as a solution procedure. Conformal mapping provides exact solutions for certain airfoil shapes and is useful for validating numerical models.

This article introduces a collection of three packages providing computational tools for the formulation and solution of steady potential flow over an airfoil. In addition to the packages and associated online help for functions defined, examples of model implementation and use are included. Each package is discussed briefly. This is followed by an example of step-by-step implementation of a particular model for a small discretization number with intermediate results displayed. Finally, the steps are assembled into a module representing a particular model, and the lift and pressure distribution on an airfoil are computed. The current version of the software collection is available form the Wolfram Library Archive as Aerodynamics 1.2.

Load Required Packages

Set your working directory and then load the application package needed for this notebook.

Test that packages are loaded.

Nomenclature and Basic Equations for Airfoil Aerodynamics

Much of the nomenclature associated with the theory of lift on an airfoil has made its way into everyday vocabulary, but some terms may be unfamiliar or have more specific meanings than occur in common usage. Also, there are some basic equations used in the example problem that should be mentioned. An introductory book on aerodynamics such as [5] or [6] presents the basic nomenclature and concepts associated with the theory of flight.

The term airfoil is used to denote the cross section, or profile, of a three-dimensional wing (see inset in Figure 2). The chord line of an airfoil is the straight line from the leading edge of the airfoil to the sharp trailing edge; the length of this line is referred to as the chord of the airfoil and is denoted by . The camber line of an airfoil is the locus of points midway between the upper and lower surfaces of the airfoil, measured perpendicular to the camber line. When describing an airfoil in dimensionless variables and in a local coordinate system, the chord of the airfoil is the segment of the axis from 0 to 1. The angle of attack is the angle between the chord line of the airfoil and the uniform onset velocity, and is denoted by .

In incompressible potential flow, the pressure is related to the fluid speed by Bernoulli’s equation, , where , , and are the density, speed, and pressure at a point in the flow field, and the subscript refers to conditions far from the airfoil. The dimensionless measure of pressure is the pressure coefficient, defined by . Combining Bernoulli’s equation and the definition for the pressure coefficient yields a simple equation for the pressure coefficient in terms of the local speed of the fluid, .

Using the aerodynamic sign convention, the circulation of the velocity field around a closed contour is defined by the line integral . The lift force per unit length on an airfoil can be related to the circulation around the airfoil by the Kutta-Joukowski lift theorem . The aerodynamic sign convention used in the definition of circulation is chosen so that positive circulation leads to positive lift. The dimensionless measure for lift on an airfoil is the two-dimensional lift coefficient, . If a dimensionless circulation is defined by , then the lift coefficient is simply twice the dimensionless circulation. The Kutta condition summarizes the primary viscous effect of the flow on the airfoil and establishes the circulation around the airfoil by the simple statement that the flow leaves the sharp trailing edge of the airfoil smoothly.

Input Parameters

The example airfoil for illustrating the implementation of a panel method in this article is a member of the NACA four-digit family of airfoils. Specify the identification number for the airfoil and the angle of attack in degrees.

The first of the four digits in the identification number gives the maximum camber in percent chord, the second digit gives the location of maximum camber in tenths of chord, and the last two digits give the thickness in percent chord.

The discretization process is determined by a discretization number and one of three layout options (ConstantSpacing, CosineSpacing, or HalfCosineSpacing) providing two alternatives to constant spacing of discretization points. Specify small (to illustrate a step-by-step implementation of the example) and large (for computing results) discretization numbers, and a layout option.

Finally, specify a small number used to ensure that collocation points are computed to be outside of the discretization panels representing the airfoil.

If you have installed the software discussed in this article, you can change the input parameters and rerun the notebook for additional results.


Data Type for Handling Collections of Vectors

The package CartesianVectors defines a data type to simplify the manipulation of large collections of n-dimensional vectors while maintaining packed arrays for efficient computation using machine numbers. The data type CartesianVectors is represented in the format , where vx, vy, and vz are simple or nested lists of the components of the collection of vectors. The data type is designed to enable the manipulation of collections of vectors with notation commonly used for a single vector or for lists. Using a data type also simplifies pattern matching for valid input arguments for exported functions developed in other packages. The properties of the data type are defined by overloading existing Mathematica functions whenever possible. The package contains some exported functions including several functions specific to two-dimensional vectors.

As an example of using the data type, specify two collections of two-dimensional vectors, and compute the collection of displacement vectors from each vector in one group to every vector in the other group. This is a computation common to many n-body problems. The constructor for the data type is MakeCartesianVectors.

Compute the displacement vectors from each point in rB to all points in rA.

Count the number of vectors in the collection of displacement vectors.

Airfoil Geometry

The package AirfoilGeometry provides functions to compute the geometry and discretization of airfoils in support of the construction of numerical models for potential flow over an airfoil. A list of values used for discretization can be specified directly by the user or generated by the function NDiscretizeUnitSegment, which accepts a discretization number, , as its input argument and divides the unit segment into pieces. A layout option for this function allows constant spacing (default), cosine spacing, or half-cosine spacing. Cosine spacing provides finer discretization near the leading and trailing edges of the airfoil compared to constant spacing, and half-cosine spacing provides even finer discretization near the leading edge, but coarser discretization near the trailing edge compared to constant spacing. The function NACA4DigitAirfoil computes a list of thickness and camber properties at the values, and the function AirfoilSurfacePoints computes the collection of vectors locating points on the surface of the airfoil from the list of thickness and camber properties. These points on the surface of the airfoil serve as panel end points for the discretized airfoil. Note that the result is expressed as the data type CartesianVectors as indicated by the arrow separating the lists of components.

Compute a list of panel lengths. Note the use of Mathematica functions that have been overloaded for use with the data type CartesianVectors.

Count the number of panels describing the discretized airfoil.

The functions PanelPoints and PanelNormals are used to locate collocation points at midpanel and outward facing unit normals to the panels. Note that collocation points are displaced a small distance, proportional to the panel length, in the direction of the outward unit normal to ensure that these points are outside the discretized airfoil. This is done in preparation for applying the tangent-flow boundary condition at collocation points.

Figure 1 shows the geometry of the discretized airfoil and the numbering convention for panels. The panels are straight-line segments joining points on the airfoil contour, and panel normals are shown at panel midpoints with the panel number near the head of the arrow. For an airfoil with thickness, the number of panels describing the airfoil is twice the discretization number. This numbering of panels is referred to as the clockwise convention. For a reference airfoil with no thickness (camber line), the number of panels is equal to the discretization number, and the convention is to number panels from leading edge to trailing edge. The airfoil shape is plotted in a local coordinate system with the origin at the leading edge of the airfoil and the axis coincident with the chord line. Lengths are nondimensionalized using the chord of the airfoil, .

Figure 1. Panels and panel normals for NACA 4412 airfoil discretized to six panels.

The online help for this package also includes examples of importing data files for individual airfoils. These are defined by specifying points on the airfoil contour and rearranging the imported data for use with this software. The UIUC Airfoil Data Site, maintained by Michael Selig of the University of Illinois at Urbana-Champaign, contains specifications for over 1500 airfoils [7].

Two-Dimensional Influence Coefficients

When computing the velocity field induced at a point due to a singularity located elsewhere, the velocity can be written as the product of a geometric term (called an influence coefficient) and a measure of the strength of the singularity. For example, consider the velocity induced at an arbitrary field point due to a point source located at the origin of the coordinate system.

Compute the velocity, velocity-potential, and stream-function influence coefficients at the field point due to the singularity using the package functions ICSourcePoint, ICPhiSourcePoint, and ICPsiSourcePoint.

The velocity, velocity-potential, or stream-function at would be obtained by multiplying the appropriate influence coefficient by the strength of the source. Influence coefficients can also be thought of as the velocity, velocity-potential, or stream-function induced by a singularity of unit strength.

The package InfluenceCoefficients contains over thirty functions for velocity, velocity-potential, and stream-function influence coefficients for source, vortex, and doublet singularities commonly used in two-dimensional panel methods. They serve as a tool box for constructing numerical models for two-dimensional potential flow.

Potential-Flow Model Using Vortex Panels of Linearly Varying Strength

Step-by-Step Model Formulation Using Coarse Discretization

The singularity element chosen for this model is the vortex panel of linearly varying strength, which provides a circulation density along the panel of the form, in local coordinates, where is the distance from the “beginning” of the panel. Each singularity panel involves two unknown constants, and .

The boundary condition that the velocity be everywhere tangent to the airfoil contour is discretized to require that the velocity component normal to each panel at the collocation point be zero. Since each vortex panel introduces two unknown strength parameters, application of the tangent-flow boundary condition provides equations and unknowns, where is the number of panels describing the geometry of the discretized airfoil. Continuity of circulation density from one panel to the next and the Kutta condition provide additional equations to complete a system of linear algebraic equations and unknowns. The system of equations can be put into standard form. The terms involving unknowns are collected on the left-hand side of the system of equations and the known quantities are collected on the right-hand side. The result can be written in block-matrix form as

The symbols and represent lists of the unknown constant and linear strength parameters for the vortex panels: represents the projection of the panel influence coefficients associated with on the unit normal vectors, represents the projection of the panel influence coefficients associated with on the unit normal vectors, Math and represent terms in the equations imposing continuity of circulation density between panels and the Kutta condition, and is the projection of the free-stream velocity on unit normals at collocation points.

Use the block-matrix form to write the system of equations as and . Solve the latter system for the list of slope strengths, . Substitute this into the former system of equations to eliminate the slope-strength parameters. The resulting system of equations can be written as . This system of equations can be solved for the list of strength parameters , and then the transformation is used to compute the list of slope parameters . All variables in the following formulation and solution are dimensionless.

Compute the matrix of velocity influence coefficients and project them on the panel normals.

Write the equations expressing the continuity of circulation density between panels and the Kutta condition. The equation expressing the Kutta condition is written to accommodate the different numbering conventions for airfoils with thickness and reference airfoils without thickness.

Form the coefficient matrix for the system of linear algebraic equations to be solved for unknown strength parameters.

Display the matrix in reduced precision to illustrate the coefficient matrix for the full system of equations.

The upper half of the matrix represents normal-component influence coefficients. The first row of the lower half of the matrix represents terms in an equation implementing the Kutta condition and sums the circulation density at the beginning of the first panel and the circulation density at the end of the last panel. Setting this sum to zero imposes zero circulation at the trailing edge of the airfoil. The remaining rows in the lower half of the matrix are coefficients of terms in the equations requiring that the circulation density at the end of one panel be equal to the circulation density at the beginning of the next panel, , where denotes the length of the panel.

Define the transformation matrix to compute the list of slope parameters () from the list of constant parameters ().

Compute the free-stream velocity at collocation points.

Compute the components of the uniform flow normal to panels at collocation points.

Solve the system of equations for the list of constant parameters.

Use the transformation matrix to compute the list of slope parameters.

The lift coefficient for the airfoil can be computed using the Kutta-Joukowski theorem. Recall that the distribution of circulation on a panel in local panel coordinates can be written as , where denotes the distance from the leading edge of the panel. The contribution of each panel to the lift is computed and the results summed over all panels.

In terms of the dimensionless variables used in this example, the contribution by each panel to the lift coefficient is just twice the net circulation associated with the panel, which is obtained by integrating the linear circulation density function, . Compute contributions of each panel to the airfoil lift coefficient.

Sum the two terms for each panel to obtain the list of contributions of each panel to the lift coefficient.

Sum the panel contributions to obtain the airfoil lift coefficient.

The computations in this section illustrate the process of model implementation using a coarse discretization so that intermediate results can be viewed; however, the discretization is too coarse to provide useful results.

Remove names from computer memory, except those with values needed in the subsequent section, which presents an example computation of the pressure distribution and lift coefficient for a specified airfoil using a larger discretization number.

Numerical Model for Fine Discretization

In the following expression, the individual steps for implementing the model in the previous section are collected into a module. Most names for variables have been shortened for conciseness, but should be recognizable.

The results of this computation are the singularity strength parameters for all panels.

This model implementation has been validated by computing the results for a van de Vooren airfoil for which an exact solution is known by the method of conformal mapping. Also, convergence and timing studies have been performed and are available as online help documents in the software collection.

Pressure and Lift Coefficients

Use previously computed influence coefficients to determine the pressure coefficient at collocation points using Bernoulli’s equation.

Lift and pitching moments can be computed from the pressure distribution. For example, the lift coefficient is computed by approximating the integral, , where the integral is over the airfoil contour, is the pressure coefficient, is the outward unit normal to the airfoil surface, and is a unit vector perpendicular to the free-stream velocity in the direction of positive lift. The integral is approximated by considering the pressure coefficient constant over each panel, computing the contribution to lift of each panel, and summing the results.

The lift can also be computed from the circulation distribution as described in the section on step-by-step model formulation.

Figure 2 shows the surface pressure distribution on the airfoil in the conventional manner for such plots. Useful information from such plots include the locations of the stagnation point and the point of minimum pressure, and the severity of the positive pressure gradient on the upper surface.

Figure 2. Pressure coefficient for a NACA 4412 airfoil, discretization 200 panels with HalfCosineSpacing.


A brief summary of some features of a collection of packages that provide computational tools for formulating numerical models for two-dimensional potential flow over an airfoil using panel methods is presented. An example of solving the problem of steady flow over a specific airfoil is given using vortex panels of linearly varying strength and tangent-flow boundary conditions. This example includes the computation of surface pressure distribution and lift coefficient.

Session time for a typical PC indicates the practicality of such computations on low-cost computing systems and suggests the feasibility of going to the next level of modeling. This could include unsteady two-dimensional potential flow, steady three-dimensional potential flow, or including an integral boundary-layer method with the steady two-dimensional potential flow model presented in this article.


[1] R. H. Sabersky, A. J. Acosta, E. G. Hauptmann, and E. M. Gates, Fluid Flow: A First Course in Fluid Mechanics, 4th ed., Englewood Cliffs, NJ: Prentice Hall, 1998.
[2] J. L. Hess, “Panel Methods in Computational Fluid Dynamics,” Annual Review of Fluid Mechanics, 22, 1990 pp. 255-274.
[3] P. M. Morse and H. Feshbach, Methods of Theoretical Physics, New York: McGraw-Hill, 1953.
[4] J. Katz and A. Plotkin, Low-Speed Aerodynamics, Cambridge Aerospace Series (No. 13), 2nd ed., New York: Cambridge University Press, 2001.
[5] J. D. Anderson, Introduction to Flight, 3rd ed., New York: McGraw-Hill, 1989.
[6] J. J. Bertin and M. L. Smith, Aerodynamics for Engineers, 3rd ed., Englewood Cliffs, NJ: Prentice Hall, 1998.
[7] M. S. Selig, “UIUC Airfoil Data Site, Department of Aerospace Engineering.” Urbana, Illinois: University of Illinois, (Jan 2007)
R. L. Fearn, “Airfoil Aerodynamics Using Panel Methods,” The Mathematica Journal, 2011.

Additional Material

Available at

About the Author

While teaching for thirty years at the University of Florida, I often wished for effective computational tools to help students learn aerodynamics. Since retirement, I have started developing software for that purpose. When not playing with Mathematica, I can usually be found summers hiking in the Canadian Rockies or, spring and fall, walking or canoeing in the northern part of Florida with family and friends.

Richard L. Fearn
Professor Emeritus
Department of Mechanical and Aerospace Engineering
University of Florida
Gainesville, FL 32611-6250