aboutsummaryrefslogtreecommitdiff
path: root/xfoil_doc.txt
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2009-05-11 00:27:49 +0000
committerDimitri Sokolyuk <demon@dim13.org>2009-05-11 00:27:49 +0000
commit0d4f43d355de79178b1142e9735902cf641670b6 (patch)
tree2ced2323f6351db2a51090b3fd13eb11f69ff53f /xfoil_doc.txt
Xfoil 6.97
Diffstat (limited to 'xfoil_doc.txt')
-rw-r--r--xfoil_doc.txt1895
1 files changed, 1895 insertions, 0 deletions
diff --git a/xfoil_doc.txt b/xfoil_doc.txt
new file mode 100644
index 0000000..75bbedf
--- /dev/null
+++ b/xfoil_doc.txt
@@ -0,0 +1,1895 @@
+
+XFOIL 6.9 User Primer THE last update 30 Nov 2001
+
+Mark Drela, MIT Aero & Astro
+Harold Youngren, Aerocraft, Inc.
+
+
+General Description
+===================
+XFOIL is an interactive program for the design and analysis of subsonic
+isolated airfoils. It consists of a collection of menu-driven routines
+which perform various useful functions such as:
+
+ - Viscous (or inviscid) analysis of an existing airfoil, allowing
+ * forced or free transition
+ * transitional separation bubble(s)
+ * limited trailing edge separation
+ * lift and drag predictions just beyond CLmax
+ * Karman-Tsien compressibility correction
+
+ - Airfoil design and redesign by interactive specification of
+ a surface speed distribution via screen cursor or mouse. Two
+ such facilities are implemented.
+ * Full-Inverse, based on a complex-mapping formulation
+ * Mixed-Inverse, an extension of XFOIL's basic panel method
+ Full-inverse allows multi-point design, while Mixed-inverse allows
+ relatively strict geometry control over parts of the airfoil.
+
+ - Airfoil redesign by interactive specification of
+ new geometric parameters such as
+ * new max thickness and/or camber
+ * new LE radius
+ * new TE thickness
+ * new camber line via geometry specification
+ * new camber line via loading change specification
+ * flap deflection
+ * explicit contour geometry (via screen cursor)
+
+ - Blending of airfoils
+
+ - Drag polar calculation with fixed or varying Reynolds and/or
+ Mach numbers.
+
+ - Writing and reading of airfoil geometry and polar save files
+
+ - Plotting of geometry, pressure distributions, and polars
+ (Versaplot-derivative plot package used)
+
+XFOIL is best suited for use on a good workstation. A high-end PC
+is also effective, but must run Unix to support the X-Windows graphics.
+The source code of XFOIL is Fortran 77. The plot library also
+uses a few C routines for the X-Windows interface.
+
+
+History
+-------
+XFOIL 1.0 was written by Mark Drela in 1986. The main goal
+was to combine the speed and accuracy of high-order panel methods
+with the new fully-coupled viscous/inviscid interaction
+method used in the ISES code developed by Drela and Giles.
+A fully interactive interface was employed from the beginning
+to make it much easier to use than the traditional batch-type
+CFD codes. Several inverse modes and a geometry manipulator
+were also incorporated early in XFOIL's development, making
+it a fairly general airfoil development system.
+
+Since version 1.0, XFOIL has undergone numerous revisions,
+upgrades, hacks, and enhancements. These changes mainly originated
+from perceived shortcomings during actual design use, so XFOIL
+is now strongly geared to practical airfoil development.
+Harold Youngren provided the Xplot11 plot package which
+is a vast improvement over the grim Versaplot-type package
+used initially. Enhancements and suggestions from Youngren
+and other people were also incorporated into XFOIL itself
+along the way.
+
+Over the past few years, bug reports and enhancement
+suggestions have slowed to practically nil, and so
+after a final few enhancements from version 6.8, XFOIL 6.9
+is officially "frozen" and being made public. Although
+any bugs will likely be fixed, no further development
+is planned at this point. Method extensions are being
+planned, but these will be incorporated in a completely
+new next-generation code.
+
+
+Note to code developers and code enhancers...
+XFOIL does not exactly have the cleanest implementation,
+but it isn't too bad considering its vast modification
+history. Feel free to muck with the code as you like,
+provided everything is done under the GPL agreement.
+Drela and Youngren will not be inclined to assist with
+any code modifications at this point, however, since we
+each have a dozen other projects waiting. So proceed
+at your own risk.
+
+
+Theory References
+-----------------
+The general XFOIL methodology is described in
+ Drela, M.,
+ XFOIL: An Analysis and Design System for Low Reynolds Number Airfoils,
+ Conference on Low Reynolds Number Airfoil Aerodynamics,
+ University of Notre Dame, June 1989.
+
+which also appears as a chapter in:
+ Low Reynolds Number Aerodynamics. T.J. Mueller (Editor).
+ Lecture Notes in Engineering #54. Springer Verlag. 1989.
+ ISBN 3-540-51884-3
+ ISBN 0-387-51884-3
+
+The boundary layer formulation used by XFOIL is described in:
+ Drela, M. and Giles, M.B.
+ Viscous-Inviscid Analysis of Transonic and Low Reynolds Number Airfoils
+ AIAA Journal, 25(10), pp.1347-1355, October 1987.
+
+The blunt trailing edge treatment is described in:
+ Drela, M.,
+ Integral Boundary Layer Formulation for Blunt Trailing Edges,
+ Paper AIAA-89-2166, August 1989.
+
+Other related literature:
+ Drela, M.,
+ Elements of Airfoil Design Methodology,
+ Applied Computational Aerodynamics, (P. Henne, editor),
+ AIAA Progress in Aeronautics and Astronautics, Volume 125, 1990.
+
+ Drela, M.,
+ Low-Reynolds Number Airfoil Design for the MIT Daedalus Prototype: A Case Study,
+ Journal of Aircraft, 25(8), pp.724-732, August 1988.
+
+ Drela, M.,
+ Pros and Cons of Airfoil Optimization,
+ Chapter in "Frontiers of Computational Fluid Dynamics, 1998",
+ D.A. Caughey, M.M. Hafez, Eds.
+ World Scientific, ISBN 981-02-3707-3
+
+
+Inviscid Formulation
+--------------------
+The inviscid formulation of XFOIL is a simple linear-vorticity stream
+function panel method. A finite trailing edge base thickness is modeled
+with a source panel. The equations are closed with an explicit Kutta
+condition. A high-resolution inviscid calculation with the default
+160 panels requires seconds to execute on a RISC workstation. Subsequent
+operating points for the same airfoil but different angles of attack
+are obtained nearly instantly.
+
+A Karman-Tsien compressibility correction is incorporated, allowing
+good compressible predictions all the way to sonic conditions. The
+theoretical foundation of the Karman-Tsien correction breaks down
+in supersonic flow, and as a result accuracy rapidly degrades as the
+transonic regime is entered. Of course, shocked flows cannot be
+predicted with any certainty.
+
+
+Inverse Formulation
+-------------------
+There are two types of inverse methods incorporated in XFOIL:
+Full-Inverse and Mixed-Inverse. The Full-Inverse formulation
+is essentially Lighthill's and van Ingen's complex mapping method,
+which is also used in the Eppler code and Selig's PROFOIL code.
+It calculates the entire airfoil geometry from the entire surface
+speed distribution. The Mixed-Inverse formulation is simply
+the inviscid panel formulation (the discrete governing equations
+are identical) except that instead of the panel vortex strengths
+being the unknowns, the panel node coordinates are treated as
+unknowns wherever the surface speed is prescribed. Only a part
+of the airfoil is altered at any one time, as will be described later.
+Allowing the panel geometry to be a variable results in a non-linear
+problem, but this is solved in a straightforward manner with
+a full-Newton method.
+
+
+Viscous Formulation
+-------------------
+The boundary layers and wake are described with a two-equation lagged
+dissipation integral BL formulation and an envelope e^n transition
+criterion, both taken from the transonic analysis/design ISES code.
+The entire viscous solution (boundary layers and wake) is strongly
+interacted with the incompressible potential flow via the surface
+transpiration model (the alternative displacement body model is used
+in ISES). This permits proper calculation of limited separation regions.
+The drag is determined from the wake momentum thickness far downstream.
+A special treatment is used for a blunt trailing edge which fairly
+accurately accounts for base drag.
+
+The total velocity at each point on the airfoil surface and wake, with
+contributions from the freestream, the airfoil surface vorticity, and
+the equivalent viscous source distribution, is obtained from the panel
+solution with the Karman-Tsien correction added. This is incorporated
+into the viscous equations, yielding a nonlinear elliptic system
+which is readily solved by a full-Newton method as in the ISES code.
+Execution times are quite rapid, requiring about 10 seconds on a RISC
+workstation for a high-resolution calculation with 160 panels. For a
+sequence of closely spaced angles of attack (as in a polar), the
+calculation time per point can be substantially smaller.
+
+If lift is specified, then the wake trajectory for a viscous calculation
+is taken from an inviscid solution at the specified lift. If alpha is
+specified, then the wake trajectory is taken from an inviscid solution
+at that alpha. This is not strictly correct, since viscous effects will
+in general decrease lift and change the trajectory. This secondary
+correction is not performed, since a new source influence matrix would
+have to be calculated each time the wake trajectory is changed. This
+would result in unreasonably long calculation times. The effect of this
+approximation on the overall accuracy is small, and will be felt mainly
+near or past stall, where accuracy tends to degrade anyway. In attached
+cases, the effect of the incorrect wake trajectory is imperceptible.
+
+
+Data Structure
+==============
+XFOIL stores all its data in RAM during execution. Saving of the data
+to files is NOT normally performed automatically, so the user must be
+careful to save work results before exiting XFOIL. The exception to
+this is optional automatic saving to disk of polar data as it's being
+computed in OPER (described later).
+
+Stored airfoils and polars
+--------------------------
+XFOIL 6.9 stores multiple polars and associated airfoils and parameters
+during one interactive session. Each such data set is designated by its
+"stored polar" index:
+
+polar 1: x,y, CL(a), CD(a)... Re, Ma, Ncrit...
+polar 2: x,y, CL(a), CD(a)... Re, Ma, Ncrit...
+ .
+ .
+
+Not all of the data need to be present for each stored polar.
+For example, x,y would be absent if the CL,CD polar was read in
+from an external file rather than computed online.
+
+Earlier XFOIL versions in effect only allowed one stored airfoil
+and stored polar at a time. The new multiple storage feature makes
+iterative redesign considerably more convenient, since the cases
+can contain multiple design versions which can be easily overlaid
+on plots.
+
+Current and buffer airfoils
+---------------------------
+XFOIL 6.9 retains the concept of a "current airfoil"
+and "buffer airfoil" used in previous versions.
+These are the airfoils on which the various calculations
+are performed, and they are distinct from the "polar" x,y coordinates
+described above. The polar x,y are simply archived data,
+and do not directly participate in computations. The polar
+x,y must first be transferred into the current airfoil if
+they are to be used for computation.
+
+
+Program Execution
+=================
+
+XFOIL is executed with
+
+ % xfoil
+
+When the program starts, the following top level menu and prompt appear:
+
+ QUIT Exit program
+
+ .OPER Direct operating point(s)
+ .MDES Complex mapping design routine
+ .QDES Surface speed design routine
+ .GDES Geometry design routine
+
+ SAVE f Write airfoil to labeled coordinate file
+ PSAV f Write airfoil to plain coordinate file
+ ISAV f Write airfoil to ISES coordinate file
+ MSAV f Write airfoil to MSES coordinate file
+ REVE Reverse written-airfoil node ordering
+
+ LOAD f Read buffer airfoil from coordinate file
+ NACA i Set NACA 4,5-digit airfoil and buffer airfoil
+ INTE Set buffer airfoil by interpolating two airfoils
+ NORM Buffer airfoil normalization toggle
+
+ BEND Display structural properties of current airfoil
+
+ PCOP Set current-airfoil panel nodes directly from buffer airfoil points
+ PANE Set current-airfoil panel nodes ( 140 ) based on curvature
+ .PPAR Show/change paneling
+
+ .PLOP Plotting options
+
+ WDEF f Write current-settings file
+ RDEF f Reread current-settings file
+ NAME s Specify new airfoil name
+ NINC Increment name version number
+
+ Z Zoom | (available in all menus)
+ U Unzoom |
+
+ XFOIL c>
+
+
+The commands preceded by a period place the user in another
+lower-level menu. The other commands are executed immediately
+and the user is prompted for another top level command.
+The lowercase letters i,r,f,s following some commands indicate
+the type of argument(s) expected by the command:
+
+ i integer
+ r real
+ f filename
+ s character string
+
+Commands will be shown here in uppercase, although they are not
+case sensitive.
+
+Typically, either the LOAD or the NACA command is issued first
+to create an airfoil for analysis or redesign. The NACA command
+expects an integer argument designating the airfoil:
+
+ XFOIL c> NACA 4415
+
+As with all commands, omitting the argument will produce a prompt:
+
+ XFOIL c> NACA
+
+ Enter NACA 4 or 5-digit airfoil designation i> 4415
+
+
+The LOAD command reads and processes a formatted airfoil coordinate
+file defining an arbitrary airfoil. It expects a filename argument:
+
+ XFOIL c> LOAD e387.dat
+
+
+The NACA or LOAD commands can be skipped if XFOIL is executed with
+a filename as an argument, as for example
+
+ % xfoil e387.dat
+
+which then executes the LOAD procedure before the first menu prompt
+is given.
+
+
+Airfoil file formats
+--------------------
+LOAD recognizes four airfoil file formats: Plain, Labeled, ISES, MSES.
+All data lines are significant with the exception of lines beginning
+with "#", which are ignored.
+
+Plain coordinate file
+.....................
+
+This contains only the X,Y coordinates, which run from the
+trailing edge, round the leading edge, back to the trailing edge
+in either direction:
+
+X(1) Y(1)
+X(2) Y(2)
+ . .
+ . .
+X(N) Y(N)
+
+
+
+Labeled coordinate file
+.......................
+
+This is the same as the plain file, except that it also has an
+airfoil name string on the first line:
+
+NACA 0012
+X(1) Y(1)
+X(2) Y(2)
+ . .
+
+This is deemed the most convenient format to use.
+The presence of the name string is automatically recognized if
+it does not begin with a Fortran-readable pair of numbers. Hence,
+"00 12 NACA Airfoil" cannot be used as a name, since the "00 12"
+will be interpreted as the first pair of coordinates. "0012 NACA"
+is OK, however.
+
+Some Fortran implementations will also choke on airfoil names
+that begin with T or F. These will be interpreted as logical
+variables, defeating the name-detection logic. Beginning the
+name with _T or _F is a workable solution to this "feature".
+
+
+
+ISES coordinate file
+....................
+
+This has four or five ISES grid domain parameters in addition to the name:
+
+NACA 0012
+-2.0 3.0 -2.5 3.0
+X(1) Y(1)
+X(2) Y(2)
+ . .
+
+If the second line has four or more numbers, then these are interpreted
+as the grid domain parameters.
+
+
+
+MSES coordinate file
+....................
+
+This is the same as the ISES coordinate file, except that it can
+contain multiple elements, each one separated by the line
+
+999.0 999.0
+
+The user is asked which of these elements is to be read in.
+
+
+Buffer airfoil normalization
+----------------------------
+XFOIL will normally perform all operations on an airfoil with the
+same shape and location in cartesian space as the input airfoil.
+However, if the normalization flag is set (toggled with the NORM
+command), the airfoil coordinates will be immediately normalized
+to unit chord and the leading edge will be placed at the origin.
+A message is printed to remind the user.
+
+
+Buffer airfoil generation via interpolation
+-------------------------------------------
+The INTE command is new in XFOIL 6.9, and allows interpolating
+or "blending" of airfoils in various proportions. The interpolation
+is performed as follows:
+
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+Airfoils 0 and 1 are defined by their cubic splines,
+
+ x0(s0), y0(s0) x1(s1), y1(s1)
+
+with the discrete secant arc length parameters s computed from
+the coordinates x(i),y(i):
+
+ s(i) = s(i-1) + sqrt[ (x(i)-x(i-1))^2 + (y(i)-y(i-1))^2 ]
+
+
+To perform the interpolation, the discrete s0(i) points are first
+used to define discrete fractional parameter values s'(i) = 0...1,
+from the Leading Edge to the Trailing Edge:
+
+ s'(i) = [s0(i) - s0_LE]/[s0_TE - s0_LE]
+
+The s' values are computed separately on the top and bottom airfoil sides.
+
+These fractional parameter values s' are then used to compute new
+spline-parameter values s0,s1 for each airfoil, separately on the
+top and bottom sides:
+
+ s0(i) = s0_LE + s'(i) * [s0_TE - s0_LE] ; same as original s0(i)
+ s1(i) = s1_LE + s'(i) * [s1_TE - s1_LE] ; same as original s0(i)
+
+The interpolated-airfoil points are then computed by computing x,y
+from the splines and interpolating them:
+
+ x_new(i) = (1-f) x0(s0(i)) + f x1(s1(i))
+ y_new(i) = (1-f) y0(s0(i)) + f y1(s1(i))
+
+
+Treating the top and bottom surface separately ensures that the
+leading edge point of the new airfoil is the interpolated result
+of the exact 0 and 1 leading edges.
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+The polar shape of an interpolated airfoil will often be quite close
+to the interpolated polars of its two parent airfoils. Extrapolation
+can also be done by specifying a blending fraction outside
+the 0..1 range, although the resulting airfoil may be quite
+weird if the extrapolation is excessive.
+
+A good way to use INTE is to "augment" or "tone down" the
+modifications to an airfoil performed in MDES or GDES.
+For example, say airfoil B is obtained by modifying airfoil A:
+
+ A -> MDES -> B
+
+Suppose the modification changed A's polar in the right direction,
+but not quite far enough. The additional needed change can be
+done by extrapolating past airfoil B in INTE:
+
+Airfoil "0": A
+Airfoil "1": B
+Interpolating fraction 0..1 : 1.4
+Output airfoil: C
+
+Plotted along the "modification axis", the airfoils are:
+
+A B C
+0.0 1.0 1.4 ...
+
+So airfoil C has 40% more of the change received by B in the redesign.
+Aifoil C's polar will also be changed about 40% more as intended.
+
+
+Airfoil node distribution matching
+----------------------------------
+The INTE command can be used to impose one airfoil's node distribution
+onto another airfoil shape. This is done as follows:
+
+Airfoil 0: airfoil providing the node distribution ( s'(i) values )
+Airfoil 1: airfoil providing the shape ( x, y values )
+Interpolating fraction: 1.0
+
+The resulting airfoil will have the shape of airfoil 1, but the
+node distribution of airfoil 0.
+
+
+Further buffer airfoil manipulation
+-----------------------------------
+The GDES facility allows very extensive manipulation of the buffer airfoil.
+This will be described in much more detail in a later section. If only
+analysis is performed, the GDES facility would not normally be used.
+
+
+Generation of current airfoil
+-----------------------------
+When the buffer airfoil coordinates are read from a file during startup,
+or read in via the LOAD command, they are by default
+also copied directly into the ``current'', or working airfoil.
+Hence, no special action is needed to start analysis operations. However,
+if the input airfoil has a poor point distribution (too many, too few,
+poorly spaced, etc), one can use PANE to create a better panel node
+distribution for the current airfoil on the splined buffer airfoil shape.
+The paneling routine increases the point density in areas of
+high curvature (i.e. the leading edge) and at the trailing edge
+to a degree specified by the user. The user can also increase
+panel density over one additional interval on each airfoil side,
+perhaps near transition. The current-airfoil paneling can be
+displayed and/or modified with PPAR.
+
+In some cases it is desirable to explicitly re-copy the buffer
+airfoil into the current airfoil via PCOP. In previous XFOIL
+versions this had to be done with the equivalent command sequence
+ LOAD
+ GDES
+ EXEC
+
+With XFOIL 6.9, the GDES,EXEC commands after LOAD are now superfluous.
+
+The NACA command automatically invokes the paneling routine to create
+a current airfoil with a suitable paneling.
+
+
+Saving current airfoil coordinates
+----------------------------------
+A coordinate file in any one of these four formats can be written
+with the PSAV, SAVE, ISAV, or MSAV command, respectively.
+When issuing the MSAV command, the user is also asked which element
+in the file is to be overwritten. XFOIL can thus be used to easily
+"edit" individual elements in MSES multielement configurations.
+Of course, normalization should not be performed on an element if
+it is to be written back to the same multielement file.
+Only the current-airfoil coordinates can be saved to a file.
+If the buffer or polar x,y coordinates need to be saved, they
+must first be copied into the current airfoil.
+
+
+
+
+Units
+=====
+Most XFOIL operations are performed on the airfoil's cartesian
+coordinates x,y , which do not necessarily have a unit chord c.
+Since the chord is ambiguous for odd shapes, the XFOIL
+force coefficients CL, CD, CM are obtained by normalizing the
+forces and moment with only the freestream dynamic pressure
+(the reference chord is assumed to be unity). Likewise, the
+XFOIL Reynolds number RE is defined with the freestream velocity
+and viscosity, and an implied unit chord:
+
+ CL = L / q | V = freestream speed
+ CD = D / q | v = freestream kinematic viscosity
+ CM = M / q | r = freestream density
+ RE = V / v | q = 0.5 r V^2
+
+The conventional definitions are
+
+ Cl = L / q c
+ Cd = D / q c
+ Cm = M / q c^2
+ Rc = V c / v
+
+so that the conventional and XFOIL definitions differ only by
+the chord factor c or c^2.
+
+For example, a NACA 4412 airfoil is operated in the OPER menu at
+
+ RE = 500000
+ ALFA = 3
+
+first with chord=1.0, and then with chord=0.5 (changed with SCAL
+command in the GDES menu, say). The results produced by XFOIL are:
+
+ c = 1.0 : CL = 0.80 CD = 0.0082 (RE = 500000, Rc = 500000)
+ c = 0.5 : CL = 0.40 CD = 0.0053 (RE = 500000, Rc = 250000)
+
+Since CL is not normalized with the chord, it is nearly proportional
+to the airfoil size. It is not exactly proportional, since the true
+chord Reynolds number Rc is different, and there is always a weak
+Reynolds number effect on lift. In contrast, the CD for the smaller
+airfoil is significantly greater than 1/2 times the larger-airfoil CD,
+since chord Reynolds number has a significant impact on profile drag.
+Repeating the c = 0.5 case at RE = 1000000, produces the expected
+result that CL and CD are exactly 1/2 times their c = 1.0 values.
+
+ c = 0.5 : CL = 0.40 CD = 0.0041 (RE = 1000000, Rc = 500000)
+
+
+Although XFOIL performs its operations with no regard to the size
+of the airfoil, some quantities are nevertheless defined in terms
+of the chord length. Examples are the camber line shape and BL trip
+locations, which are specified in terms of the relative x/c,y/c along
+and normal to the airfoil chord line. This is done only for the user's
+convenience. In the input and output labeling, "x,y" always refer
+to the cartesian coordinates, while "x/c,y/c" refer to the chord-
+based coordinates which are shifted, rotated, and scaled so that
+the airfoil's leading edge is at (x/c,y/c) = (0,0), and
+the airfoil's trailing edge is at (x/c,y/c) = (1,0). The two
+systems cooincide only if the airfoil is normalized.
+
+
+Analysis
+========
+Most of the commands in the top level XFOIL menu merely put the user
+into some lower command level with its own menu and prompt. Issuing
+The OPER command, for instance, will produce the prompt
+
+ .OPERi c>
+
+Typing a " ? " will result in the OPER analysis menu being displayed:
+
+
+ <cr> Return to Top Level
+ ! Redo last ALFA,CLI,CL,ASEQ,CSEQ,VELS
+
+ Visc r Toggle Inviscid/Viscous mode
+ .VPAR Change BL parameter(s)
+ Re r Change Reynolds number
+ Mach r Change Mach number
+ Type i Change type of Mach,Re variation with CL
+ ITER Change viscous-solution iteration limit
+ INIT Toggle BL initialization flag
+
+ Alfa r Prescribe alpha
+ CLI r Prescribe inviscid CL
+ Cl r Prescribe CL
+ ASeq rrr Prescribe a sequence of alphas
+ CSeq rrr Prescribe a sequence of CLs
+
+ SEQP Toggle polar/Cp(x) sequence plot display
+ CINC Toggle minimum Cp inclusion in polar
+ HINC Toggle hinge moment inclusion in polar
+ Pacc i Toggle auto point accumulation to active polar
+ PGET f Read new polar from save file
+ PWRT i Write polar to save file
+ PSUM Show summary of stored polars
+ PLIS i List stored polar(s)
+ PDEL i Delete stored polar
+ PSOR i Sort stored polar
+ PPlo ii. Plot stored polar(s)
+ APlo ii. Plot stored airfoil(s) for each polar
+ ASET i Copy stored airfoil into current airfoil
+ PREM ir. Remove point(s) from stored polar
+ PNAM i Change airfoil name of stored polar
+ PPAX Change polar plot axis limits
+
+ RGET f Read new reference polar from file
+ RDEL i Delete stored reference polar
+
+ GRID Toggle Cp vs x grid overlay
+ CREF Toggle reference Cp data overlay
+ FREF Toggle reference CL,CD.. data display
+
+ CPx Plot Cp vs x
+ CPV Plot airfoil with pressure vectors (gee wiz)
+ .VPlo BL variable plots
+ .ANNO Annotate current plot
+ HARD Hardcopy current plot
+ SIZE r Change plot-object size
+ CPMI r Change minimum Cp axis annotation
+
+ BL i Plot boundary layer velocity profiles
+ BLC Plot boundary layer velocity profiles at cursor
+ BLWT r Change velocity profile scale weight
+
+ FMOM Calculate flap hinge moment and forces
+ FNEW rr Set new flap hinge point
+ VELS rr Calculate velocity components at a point
+ DUMP f Output Ue,Dstar,Theta,Cf vs s,x,y to file
+ CPWR f Output x vs Cp to file
+ CPMN Report minimum surface Cp
+ NAME s Specify new airfoil name
+ NINC Increment name version number
+
+The commands are not case sensitive. Some commands expect multiple
+arguments, but if the arguments are not typed, prompts will be issued.
+
+The most commonly-used commands have alternative short forms,
+indicated by the uppercase part of the command in the menu list.
+For example, the menu shows...
+
+ Alfa r Prescribe alpha
+ CLI r Prescribe inviscid CL
+ Cl r Prescribe CL
+ ASeq rrr Prescribe a sequence of alphas
+ CSeq rrr Prescribe a sequence of CLs
+
+The "A" command is the short alternative form of "ALFA", and "C"
+is the short alternative of "CL". Likewise, "AS" and "CS"
+are the short forms of "ASEQ" and "CSEQ". The CLI command
+has no short form (as indicated by all capitals in the menu),
+and must be fully typed.
+
+
+Hopefully, most of the commands are self-explanatory. For inviscid
+cases, the CLI and CL commands are identical. For viscous cases,
+CLI is equivalent to specifying alpha, this being determined a priori
+from the specified lift coefficient via an inviscid solution. CL will
+return a viscous solution with the specified true viscous lift
+coefficient at an alpha which is determined as part of the solution
+(prescribing a CL above CLmax will cause serious problems, however!).
+The user is always prompted for any required input. When in doubt,
+typing a " ? " will always produce a menu.
+
+After an ALFA, CL, or CLI command is executed, the Cp vs x distribution
+is displayed, and can be displayed again at any time with CPX.
+If the viscous mode is active, the true viscous Cp is shown as a solid
+line, and the inviscid Cp at that same alpha is shown as a dashed line.
+Each dash covers one panel, so the local dashed line density is also
+a useful visual indicator of panel resolution quality. If the inviscid
+mode is active, only the inviscid Cp is shown as a solid line.
+
+The difference between the true viscous Cp distribution (solid line)
+and the inviscid Cp distribution (dashed line) is due to the
+modification of the effective airfoil shape by the boundary layers.
+This effective airfoil shape is shown superimposed on the actual
+current airfoil shape under the Cp vs x plot. The gap between
+these effective and actual shapes is equal to the local displacement
+thickness delta*, which can also be plotted in the VPAR menu.
+This is only about 1/3 to 1/2 as large as the overall boundary
+layer thickness, which can be visualized via the BL or BLC commands
+which diplay velocity profiles through the boundary layer.
+BL displays a number of profiles equally spaced around the
+airfoil's perimeter, while BLC displays profiles at cursor-selected
+locations. The zooming commands Z, U, may be necessary to better
+see these small profiles in most cases.
+
+If the Cp reference data overlay option is enabled with CREF,
+initiating a Cp vs x plot will first result in the user being
+prompted for a formatted data file with the following format:
+
+x(1) Cp(1)
+x(2) Cp(2)
+ . .
+ . .
+
+The Cp vs x plot is then displayed as usual but with the data overlaid.
+If FREF has been issued previously, then numerical reference values
+for CL, CD, etc. will be requested and added to the plot next to the
+computed values.
+
+Boundary-layer quantities are plotted from the VPLO menu:
+
+ H Plot kinematic shape parameter
+ DT Plot top side Dstar and Theta
+ DB Plot bottom side Dstar and Theta
+ UE Plot edge velocity
+ CF Plot skin friction coefficient
+ CD Plot dissipation coefficient
+ N Plot amplification ratio
+ CT Plot max shear coefficient
+ RT Plot Re_theta
+ RTL Plot log(Re_theta)
+
+ X rrr Change x-axis limits
+ Y rrr Change y-axis limits on current plot
+
+ Blow Cursor blowup of current plot
+ Rese Reset to default x,y-axis limits
+ SIZE r Change absolute plot-object size
+ .ANNO Annotate plot
+ HARD Hardcopy current plot
+
+ GRID Toggle grid plotting
+ SYMB Toggle node-symbol plotting
+ LABE Toggle label plotting
+ CLIP Toggle line-plot clipping
+
+
+This menu is largely self-explanatory. The skin friction
+coefficient plotted with the CF command is defined as
+
+ 2
+ Cf = tau / 0.5 rho Qinf
+
+This differs from the standard boundary layer theory definition
+which uses the local Ue rather than Qinf for the normalization.
+Using the constant freestream reference makes Cf(x) have the
+same shape as the physical shear stress tau(x).
+
+The dissipation coefficient CD' (this is NOT the drag coefficient!!!)
+is plotted with the CD command. CD'(x) is proportional to the local
+energy dissipation rate due to viscous shear and turbulent mixing.
+Hence, it indicates where on the airfoil drag is being created.
+It is in fact a much better indicator of drag production than Cf(x),
+since Cf does not account for pressure drag. CD', on the other
+hand, accounts for everything. Its relationship to the total
+profile drag coefficient is simply
+
+ /
+ CD = | 2 CD' ds
+ /
+
+with the integration performed over both boundary layers and also
+the wake. It will be seen that if the flow is separated at the
+trailing edge, much of the drag contribution (energy dissipation)
+of CD' occurs in the wake.
+
+
+As mentioned earlier, all forces are normalized with freestream
+dynamic pressure only. CL, CD, CM are the usual chord-based
+definitions only if the airfoil has a unit chord -- in general,
+they will scale with the airfoil's chord. Also, CM is defined
+about the cartesian point (xref,yref) = (0.25,0.0), which is not
+necessarily the airfoil's 1/4 chord point.
+
+
+ -- Force calculation --
+
+The lift and moment coefficients CL, CM, are calculated by direct
+surface pressure integration:
+
+ / _ /
+ CL = L/q = | Cp dx CM = M/q = | -Cp [(x-xref) dx + (y-yref) dy]
+ / /
+
+ _
+ where x = x cos(a) + y sin(a) ; a = angle of attack
+ _
+ y = y cos(a) - x sin(a)
+
+
+The integrals performed in the counterclockwise direction
+around the airfoil contour. The pressure coefficient Cp is
+calculated using the Karman-Tsien compressibility correction.
+
+The drag coefficient CD is obtained by applying the Squire-Young
+formula at the last point in the wake --- NOT at the trailing edge.
+
+ (H+5)/2
+ CD = D/q = 2 Theta_i = 2 Theta (u/V)
+
+ where Theta = momentum thickness |
+ u = edge velocity | at end of wake
+ H = shape parameter |
+
+ V = freestream velocity
+ Theta_i = momentum thickness at "downstream infinity"
+
+
+The Squire-Young formula in effect extrapolates the momentum
+thickness to downstream infinity. It assumes that the wake behaves
+in a asymptotic manner downstream of the point of application.
+This assumption is strongly violated in the near-wake behind an
+airfoil with trailing edge separation, but is always reasonable
+some distance behind the airfoil. Hence, the usual application
+of Squire-Young at the trailing edge is questionable with separation
+present, but its application at the last wake point (typically
+1 chord downstream) is always reasonable. Also, application at
+the last wake point also results in the formula having a smaller
+effect in any case, since there u ~ V, and hence Theta_i ~ Theta.
+
+In most 2-D airfoil experiments, drag is measured indirectly by
+measuring 2 Theta/c in the wake, often within one chord of the
+airfoil's trailing edge. For consistency, this should be compared
+to the Theta value predicted by XFOIL at the same wake location,
+rather than the "true" Cd = 2 Theta_i/c value which is effectively
+at downstream infinity. In general, Theta_i will be smaller
+than Theta. In most airfoil drag measurement experiments, this
+difference may amount to the drag measurement being several
+percent too large, unless some correction is performed.
+
+In addition to calculating the total viscous CD from the wake
+momentum thickness, XFOIL also determines the friction and pressure
+drag components CDf,CDp of this total CD. These are calculated by
+
+ / _
+ CDf = | Cf dx CDp = CD - CDf
+ /
+
+Here, Cf is the skin friction coefficient defined with the
+freestream dynamic pressure, not the BL edge dynamic pressure
+commonly used in BL theory. Note that CDp is deduced from
+CD and CDf instead of being calculated via surface pressure
+integration. This conventional definition
+
+ / _
+ CDp = | Cp dy
+ /
+
+is NOT used, since it is typically swamped by numerical noise.
+
+
+ -- Transition criterion --
+
+Transition in an XFOIL solution is triggered by one of two ways:
+
+ free transition: e^n criterion is met
+ forced transition: a trip or the trailing edge is encountered
+
+The e^n method is always active, and free transition can occur
+upstream of the trip. The e^n method has the user-specified
+parameter "Ncrit", which is the log of the amplification factor
+of the most-amplified frequency which triggers transition.
+A suitable value of this parameter depends on the ambient
+disturbance level in which the airfoil operates, and mimics
+the effect of such disturbances on transition. Below are typical
+values of Ncrit for various situations.
+
+ situation Ncrit
+ ----------------- -----
+ sailplane 12-14
+ motorglider 11-13
+ clean wind tunnel 10-12
+ average wind tunnel 9 <= standard "e^9 method"
+ dirty wind tunnel 4-8
+
+Note: The e^n method in XFOIL is actually the simplified envelope
+version, which is the same as the full e^n method only for flows
+with constant H(x). If H is not constant, the two methods differ
+somewhat, but this difference is typically within the uncertainty
+in choosing Ncrit.
+
+The e^n method is only appropriate for predicting transition in
+situations where the growth of 2-D Tollmien-Schlichting waves via
+linear instability is the dominant transition-initiating mechanism.
+Fortunately, this happens to be the case in a vast majority of airfoil
+applications. Other possible mechanisms are:
+
+* Crossflow instabilities. These occur on swept wings with significant
+ favorable chordwise pressure gradients.
+
+* Attachment-line transition. This requires large sweep, large LE
+ radius, and a large Reynolds number. Occurs primarily on big jets.
+
+* Bypass transition. This occurs in cases with sufficient wall
+ roughness and/or large freestream turbulence or vibration levels.
+ The linear-instability phase predicted by the e^n method is
+ "bypassed", giving relatively early transition. Usually occurs
+ in favorable pressure gradients, while the linear-instability
+ mechanism usually dominates in adverse pressure gradients.
+
+If any of these alternative transition mechanisms are present, the
+trips must be set to mimick their effect. The bypass transition
+mechanism can be mimicked to some extent by the e^n method by
+setting Ncrit to a small value --- Ncrit=1 or less. This will
+cause transition just after linear instability begins. For
+very large freestream turbulence or roughness in favorable
+pressure gradients, bypass transition can occur before the
+linear instability threshold, and in this case trips will have
+to be set as well.
+
+
+Numerical accuracy
+------------------
+
+-- Panel density requirements --
+If strong separation bubbles are present in a viscous solution, then
+it is very important to have good panel resolution in the region of the
+bubble(s). The large gradients at a bubble tend to cause significant
+numerical errors even if a large number of panels is used. If a separation
+bubble appears to be poorly resolved, it is a good idea to re-panel the
+airfoil with more points, and/or with points bunched around the bubble
+region. The paneling is controlled from the PPAR menu. A good rule of
+thumb is that the shape parameter Hk just after transition in the bubble
+should not decrease by more than 1.0 per point. Likewise, the surface
+velocity Ue/Vinf should not change by more than 0.05 per point past
+transition, otherwise there may be significant numerical errors in the
+drag. The point values can be observed by issuing SYMB from the VPLO menu.
+Moderate chord Reynolds numbers (1-3 million, say) usually require the
+finest paneling, since the bubbles are still important, but very small.
+On many airfoils, especially those with small leading edge radii,
+the development of the small bubble which forms just behind the
+leading edge can have a significant effect on CLmax. For such cases,
+the default paneling density at the bubble may not be adequate.
+In all cases, inadequate bubble resolution results in a "ragged"
+or "scalloped" CL vs CD drag polar curve, so fortunately this is
+easy to spot.
+
+-- Differencing order of accuracy --
+The BL equations are normally discretized with two-point central
+differencing (i.e. the Trapezoidal Scheme), which is second-order
+accurate, but only marginally stable. In particular, it has problems
+with the relatively stiff shape parameter and lag equations at
+transition, where at high Reynolds number the shape parameter must
+change very rapidly. Oscillations and overshoots in the shape parameter
+will occur with the Trapezoidal Scheme if the grid cannot resolve this
+rapid change. To avoid this nasty behavior, upwinding must be introduced,
+resulting in the Backward Euler Scheme, which is very stable, but has
+only first-order accuracy. Previous versions of XFOIL allowed a specific
+constant amount of upwinding to be user-specified. Currently,
+XFOIL automatically introduces upwinding into the equations only
+in regions of rapid change (typically transition). This ensures
+that the overall scheme is stable and as accurate as possible.
+
+Since only a minimal amount of upwinding is introduced in the
+interest of numerical accuracy, small oscillations in the shape
+parameter H will sometimes appear near the stagnation point if
+relatively coarse paneling is used there. These oscillations
+are primarily a cosmetic defect, and do not significantly affect
+the downstream development of the boundary layer. Eliminating them
+by increasing upwiding would in fact produce much greater errors
+in the overall viscous solution.
+
+
+Viscous solution acceleration
+-----------------------------
+The execution of a viscous case requires the solution of a large
+linear system every Newton iteration. The coefficient matrix of
+this system is 1/3 full, although most of its entries are very small.
+Substantial savings in CPU time (factor of 4 or more) result when
+these small entries are neglected. SUBROUTINE BLSOLV which solves the
+large Newton system ignores any off-diagonal element whose magnitude
+is smaller than the variable VACCEL, which is initialized in SUBROUTINE
+INIT, and which can be changed at runtime from the VPAR menu with the
+VACC command.
+
+A nonzero VACCEL parameter should in principle degrade the convergence rate
+of the viscous solution and thus result in more Newton iterations, although
+the effect is usually too small to notice. For very low Reynolds number
+cases (less than 100000), it MAY adversely affect the convergence rate
+or stability, and one should try reducing VACCEL or even setting it
+to zero if all other efforts at convergence are unsuccessful.
+The value of VACCEL has absolutely no effect on the final converged
+viscous solution (if attained).
+
+
+Polar calculations and plotting
+-------------------------------
+The polar calculation facility driven from the OPER menu deserves
+a detailed description. It has been considerably upgraded from
+previous XFOIL versions.
+
+The simplest way to create a polar is to issue the PACC command
+which sets the auto polar accumulation toggle and asks for the
+optional save and dump filenames. If either filename is
+given, each computed operating point will be stored internally
+and also written to the specified file. If no filename is given,
+the automatic writing is not performed.
+
+The polar's operating points can be computed individually with ALFA,
+or more conveniently en masse with ASEQ. One can also use CL or CSEQ,
+although these will not work close to CLmax.
+
+The polar can be plotted anytime with PPLO. If previous polars have been
+computed or read in with PGET, they can be plotted as well. If a polar
+is deemed incomplete, additional points can be computed as needed.
+
+If automatic writing of a polar was not chosen (no filename was given
+for PACC), the polar can be written later all at once with the PWRT
+command. The only drawback to this approach is that if the program
+crashes during a polar calculation sweep for whatever reason, the
+computed polar and all other stored information will be lost.
+
+If existing filenames are given to PACC, the subsequent computed
+points will be appended to these files, but only if the airfoil name
+and flow parameters in the file match the current parameters.
+This is to prevent clobbering of the polar file with "wrong"
+additional points. Messages are always produced informing
+the user of what's going on.
+
+Off-line polar plotting
+----------------------
+Polar save file(s) can also be plotted off-line with the separate
+program PPLOT. This is entirely menu driven, and is simply executed:
+
+ % pplot
+
+The file pplot.def contains plotting parameters, and is read
+automatically if available. If it's not available, then internal
+defaults are used.
+
+Like the RGET,FREF commands in OPER, PPLOT permits reference data
+to be overlaid. A reference polar data file has the following form:
+
+CD(1) CL(1)
+CD(2) CL(2)
+ . .
+ . .
+999.0 999.0
+alpha(1) CL(1)
+alpha(2) CL(2)
+ . .
+ . .
+999.0 999.0
+alpha(1) Cm(1)
+alpha(2) Cm(2)
+ . .
+ . .
+999.0 999.0
+Xtr/c(1) CL(1)
+Xtr/c(2) CL(2)
+ . .
+ . .
+999.0 999.0
+
+The number of points in each set (CD-CL, alpha-CL, etc.) is arbitrary,
+and can be zero.
+
+The contents of a polar dump file can be selectively plotted with
+the separate menu-driven program PXPLOT. It is executed with:
+
+ % pxplot <dump filename>
+
+This allows surface plots of Cp vs x, H vs x, etc. for any or
+all of the saved operating points. Of course, these plots can
+be generated in XFOIL for any individual operating point, so PXPLOT
+and the dump file itself are somewhat redundant in this respect.
+
+
+
+Re, Mach dependence
+-------------------
+A few comments are in order on the TYPE command, which allows the
+user to set the dependence of the Mach and Reynolds numbers on CL.
+Any CL-CD polar can be of the following three types:
+
+ Type parameters held constant varying fixed
+ ---- ------------------------ ------- -----------
+ 1 M , Re .. lift chord, vel.
+ 2 M sqrt(CL) , Re sqrt(CL) .. vel. chord, lift
+ 3 M , Re CL .. chord lift , vel.
+
+* Type 1 corresponds to a given wing at a fixed velocity going over
+an angle of attack range, as in a wind tunnel test alpha sweep or
+a sudden aircraft pullup. This is also the common form for an
+airfoil polar.
+
+* Type 2 corresponds to an aircraft in level flight at a given altitude
+undergoing trim speed changes. This is the most useful airfoil polar
+form for determining a drag polar for an aircraft at 1-g. For this case,
+The "Mach number" input with the MACH command is actually interpreted
+as the product M sqrt(CL), and the "Reynolds number" input with the
+VISC or RE commands is actually interpreted as RE sqrt(CL). For a wing
+in level flight, these products can be computed from the following exact
+relations, with Re based on the mean chord:
+
+ 1/2 1/2
+ | 2 W/S | 1 | 2 rho W |
+ M sqrt(CL) = | --- --- | RE sqrt(CL) = -- | ------- |
+ | 1.4 p | mu | AR |
+
+ W = weight p = ambient pressure
+ S = wing area mu = dynamic viscosity
+ AR = aspect ratio rho = ambient air density
+
+* Type 3 corresponds to a wing of "rubber chord" with a given lift
+at a given speed. This is best used for selecting an optimum CL
+for an airfoil while taking Reynolds number changes into account.
+The product RE CL can be computed from the following:
+
+ 2 W
+ RE CL = ------ b = span = sqrt(S*AR)
+ mu V b
+
+
+Caution must be used with Types 2 and 3 so as to not allow the CL
+to go negative. In addition, with non-zero Mach and Type 2,
+the CL must not fall below that value which makes Mach exceed
+unity. Warning messages are printed when these problems occur.
+
+
+Output
+======
+All output goes directly to the terminal screen. H. Youngren's plot
+package Xplot11 (libPlt.a) used by XFOIL drives monochrome and color
+X-Windows graphics, and generates B&W or color PostScript files for
+hardcopy. The default setup assumes color X-Windows graphics
+(if available), and B&W PostScript. These defaults are controlled
+by the IDEV and IDEVRP flags in SUBROUTINE INIT (in xfoil.f).
+
+The Xplot11 library should work on all Unix systems. The Makefile
+in the ./plotlib/ directory requires some modifications for some
+machines.
+
+The default X-graphics window is in Landscape mode, with a black
+(reverse-video) background. Normal-video can be selected by setting
+the Unix shell variable
+
+ % setenv XPLOT11_BACKGROUND white
+
+before Xfoil is started. The nicer reverse-video is restored with:
+
+ % unsetenv XPLOT11_BACKGROUND
+
+See the plotlib/Doc file for more info on the plot library.
+
+
+Xplot11 provides a built-in Zoom/Unzoom capability which can
+be applied to whatever is on the screen. Zooming/Unzooming
+can be perfomed with the "Z" and "U" commands from nearly all
+the menus --- these commands are not listed to reduce clutter.
+
+Some of the menus also have their own Blowup/Reset commands.
+The distinction is that XFOIL's plots don't try to adjust
+themselves to Zoom parameters, so a highly-"Zoomed" plot may
+show nothing at all. In contrast, Blowup/Reset instructs
+XFOIL to change its own plot scales, so a highly-"Blown-up"
+plot will at least show the axes.
+
+
+Plot Hardcopy
+=============
+For hardcopy, the current screen plot can be echoed to a PostScript file
+plot.ps with the HARD command. The size of the plot objects on the
+screen and on hardcopy can be changed with the SIZE command from most
+menus. The number requested is the width of the plot in inches.
+
+
+*** NOTE ***
+If the plot.ps file is to be previewed with some X-Windows PostScript
+viewer, or imported into word-processing systems, XFOIL must be exited
+with QUIT in order for the plot.ps file to be properly terminated.
+For just printing, this may or may not be necessary.
+
+
+*** NOTE ***
+For the geometry plot in GDES, and the Qspec(s) plots in QDES and MDES
+(described below), the hardcopy plot size will also be affected if
+the graphics window is resized with the cursor at the window manager
+level. This is because the plot is always scaled so that it fills
+up as much of the window as possible. If the window size is left
+at its start-up size, the hardcopy plot widths will come out with the
+specified size in inches. If any window dimension is increased from
+its default value, then a subsequent hardcopy plot will probably not
+fit on a standard 8.5" x 11.0" sheet.
+
+
+Full-Inverse Design Routine (MDES)
+==================================
+XFOIL's Full-Inverse complex-mapping facility (MDES) takes as input
+a speed distribution "Qspec" specified over the entire airfoil surface,
+modifies it somewhat to satisfy the Lighthill constraints, and generates
+a new overall geometry. First a bit of the underlying theory...
+
+The geometry and the surface velocities can both be computed from
+a set of complex mapping coefficients "Cn" in the form
+
+ x + iy = z(w;Cn)
+ u - iv = f(w;Cn,alpha)
+
+where w= 0..2*pi is the independent parameter going around the airfoil.
+The z and f functions are rather complicated but this is not important
+here. The key to the full-inverse method is that the mapping coefficients
+Cn can be computed from a known contour angle theta(w) = arctan(dy/dz)
+OR from a surface speed q(w) = |u-iv|. The other quantity then follows.
+In summary, the operations and their commands are...
+
+ a) Direct problem: theta -> Cn -> u-iv, q (QSET)
+ b) Inverse problem: Qspec -> Cn -> x+iy, theta (EXEC)
+
+
+Creation of seed surface speed distribution
+-------------------------------------------
+MDES performs QSET and sets Qspec = q automatically upon entry
+if Qspec does not exist. This Qspec is then the starting point
+for subsequent design operations.
+
+This default initialization in effect makes MDES a redesign method
+in which the surface speed distribution of an existing airfoil is
+used as a starting point to generate a new speed distribution.
+A ``pure'' design code which requests the entire surface speed
+distribution every time is often less natural to use, since airfoil
+design is invariably an iterative process involving repeated
+analyze/fix cycles. The MDES menu is shown below.
+
+ <cr> Return to Top Level
+ ! Redo previous command
+
+ INIT Re-initialize mapping
+ QSET Reset Qspec <== Q
+ AQ r.. Show/select alpha(s) for Qspec
+ CQ r.. Show/select CL(s) for Qspec
+
+ Symm Toggle symmetry flag
+ TGAP r Set new TE gap
+ TANG r Set new TE angle
+
+ Modi Modify Qspec
+ MARK Mark off target segment for smoothing
+ SMOO Smooth Qspec inside target segment
+ FILT Apply Hanning filter to entire Qspec
+ SLOP Toggle modified-Qspec slope matching flag
+
+ eXec Execute full-inverse calculation
+
+ Plot Replot Qspec (line) and Q (symbols)
+ VISC Qvis overlay toggle
+ REFL Reflected Qspec overlay toggle
+ SPEC Plot mapping coefficient spectrum
+
+ Blow Blowup plot region
+ Rese Reset plot scale and origin
+ Wind Plot window adjust via cursor and keys
+
+ SIZE r Change absolute plot-object size
+ .ANNO Annotate plot
+ HARD Hardcopy current plot
+
+ PERT Perturb one Cn and generate geometry
+
+
+As described above, the initial Qspec distribution is taken from
+"Q", the speed distribution corresponding to the current
+geometry at the last angle of attack employed in OPER. Qspec
+can be set back to this Q with QSET anytime.
+
+
+Modification of surface speed distributions
+-------------------------------------------
+
+-- Cursor input of modifications --
+Qspec can be modified to whatever is desired with the MODI command
+by specifying points with the screen cursor which are then splined.
+The points can be entered in any order. The last point can be
+erased by clicking on the "Erase" button or simply typing "e"
+in the graphics window. The input sequence is terminated by
+clicking on the "Done" button or by typing "d" in the graphics window.
+The "Abort" button or typing "a" aborts the MODI command and
+returns to the MDES menu. The BLOW command can be used to enlarge
+regions of interest at any time by specifying opposite corners
+of the blowup region.
+
+-- Modification endpoint blending --
+Normally, the modified piece of Qspec(s) is blended into the current
+Qspec(s) with matching values and slopes at the piece endpoints.
+The slope matching can be turned on/off with the SLOP toggle command.
+If slope matching is turned off, the modified piece will match only
+the existing value, but a slope discontinuity will be allowed.
+
+-- Smoothing --
+Qspec can be smoothed with the SMOO command, which normally operates
+on the entire distribution, but can be confined to a target segment
+whose endpoints are selected with the MARK command. The smoothing
+acts to alleviate second derivatives in Qspec(s), so that with many
+consecutive SMOO commands Qspec(s) will approach a straight line
+over the target segment. If the slope-matching flag is set, the
+endpoint slopes are preserved.
+
+The FILT command is an alternative smoothing procedure which acts on
+the Fourier coefficients of Qspec directly, and is global in its effect.
+It is useful for "cleaning up" the entire Qspec(s) distribution if
+noise is present from some geometric glitch on the airfoil surface.
+Also, unintended noise might be introduced into Qspec from a poor
+modification via the cursor.
+
+FILT acts by multiplying the Fourier coefficients by a Hanning window
+filter function raised to the power of a filter parameter "F". This
+tapers off the high frequencies of Qspec to varying degrees. A value
+of F = 0.0 gives no filtering, F = 1.0 gives the standard Hanning filter,
+F = 2.0 applies the Hanning filter twice, etc. The standard Hanning
+filter appears to be a bit too drastic, so a filter parameter of
+F = 0.2 is currently used. Hence, issuing FILT five times corresponds
+to the standard Hanning filter. The SPEC command displays the mapping
+coefficient spectrum at any time.
+
+-- Symmetry forcing --
+The symmetry-forcing option (SYMM toggle) is useful when a symmetric
+airfoil is being designed. If active, this option zeroes out all
+antisymmetric (camber) Qspec changes, and doubles all symmetric
+(thickness) changes. This unfortunately has the annoying side
+effect of also doubling the numerical roundoff noise in Qspec
+every time a MODI operation is performed. This noise sooner or later
+becomes visible as high-frequency wiggles which double with each
+MODI command. Issuing FILT occasionally keeps this parasitic
+noise growth under control.
+
+-- Adjustment for Lighthill constraints --
+The MODI, BLOW, MARK, SMOO, SLOP, FILT commands can be issued repeatedly
+in any order until Qspec is modified to have the desired distribution.
+In general, the surface speed distributions actually plotted will not
+exactly match what was input with the cursor, since corrections are
+automatically added to maintain the specified trailing edge gap and
+to enforce consistency with the freestream speed. These are known
+as the Lighthill constraints on the surface speed.
+
+The trailing edge gap is initialized from the initial airfoil and can
+be changed with TGAP. To reduce the "corrupting" effect of the
+constraint-driven corrections, a good rule of thumb is that the
+Qspec distribution should be modified so as to preserve the total CL.
+The CL is simply twice the area under the Qspec(s) curve (= 2 x circulation),
+so that this area should be preserved.
+
+-- Multipoint surface speed display --
+A very useful feature of the MDES facility is the ability to display
+and modify a number of Qspec distributions corresponding to different
+alpha or inviscid CL values. These values are displayed and/or selected
+via the AQ or CQ commands. When any one Qspec distribution is modified,
+the result of modification is also displayed on all the other distributions.
+This allows rapid design at multiple operating points. When the Qspec
+curves correspond to specified CL values, the alpha for each curve will be
+adjusted after each Qspec modification so as to preserve that curve's CL.
+The resulting Qspec will therefore not match the input cursor points
+exactly because of this alpha correction.
+
+Generation of new geometry
+--------------------------
+The EXEC command generates a new buffer airfoil corresponding
+to the current Qspec distribution. If subsequent operations on
+this airfoil are to be performed (SAVE, OPER, etc.), it is
+necessary to first generate a current airfoil from this buffer
+airfoil using PANE at the top level menu. This seemingly
+complicated sequence is necessary because the airfoil points
+generated by EXEC are uniformly spaced in the circle plane,
+which gives a rather poor point (panel node) spacing distribution
+on the physical airfoil. This sequence also prevents the current
+airfoil from being overwritten immediately when EXEC is issued.
+Once the new current airfoil is generated with PANE, it can
+then be analyzed in OPER, modified in GDES, or whatever.
+
+The PERT command allows manual input of the complex mapping
+coefficients Cn which determine the geometry. These coefficients
+are normally determined from Qspec(s) (this is the essence of
+the inverse method). The PERT command is provided simply
+as a means of allowing generation of geometric perturbation
+modes, possibly for external optimization or whatever.
+
+The manually-changed Cn values result in changes in geometry
+as well as the current Qspec(s) distributions. The QSET command
+will restore everything to its unperturbed state.
+
+The Full-Inverse facility is very fast, after an initialization
+calculation of several seconds (on a RISC workstation), it requires
+only a fraction of a second to generate the new buffer airfoil.
+
+
+Mixed-Inverse Design Routine (QDES)
+===================================
+XFOIL's Mixed-Inverse facility (QDES) is useful in certain redesign
+problems where parts of the airfoil cannot be altered under any
+circumstances. The Mixed-Inverse menu is shown below.
+
+ <cr> Return to Top Level
+
+ QSET Reset Qspec <== Q
+
+ Modi Modify Qspec
+ MARK Mark off target segment
+ SMOO Smooth Qspec inside target segment
+ SLOP Toggle modified-Qspec slope matching flag
+
+ eXec i Execute mixed-inverse calculation
+ REST Restore geometry from buffer airfoil
+ CPXX CPxx endpoint constraint toggle
+
+ Plot Plot Qspec (line) and Q (symbols)
+ VISC Qvis overlay toggle
+ REFL Reflected Qspec overlay toggle
+
+ Blow Blowup plot region
+ Rese Reset plot scale and origin
+ Wind Plot window adjust via cursor and keys
+
+ SIZE r Change absolute plot-object size
+ .ANNO Annotate plot
+ HARD Hardcopy current plot
+
+
+The QDES menu above is intentionally geared for the redesign of a segment
+of an existing airfoil (with its surface speed distribution calculated
+previously in OPER) rather than the generation of a totally new airfoil.
+
+
+Creation of seed surface speed distribution
+-------------------------------------------
+When QDES is entered, the specified speed distribution Qspec is
+initialized to the current speed distribution Q last set in OPER.
+If a direct solution for the current airfoil hasn't been calculated yet,
+QDES goes ahead and calculates it, using the last-set angle of attack.
+If this isn't the desired angle, it can be set in OPER using ALFA.
+QSET can then be used to set Qspec from the current Q distribution.
+The QSET command can be used anytime later to "reset" Qspec if the
+modification has been botched.
+
+Modification of surface speed distribution
+------------------------------------------
+Qspec can be repeatedly modified with the screen cursor and the MODI
+command, exactly as in MDES. It is also necessary to mark off the
+target segment where the geometry is to be modified with the
+MARK command.
+
+Generation of new airfoil geometry
+----------------------------------
+EXEC modifies the airfoil over the target segment to match Qspec
+there as closely as possible. The remainder of the airfoil
+geometry is left unaltered. EXEC requests the number of Newton
+iterations to be performed in the inverse calculation. Although as
+many as six iterations may be required for convergence to machine zero,
+it is _not_ necessary to fully converge a Mixed-Inverse case. Two
+iterations are usually sufficient to get very close to the new
+geometry. In any case, the new surface speed distribution Q
+which actually results from the inverse calculation will typically
+differ somewhat from the specified distribution Qspec by function
+modes which are added to Qspec. At least two modes are added,
+with their magnitudes determined by geometric closure requirements
+at the inverse segment endpoints. As with the MDES complex-mapping
+routine, the necessary modifications to Qspec will be smallest if
+Qspec is modified so that CL (the area under the Qspec(s) curve) is
+roughly preserved.
+
+Issuing PLOT after the EXEC command finishes will compare the specified
+(Qspec) and resulting (Q) speed distributions. If extra smoothness
+in the surface speed is required, the CPXX command just before EXEC
+will enable the addition of two additional modes which allow the
+second derivative in the pressure at the endpoints to be unchanged
+from the starting airfoil. The disadvantage of this option is that
+the resulting surface speed Q will now deviate more from the
+specified speed Qspec. It is allowable to repeatedly modify Qspec,
+set or reset the CPXX option, and issue the EXEC command in any order.
+
+The Mixed-Inverse modification is performed on the current airfoil
+directly, in contrast to Full-Inverse which generates the buffer
+airfoil as its output. In fact, it is important _not_ to issue the
+PANE or PCOP commands at top level after doing work in the QDES menu,
+as the new current airfoil will be overwritten with the old buffer
+airfoil.
+
+
+Geometry Design Routine
+=======================
+Executing the GDES command from the top level menu will put the user
+into the GDES routine. It has a rather extensive menu:
+
+ <cr> Return to Top Level
+ ! Redo previous command
+
+ GSET Set buffer airfoil <== current airfoil
+ eXec Set current airfoil <== buffer airfoil
+ SYMM Toggle y-symmetry flag
+
+ ADEG r Rotate about origin (degrees)
+ ARAD r Rotate about origin (radians)
+ Tran rr Translate
+ Scal r Scale about origin
+ LINS rr. Linearly-varying y scale
+ DERO Derotate (set chord line level)
+
+ TGAP rr Change trailing edge gap
+ LERA rr Change leading edge radius
+
+ TCPL Toggle thickness and camber plotting
+ TFAC rr Scale existing thickness and camber
+ TSET rr Set new thickness and camber
+ HIGH rr Move camber and thickness highpoints
+ .CAMB Modify camber shape directly or via loading
+
+ BEND Display structural properties of buffer airfoil
+
+ Flap rrr Deflect trailing edge flap
+
+ Modi Modify contour via cursor
+ SLOP Toggle modified-contour slope matching flag
+
+ CORN Double point with cursor (set sharp corner)
+ ADDP Add point with cursor
+ DELP Delete point with cursor
+ MOVP Move point with cursor
+
+ UNIT Normalize buffer airfoil to unit chord
+ Dist Determine distance between 2 cursor points
+ CLIS List curvatures
+ CPLO Plot curvatures
+ CANG List panel corner angles
+ CADD ri. Add points at corners exceeding angle threshold
+
+ Plot Replot buffer airfoil
+ INPL Replot buffer airfoil without scaling (in inches)
+ Blow Blowup plot region
+ Rese Reset plot scale and origin
+ Wind Plot window adjust via cursor and keys
+
+ TSIZ Change tick-mark size
+ TICK r Toggle node tick-mark plotting
+ GRID Toggle grid plotting
+ GPAR Toggle geometric parameter plotting
+ Over f Overlay disk file airfoil
+
+ SIZE r Change absolute plot-object size
+ .ANNO Annotate plot
+ HARD Hardcopy current plot
+
+ NAME s Specify new airfoil name
+ NINC Increment name version number
+
+
+Creating seed buffer airfoil
+----------------------------
+The first command typically executed is GSET, which sets the temporary
+buffer airfoil from the current airfoil. Sometimes it might be desired
+to operate directly on the coordinates of an already existing buffer
+airfoil. It typically contains coordinates read in from a disk file
+by LOAD at Top Level, or coordinates generated by EXEC from the MDES
+menu, depending on what was done last. In either of these cases, GSET
+is skipped.
+
+Point addition (typ. to Eppler and Selig airfoils)
+--------------------------------------------------
+If the buffer airfoil has an excessively coarse point spacing,
+additional points can be added with the CADD command. Using the
+PANE command at top level also does this, but CADD allows the point
+addition to be restricted to locations with excessive corner angles
+(displayed with CANG), and also to locations which fall within a specified
+x-range. Different spline parameters can also be used to determine
+the inserted spline points. For example, the command
+
+ .GDES c> CADD 10.0 2 -0.1 0.2
+
+will add spline points adjacent to each existing point whose panel
+angle exceeds +/-10 degrees, and only if the added point will fall
+within the interval -0.1 < x < 0.2. The "2" indicates that an
+arclength spline parameter is to be used. The PANE command will
+always use the arclength spline.
+
+Some archived airfoils, notably the Eppler airfoils and some of the
+Selig airfoils have an excessively coarse point spacing around
+the leading edge. The spacing has apparently been tailored for
+a uniform-parameter spline, and often produces a badly shaped
+leading edge with the arclength-parameter spline used in Xfoil.
+The following command will insert additional points giving
+a much smoother shape for subsequent analysis.
+
+ .GDES c> CADD 10.0 1 -0.1 1.1
+
+The 10.0 degree angle tolerance can be varied as needed (1/2 of the max
+angle is the default). The "1" argument (also a default) specifies
+a uniform-parameter spline for the interpolation since this works best
+for Eppler airfoils), and the default x range indicates that the
+entire airfoil is to be treated. The CADD command can be repeated
+to keep reducing the max panel angle, but this may or may not
+improve the smoothness of the resulting splined airfoil.
+
+
+Modifying buffer airfoil
+------------------------
+Once the buffer airfoil is suitably initialized, most of the GDES
+commands can then be used to modify it. The resulting new shape
+will usually be replotted immediately in a highlighted color.
+The plot can be refreshed anytime with the PLOT command.
+
+Sometimes a sequence of commands is necessary to achieve the desired
+effect. For instance, suppose an airfoil with the current thickness
+envelope is to be given an entirely new camber line. Issuing TSET and
+hitting a <cr> (keep same thickness) and a new camber
+of 0 will result in the current thickness envelope unchanged and the
+current camber eliminated, so that a symmetrical airfoil remains.
+The new camber line can then be added in the CAMB sub-menu:
+
+ <cr> Return to GDES
+ TFAC rr Scale existing thickness and camber
+ TSET rr Set new thickness and camber
+ HIGH rr Move camber and thickness highpoints
+ WRTC Write airfoil camber x/c,y/c to file
+
+ RDAC Read added camber x/c,y/c from file
+ SETC Set added camber x/c,y/c from camberline
+ INPC Input added camber x/c,y/c from keyboard
+ MODC Modify added camber x/c,y/c with cursor
+ INPP Input added loading x/c,DCp from keyboard
+ MODP Modify added loading x/c,DCp with cursor
+ SLOP Toggle modified-camber,dCp slope matching flag
+ SCAL r Scale the added camber
+ CLR Clear the added camber
+ ADD Add added camber to the existing camberline
+
+ DCPL Toggle DCp plot
+ CPLI rr Change DCp axis plot limits
+
+ Blow Blowup plot region
+ Rese Reset plot scale and origin
+
+ SIZE r Change absolute plot-object size
+ .ANNO Annotate plot
+ HARD Hardcopy current plot
+
+..CAMB c>
+
+
+INPC takes the new camber line as a sequence of x/c,y/c coordinate
+pairs which are splined. INPP takes a sequence of x/c,delta(Cp)
+pairs instead. This delta(Cp) (i.e. loading) distribution, defined as
+
+delta(Cp) = (Cp)lower - (Cp)upper
+
+is then used in Glauert's thin-airfoil relations to define the
+x/c,y/c camber line.
+
+With INPC and INPP, a slope discontinuity in y(x) or Cp(x) can
+be specified with two identical consecutive x/c values, which
+prevents splining across this point. INPP can thus easily
+generate a camber line with a piecewise-linear delta(Cp) loading
+distribution, as for example an a=0.8 NACA 6-digit airfoil:
+ x/c delta(Cp)
+ 0.0 0.5
+ 0.8 0.5
+ 0.8 0.5
+ 1.0 0.0
+
+This results in a constant delta(Cp) = 0.5 for 0.0 < x/c < 0.8 ,
+then decreasing linearly to delta(Cp) = 0.0 for 0.8 < x/c < 1.0
+
+Once a suitable added camber is input, it is added to the
+existing buffer airfoil camber via the ADD command.
+
+
+The various GDES commands for modifying camber-line, thickness, leading
+edge radius, etc. should suffice for most geometry modification tasks.
+If truly frustrated, the user can "draw" the new contour with the MODI
+command, which accepts cursor inputs in the same manner as the MDES
+and QDES procedures. Slope matching at the modified-piece endpoints
+can likewise be enabled/disabled with the SLOP toggle command. The
+only important difference is that here the points must be entered
+in consecutive order along the new contour, although one can "erase"
+a previously-entered point by clicking on "Erase" or type "e" in the
+graphics window.
+
+A point can be doubled with the CORN command. A doubled point is
+useful wherever a sharp corner is required, such as at a flap break.
+Normally, the spline routine enforces slope continuity at all points,
+effectively preventing sharp corners. A doubled point, marked by
+a small diamond symbol on the plot, causes separate splines to be
+generated on each side of the corner, thus allowing the slope
+break. The doubled point is eliminated by clicking on it after
+issuing the DELP command. Using DELP on a normal single point will
+delete that point entirely.
+
+The TGAP command sets the thickness (or gap) of the blunt trailing edge.
+The gap "ds" is defined as the distance between the upper and lower
+coordinate endpoints: ds^2 = dx^2 + dy^2. If the gap is already nonzero,
+then the new TE base vector (dx,dy) will have the same orientation as
+the old one, i.e.
+
+ dy| dy|
+ --| = --|
+ dx| dx|
+ new old
+
+If the gap is zero to begin with, then the new base vector will be
+perpendicular to the trailing edge bisector. If the base orientation
+comes out in an unexpected way, it probably means that the gap was
+not *exactly* zero. The fix is to first set the gap to zero, and
+then set it again to the desired value.
+
+After a new gap size is input, a "blending distance/c" will also be
+requested. This controls how rapidly the new TE blends into the
+original airfoil, and is essentially the length scale for the blending
+function, which is exponential in x/c. The limiting values are:
+
+distance/c = 0: Only the upper- and lower-surface TE points are changed
+ = 1: A linear "wedge" is added or subtracted from the airfoil
+
+
+Saving buffer airfoil into current airfoil
+------------------------------------------
+Once the desired buffer airfoil is created, a new current airfoil is set
+directly from the buffer airfoil with the EXEC command (equivalent to
+PCOP at top level). Alternatively, the new current airfoil can be
+re-paneled from the buffer airfoil with the PANE command at top level.
+The new current airfoil can then be analyzed in OPER. If the buffer
+airfoil has any doubled corner points, the doubled points will be
+eliminated, but a current-airfoil node will fall exactly on each
+buffer-airfoil corner.
+
+
+
+Start-up Defaults
+=================
+XFOIL has hardwired parameters (in subr. INIT) controlling the
+paneling, plotting, and viscous execution. Most of these can
+be changed at runtime in the various menus. To avoid the need
+to change the parameters everytime XFOIL is executed, they
+can be saved to the default file xfoil.def with the WDEF
+command at TOP LEVEL. This file has the format:
+
+ 140 1.0000 0.1500 0.2000 | Npan PPanel TErat REFrat
+ 1.0000 1.0000 1.0000 1.0000 | XrefS1 XrefS2 XrefP1 XrefP2
+ 10.0000 0.5500 0.0150 0.8500 | Size plotAR CHsize ScrnFr
+ 11.0000 8.5000 0.0000 0.0000 | Xpage Ypage Xmargn Ymargn
+ F T | Lcolor Lcursor
+ 1.0000 -2.0000 -0.5000 | CPmax CPmin CPdel
+ 0.0900 0.7000 | XoffAir ScalAir BLUwt
+ 0.0000 1.5000 0.5000 | CLmin CLmax CLdel
+ 0.0000 0.0200 0.0100 | CDmin CDmax CDdel
+ -4.0000 10.0000 2.0000 | ALmin ALmax ALdel
+ 0.0000 0.3000 0.1000 | CMmin CMmax CMdel
+ 1 0.0000 0.0100 | MAtype Mach Vaccel
+ 1 0.0000 9.0000 | REtype Re/10^6 Ncrit
+ 1.0000 1.0000 | XtripT XtripB
+
+Line 1: Paneling parameters from the PPAR menu
+Line 2: Paneling refinement locations
+Line 3: Specifies the absolute plot size, the plot aspect ratio,
+ and scales the character, number, and symbol heights
+Line 4: Defines page size and page margins, in inches
+Line 5: Flags for color PostScript output, cursor screen input
+Line 6: Defines the Cp axis annotations
+Line 7: x-offset and scale for airfoil on Cp vs x plot, BL u profile scale
+Line 8: CL axis annotations on polar plot
+Line 9: CD axis annotations on polar plot
+Line 10: alpha axis annotations on polar plot
+Line 11: CM axis annotations on polar plot
+Line 12: Mach-CL dependence type, Mach number, solution acceleration parameter
+Line 13: Re-CL dependence type, Reynolds number, transition parameter
+Line 14: Forced transition x/c locations on top,bottom sides
+
+This file will be read at any time with the RDEF command, thus
+avoiding the manual entry of all the information.
+
+
+Caveats
+=======
+The XFOIL code is not foolproof, and requires some level of aerodynamic
+expertise and common sense on the part of the user. Although the
+inviscid analysis (OPERi), geometry design (GDES), and Full-Inverse
+(MDES) routines are nearly invulnerable to failure, the Mixed-Inverse
+(QDES) design routines and especially the viscous analysis (OPERv)
+routines will fail if a "reasonable" problem is not specified.
+Typical failure scenarios are:
+
+ - Viscous Analysis (OPERv)
+ * Massive separation from excessive airfoil thickness,
+ flap deflection, or angle of attack
+ * Inherently unsteady flow (von Karman vortex street, etc.)
+ * Poor resolution of leading edge pressure spike
+ * Poor resolution of small viscous features
+ (e.g. separation bubbles)
+ * Reynolds number too low
+
+ - Mixed-Inverse Surface Speed Design (QDES)
+ * Re-entrant airfoil shape (negative thickness)
+
+A possible consequence of these occurences is an arithmetic fault
+causing program failure. This is unlikely, but it does happen
+occasionally. It is therefore a good idea to save any previous work
+before an ambitious calculation is attempted.
+
+
+The following situations may give problems strictly due to numerical
+roundoff:
+
+ - Excessively small panel(s) somewhere on the airfoil
+
+ - Airfoil located too far from origin
+
+ - Airfoil too thin
+
+These situations will rarely result in an arithmatic failure,
+but will typically result in a "ragged" Cp distribution.
+Examine the paneling in the GDES menu, making the GSET command
+if neceesary to set the current paneling. Eliminate excessively
+small panels my deleting one or more panel nodes with the
+DELP command.
+
+
+When performing viscous analysis calculations, it is always a good idea
+to sequence runs so that alpha does not change too drastically from one
+case to another. The Newton solution method always uses the last
+available solution as a starting guess for a new solution, and works
+best if the change from the old to the new solutions is reasonably
+small. For this reason, it is best to perform difficult calculations
+(such as past CLmax) by gradually increasing alpha. The ASEQ command in
+OPER is convenient for this. If the user insists on a large change from
+one point to another, it is best to force a re-initialization of the
+boundary layers with the INIT command from the VPAR menu in OPER before
+the radical calculation is performed. INIT should always be executed
+whenever the viscous solution blows up but the program doesn't crash.
+
+The viscous analysis will execute no more Newton iterations than
+set by the current iteration limit each time an ALFA, CL, etc. command
+is issued. If convergence is not achieved within this limit, ALFA or CL
+can be issued as often as needed (most easily with "!"), with another
+set of Newton iterations being performed each time. This iteration
+limit can be changed from its default value of 10 with the ITER command
+in OPER.
+
+One should always be wary of trusting solutions which show regions
+of supersonic flow. Such flows can be reliably predicted only with
+a truly nonlinear field method (such as the MSES code). As a rule
+of thumb, if the maximum Mach number doesn't exceed 1.05 anywhere,
+shock losses will be very small, the Cp distributions will be
+reasonably accurate, and the drag predicted by XFOIL is likely
+to be accurate.
+