JavaFoil Users Guide
JavaFoil Users Guide
Martin Hepperle
22-December-2017
Contents
Contents ................................................................................................................................................. 1
JAVAFOIL .................................................................................................................................................. 2
Limitations ............................................................................................................................................2
JAVAFOIL’s Cards ................................................................................................................................... 3
The Geometry Card..............................................................................................................................3
JAVAFOIL’S Geometry Generators ........................................................................................................5
The Modify Card ................................................................................................................................ 17
The Flowfield Card ............................................................................................................................ 19
The Aircraft Card ............................................................................................................................... 21
The Panel Method ................................................................................................................................ 22
Boundary Layer Analysis ................................................................................................................... 23
Transition Criteria .............................................................................................................................. 23
Effect of Roughness .......................................................................................................................... 25
Stall Corrections ................................................................................................................................ 26
Compressible Flow .............................................................................................................................. 29
Critical Pressure Coefficient .............................................................................................................. 29
Compressibility Corrections .............................................................................................................. 29
Finite Wings in JAVAFOIL ..................................................................................................................... 30
Swept Wings in JAVAFOIL .................................................................................................................... 35
The Aerodynamic Center .................................................................................................................... 37
Effect of a Ground Surface ................................................................................................................. 38
Effect of a Water Surface .................................................................................................................... 39
Multi-Element Airfoils .......................................................................................................................... 41
Automating JAVAFOIL with a Script .................................................................................................... 43
References ........................................................................................................................................... 44
Version History .................................................................................................................................... 45
1
JAVAFOIL
JAVAFOIL is a relatively simple program, which uses several traditional methods for the
analysis of airfoils in subsonic flow.
The main purpose of JAVAFOIL is to determine the lift, drag and moment characteristics of
airfoils. The program will first calculate the distribution of the velocity on the surface of the
airfoil. For this purpose it uses a potential flow analysis module which is based on a higher
order panel method (linear varying vorticity distribution). This local velocity and the local
pressure are related by the Bernoulli equation. In order to find the lift and the pitching
moment coefficient the distribution of the pressure can be integrated along the surface.
Next JAVAFOIL will calculate the behavior of the flow layer close to the airfoil surface (the
boundary layer). The boundary layer analysis module (a so called integral method) steps
along the upper and the lower surfaces of the airfoil, starting at the stagnation point. It solves
a set of differential equations to find the various boundary layer parameters. The boundary
layer data is then be used to calculate the drag of the airfoil from its properties at the trailing
edge.
Both analysis steps are repeated for each angle of attack, which yields a complete polar of the
airfoil for one fixed Reynolds number.
Additional tools for the creation and modification of airfoils have been added to fill the
toolbox. These tools are wrapped in a Graphical User Interface (GUI) which was designed to
be easy to use and not overly complicated. The GUI is organized into a stack of cards, which
will be described later.
All calculations are performed by a computer code of my own. JAVAFOIL is neither a rewrite
of Eppler’ PROFIL nor of Drela’s XFOIL program. The boundary layer module is based on
the same equations which are also used in the initial version of the Eppler program. Additions
include new stall and transition models. The panel method was developed with the help of the
extensive survey of panel methods found in [14].
Compared with similar programs, JAVAFOIL can also handle multi-element airfoils and also
simulate ground effect.
Limitations
As already noted, JAVAFOIL is a relatively simple program with some limitations. Like with
all engineering computer codes, it is up to the user to judge and to decide how far he wants to
trust a program.
As JAVAFOIL does not model laminar separation bubbles and flow separation, its results will
become inaccurate if such effects occur. The boundary layer method does not include any
feedback to the potential flow solution, which means that it is limited to mostly attached
flows. Flow separation, as it occurs at stall, is modeled to some extent by empirical
corrections, so that maximum lift can be estimated for conventional airfoils. If you analyze an
airfoil beyond stall, the results will be quite inaccurate. On the other hand, it is somewhat
questionable, whether any two-dimensional analysis method can be used at all in this regime,
as the flow field beyond stall becomes fully three dimensional with spanwise flow and strong
vortices developing.
In the case of multi element airfoils, one must be aware, that in the real world very complex
flows can develop due to interaction of trailing wakes and the boundary layers of the
individual elements or if the boundary layers separate locally. An accurate analysis would
require a more sophisticated solver for the Navier-Stokes equations, which would also imply
an increase in computer time in the order of 1000. Nevertheless a simple tool like JAVAFOIL
can be helpful to estimate the main effects and to improve a design to avoid suction peaks and
flow separation.
2
JAVAFOIL’s Cards
The user interface of JAVAFOIL is divided into a stack of cards. Each card contains interface
elements for a specific task. The content of some cards is also relevant for actions executed on
other cards, for example the Mach number specified on the Options card affects the analyses
on all other cards.
The coordinates must be ordered so that they describe the shape in a continuous sequence.
The order must be “trailing edge” → “upper surface” → “nose” → “lower surface” →
“trailing edge”.
JAVAFOIL comes with a set of shape generators for a variety of airfoils which is accessible
from this card. These airfoils represent classical airfoil sections for which analytical
descriptions exist (e.g. NACA sections) or which can be constructed from geometrical
constraints (e.g. wedge sections). Despite their age, many classical airfoil sections are still
applicable to many problems or form a good starting point for new developments.
Today, modern airfoil sections are usually developed for specific purposes and their shapes
are usually not published. More recent developments lead towards the direct design of three-
dimensional wing shapes, eliminating the classical steps of two-dimensional airfoil design and
three-dimensional wing lofting. In most cases, modern airfoil sections are not described
anymore by analytical formulas, just by a set of points.
The row of buttons at the bottom allows for copying, saving, loading and printing of airfoil
coordinate sets.
3
Figure 1: View of JAVAFOIL’s Geometry card.
4
*.txt
multi-element airfoil geometry in form of simple x-y coordinate sets arranged in two
columns. The elements of multi-element airfoils must be separated by a pair of x-
and y-values each having a value of 999.0 or larger.
*.xml
multi-element airfoil geometry in JAVAFOIL’s hierarchically structured xml format.
*.png, *.gif, *.bmp, *.jpg
single element airfoil geometry from an image file. For details, see next section.
Note that JAVAFOIL selects the input file format according to the file name extension.
Figure 2: Airfoil image (top) and comparison of the original (dashed) and the reconstructed airfoil shape
(solid) using JAVAFOIL’s bitmap import capability on the Geometry card.
5
follow this construction principle and add the thickness just to the y-coordinates of the camber
line. This leads to larger deviations from the true airfoil section when the camber line is
inclined, e.g. close to the leading edge or close to the trailing edge of airfoils with a high
amount of aft camber.
The correct construction method may lead to points extending slightly into the negative x-
range, when a large amount of camber is located close to the leading edge. This is a correct
behavior and an expected result.
Note also that most NACA sections have a thick trailing edge by definition. In order to
produce a thin, sharp trailing edge, JAVAFOIL has an option to close the airfoil shape by
bending the upper und lower surfaces to close the trailing edge.
The camber lines are composed of two parabolic arcs, which are joined with equal tangents,
but a kink in the curvature. This kink can be seen in the velocity distributions, especially
when the position of the maximum camber is different from the common 40% chord station.
Parameters:
● Free: t / c , f / c , x f / c
● Fixed x t / c 0.3
Naming Scheme
The first two integers define the camber line, while the last two integers define the thickness.
● 1st digit: maximum ordinate of camber 100 f / c
● 2nd digit: location of maximum camber 10 x f / c
● 3rd and 4th digit: maximum thickness 100 t/ c
Example:
NACA 2412: 2% camber at 40% chord, 12% thickness
The thickness distribution for the 10% thick section is given by the polynomial:
y = 0.29690 x 0.12600 x 0.35160 x 2 + 0.28530 x 3 0.10150 x 4
The coefficients of this thickness distribution had been chosen according to the following four
constraints [4] (for a 10% thick section):
● maximum thickness occurs at x / c 0.3 → yx 0.3 0 ,
6
● finite thickness at trailing edge of yc 0.004 ,
● finite trailing edge angle at x / c 1.0 → yx 1.0 0.234 ,
● nose shape defined by y / c 0.078 at x / c 0.1 .
Parameters:
● Free: t / c , f / c , x t / c , x f / c , r
Naming Scheme
The name consists of a 4 digit prefix which is identical to the 4-digit series designation,
followed by a dash and two additional digits.
● 1st digit: maximum ordinate of camber 100 f / c
● 2nd digit: position of the maximum camber 10 x f / c
● 3rd and 4th digit: maximum thickness 100 t/ c
● dash
● 5th digit: indicates the leading edge radius and is usually one of 0, 3, 6, or 9:
o 0: sharp leading edge,
o 3: ¼ normal radius,
o 6: the normal radius of the 4-digit series,
o 9: 3 times the normal radius.
● 6th digit: position of the maximum thickness 10 x t / c
Example:
NACA 1410-35: 1% camber at 40% chord, 10% thickness, reduced leading edge radius,
maximum thickness at 50% x/c
7
Figure 5: Parameters of NACA 5-digit airfoil sections.
Parameters:
● Free: t / c , x f / c , C design
● Fixed x t / c 0.3
Naming Scheme
● 1st digit: design 10 2 / 3 C design
● 2nd and 3rd digit: 2 100 x f / c . Note that the 3rd digit is usually a zero, i.e. the
position of the maximum camber is a multiple of 5%.
● 4th and 5th digit: maximum thickness 100 t/ c
Example:
NACA 23012: design lift coefficient 0.3, maximum camber at 15% chord, 12% thickness.
Parameters:
● Free: t / c , x f / c , C design
● Fixed x t / c 0.3
Naming Scheme
● 1st digit: design 10 2 / 3 C design
● 2nd and 3rd digit: 2 100 x f / c plus 1. Assuming that the position of the maximum
camber is a multiple of 5% the 3rd digit is always a 1.
● 4th and 5th digit: maximum thickness 100 t/ c
Example:
NACA 23112: like NACA 23012: design lift coefficient 0.3, maximum camber at 15%
chord, 12% thickness, but with a reflexed aft camber line.
8
NACA 1-series airfoils
The development of these airfoils was aiming at high subsonic speed applications like
propellers (see [5]). Their shape was designed with the help of the new (that is, in the 1930s)
numerical design methods. JAVAFOIL can create airfoils of the NACA-16 type, which are the
only members of the 1-series published by NACA. The maximum thickness and the
maximum camber are located at 50% chord, whereas the minimum pressure is reached at 60%
of the chord length.
Parameters:
● Free: t / c , C design
● Fixed x f / c 0.5 , x t / c 0.5
Naming Scheme
● 1st digit “1”: series designation
● 2nd digit: position of minimum pressure of the thickness distribution 10 x / c
● a dash
● 3rd digit: 10 C design
● 4rd and 5th digit: maximum thickness 100 t/ c
Example:
16-212: 1-series, minimum pressure at 60% chord, design lift coefficient 0.2, 12%
thickness.
While these airfoil shapes are not based on analytical expressions, the published coordinates
have been approximated to produce an accurate representation of these airfoils. The camber
lines used are of the uniform load type (a=1.0, see next section about NACA 6-series airfoils).
The 63, 64, 65, 66 and 67 families can be combined with camber lines of the a 0 to a 1
type.
9
The 63A, 64A, and 65A sections use a modified a 0.8 camber line which is straight aft of
x / c 0.8 . The thickness distribution of these airfoils has also been modified to yield
straight lines from x / c 0.8 to the trailing edge.
The “a” camber line shapes are specified in terms of the design lift coefficient and the
position x/c where the constant loading ends. This is indicated with an additional a x.y
label in the airfoil name.
If you specify a 1 in JAVAFOIL’s input, the camber line has a constant loading from leading
edge to trailing edge. The resulting airfoils do not carry the “a” label.
Naming Scheme
● 1st digit “6”: series designation
● 2nd digit: chordwise position of minimum pressure of the thickness distribution
10 x / c
● single digit suffix following a comma, which is 10 C . It represents the range
C above and below C design where favorable (accelerating) pressure gradients
for laminar flow exist (therefore C is approximately the semi-width of laminar
bucket)
● a dash
● 3rd digit: design 10 C design
● 4rd and 5th digit: maximum thickness 100 t/ c
A camber line shape different from a 1.0 is indicated by the additional designation
a x.y , where x.y is replaced by the location x / c where the constant part of the loading
ends and the linear drop towards the trailing edge starts..
Parameters:
● Free: t / c
● Fixed x t / c 0.3388 , maximum (positive) camber at x f / c 0.3018 ,
minimum (negative) camber at x f / c 0.9204 .
10
● The maximum camber is linked to the thickness by the expression
f / c 0.168 t / c .
!!! I am still looking for more information about Russian airfoil developments.
Parameters:
● Free: t / c , x t / c
After some reverse engineering, I have used the following assumptions for these airfoils:
● the trailing edge thickness is 2% of the airfoil thickness,
● in case of the “C” and “Q” series the rear end is attached with C0, C1, C2
continuity (position, tangent, curvature) to the elliptic front part,
● in case of the “Q” series the second derivative at the trailing edge is set to -0.2,
(this gave the best approximations for 1240 to 1260 airfoils),
● the “H” modification closes the thick trailing edge by a hyperbolic curve which is
attached with C0, C1 continuity (position, tangent) to the thickness distribution at
x / c 0.965 .
Camber lines are 3rd order polynomials which allow to place the location of the maximum
camber approximately between 30 and 60% of the chord length.
Note: I am still looking for the “official” description of the airfoil geometry of the EQ and
EQH aerofoils, especially how the quartic curve was defined and how the hyperbolic closure
was attached to the quartic curve. It seems to be that the procedure to generate these shapes
was not published.
Biconvex airfoils
These are symmetrical airfoils, formed by two arcs. They can be represented by the following
formula:
y a x x b
The exponent b can be found from the location of the maximum thickness, i.e. the point
where y / x 0
1
1 b1
x t max ,
b
while the factor a depends on the value of the maximum thickness:
11
tmax 2 a x t max x bt max
If the maximum thickness is placed at x / c 0.5 , the airfoil is composed of two equal
circular arcs. These airfoils are normally used for application in supersonic flow.
Parameters:
● Free: t / c , x t / c
Parameters:
● Free: t / c , x t / c
Plate airfoils
The thickness distribution of these sections represents a plate with a rounded nose and a sharp
trailing edge. The nose shape is formed by a so called Cassini curve, which provides a smooth
curvature transition to the flat part of the surface. The trailing edge closure is modeled by a
cubic parabola. This thickness distribution is superimposed over a NACA 4-series camber line
to produce a cambered plate.
12
Parameters:
● Free: t / c , f / c , x f / c
● Fixed: Leading edge shape. The trailing edge closure begins at x / c 0.8
Newman airfoils
These sections consist of a circular nose to which straight tapered tail is attached. It can be
manufactured easily, but has a curvature jump at the junction between the nose and the
trailing wedge, leading to suction peaks and a risk of flow separation.
Parameters:
● Free: t / c
Joukowsky airfoils
These classical airfoil sections are generated by applying a conformal mapping procedure.
They were the first practical airfoils developed on a theoretical model. Besides producing the
airfoil shape, the mapping procedure was also used to find the flow field around the airfoil as
well as the force and the moment acting on the wing section. The airfoils have very thin
cusped trailing edges and are therefore difficult to analyze with panel methods and difficult to
manufacture.
The conformal mapping is performed using the Joukowsky transformation of the complex
points zcircle on a unit circle with is center at x 0 , y0 .
2
zairfoil zcircle , where x 0 1 y20 .
zcircle
In order to match the prescribed airfoil thickness and camber, JAVAFOIL performs an iterative
search for the center of the circle. As usual, the resulting coordinates are scaled to unit length.
Parameters:
● Free: t / c , f / c
13
k
1 zcircle
zairfoil k1 .
zcircle
They can be used to create sections with thick trailing edge regions e.g. for fairings. A
description of this shape can be found in [14].
Note that not all thicknesses can be achieved for all trailing edge angles; therefore the final
maximum thickness may not be what was desired. Also only symmetrical sections are
generated in JAVAFOIL.
Parameters:
● Free: t / c , TE
Helmbold-Keune airfoils
In the 1940s many attempts were made to extend the then classical NACA airfoil section
methodology to more general airfoil shapes. Helmbold and Keune [15] developed elaborate
methods to characterize and parameterize airfoil sections. While the mathematical approach
allowed for representation of a wide range of shapes, the methodology was not really
successful in these years of manual calculation. Later in the age of numerical shape
optimization similar methods have been developed, e.g. the Parsec shape functions.
The parameters of the symmetrical airfoil must be carefully chosen to generate a realistic
airfoil shape. The center curvature must be large enough to avoid self-crossing of the outline.
Parameters:
Free: t / c , x t / c , trailing edge angle, curvature radius at middle, nose radius.
Roßner airfoils
Another algorithm to generate analytical airfoil shapes based on conformal mapping was
published by Roßner [16]. Like all methods using conformal mapping, his solution also
allowed for the exact analytical determination of the corresponding pressure distributions.
14
Figure 17: Parameters of Roßner airfoil sections.
Parameters:
Free: t / c , x t / c , trailing edge angle, nose radius.
Parsec airfoils
The Parsec geometry parameterization was developed by H. Sobietzky in the 1990s. It tries to
model airfoil shapes by superposition of selected polynomial terms. The parameters resemble
the Helmbold-Keune approach and are mainly intended to be used for numerical shape
optimization. JAVAFOIL implements the so called Parsec-11 formulation which uses 11
parameters. The parameters of the airfoil must be carefully chosen to generate realistic airfoil
shapes. The center curvature parameters, the nose radius as well as the trailing edge wedge
angle must be carefully adjusted to avoid self-crossing of the outline.
Parameters:
Free: leading edge radius parameter P1 , ( P2 , P3 ) and ( P4 , P5 ) the coordinates of
control points on the upper and the lower surfaces, P6 and P7 curvature control
parameters for upper and lower surfaces, P8 the trailing edge vertical position, P9 the
gradient of the camber line at the trailing edge, P10 the trailing edge slenderness, and
P11 the bluntness angle at the trailing edge.
Horten airfoils
The Horten brothers are well known for their development of flying wing airplanes. For most
of their wings, they used airfoil sections with a reflexed camber line. These were based on a
camber line of low or zero pitching moment (following the thin airfoil theory of Birnbaum) to
which a thickness distribution was added. A description of these rather simple functions can
be found in [17].
15
Figure 18: Parameters of Horten airfoil sections.
Parameters:
● Free: t / c , f / c
● Fixed x t / c 0.293 , maximum camber at x f / c 0.25 .
DHMTU airfoils
The stable flight of ground effect vehicles depends on wing planform and airfoil shape. This
family of flat bottom airfoils has been developed for this specific application at the
Department of Hydromechanics of the Marine Technical University in Saint Petersburg,
Russia. Similar to the NACA 4-digit series, the airfoil shape is composed of polynomial
segments and a straight lower surface. Their camber line is slightly reflexed and the outline
between points 2 and 3 is a straight line segment. A description of the shape can be found in
[18].
Parameters:
● Free: point x1 / c, y1 / c on the upper and points x 2 / c, y2 / c and x 3 / c, y3 / c
2
on the lower surface, a nose radius parameter k r / c / y1 / c and the
gradient y / x on upper surface at the trailing edge.
Guderley airfoils
This shape was derived from theoretical considerations of sonic flow and is of mostly
academic interest. It is characterized by an accelerating flow with a linear pressure
distribution in the forward portion followed by a set of expansion waves. The maximum
thickness is located at x / c 3 / 5 . A description of the shape can be found in [26].
Parameters:
Free: t / c .
16
The Modify Card
This card can be used to perform various modifications to the airfoil geometry. It consists of
an input and action area and a geometry view below.
The modification of parameters is performed by entering new values into a text field and then
pressing the button at the left of the text field or pressing the “Enter” key while the focus is
still in the text field. Thus it is easy to apply certain operations several times. Any
modification will only be applied to the airfoil elements which are currently selected in the
“Element” list box.
The geometry view is automatically scaled to fit all airfoil elements. The currently selected
elements are highlighted in red.
Figure 21: View of the Modify card showing a two-element airfoil with element #2 selected.
17
Figure 22: View of the controls on the Modify card.
18
FLIP Y
Reflects the selected elements across a horizontal line passing through the pivot
point.
SMOOTH Y
This command uses the smoothing factor specified in the text field to the right of the
button. Currently it supports two smoothing variants:
If the smoothing factor is positive, the coordinates are approximated by a smoothing
spline curve. A reasonable smoothing factor is 0.1.
If the smoothing factor is negative, a filter is applied to the y-coordinates to reduce
waviness. This filter applies a weighted average to each point and its two neighbor
points. If for example the smoothing factor is -0.1, the y coordinate of the smoothed
point is 90% of its initial value and 10% of the linear interpolation between the two
neighboring points according to:
s si1
y i 1 f y i f y i1 + y i1 y i1 i
si1 si1
This filter can be applied several times, but subsequent application will also smooth
out details like a pointed airfoil nose.
You can also modify individual points by dragging them up or down with the left mouse
button depressed. This modification method is restricted to movements in the y-direction. If
you need more freedom, you have to modify the numerical coordinate values on the Geometry
card.
The COPY (TEXT) command button at the bottom of the card copies the airfoil geometry to the
clipboard with the following data:
a table with the x-y coordinates, similar to the copy on the GEOMETRY card, but
additionally with the local curvature 1/r, and
a second table with the coordinates of the camber line and the thickness distribution as
reconstructed from the airfoil shape.
Then the local velocity over a rectangular grid of points is calculated. This calculation uses
the vorticity distribution on the surface and neglects friction. Therefore you will not see flow
separation or a viscous wake behind the airfoil.
It is possible to display either the ratio of the local velocity to the freestream velocity v/V or
the local pressure coefficient.
19
Moving the mouse pointer over the colored field shows the corresponding pressure coefficient
or velocity ratio at the bottom of the screen.
ANALYZE IT! Performs the analysis of the flow field and if selected the integration of
the path of streamlines. Note that the classical Runge-Kutta scheme used to integrate
streamlines with increased accuracy can take quite some time. Standard accuracy uses
a fast but simple forward stepping Newton algorithm which introduces larger errors in
regions of high curvature. Progress is indicated in the status line.
COPY (TEXT) copies the field data to the clipboard in tabular format suitable for
plotting with the Tecplot software. Remember that you can copy or export the picture
using the context menu of the graph window.
INTEGRATE uses the momentum equation to integrate the momentum and the pressure
field along a circular path with a radius of 50 around the airfoil. As we neglect friction
and hence follow d’Alembert’s thoughts, the result should produce zero drag, but a lift
coefficient close to what we obtain from the integration of the surface pressure.
Remember that the lift coefficient given in the table includes friction and the effect of
the stall model, so that both results can only agree if the Reynolds number is rather
high. The result is displayed in a message box and also copied to the clipboard.
Figure 23: View of the Flowfield card showing an airfoil with times streamlines.
20
Integration along circular path with R = 50.0
x-y system
momentum + pressure = total
| Fx | = | -0.0596 | + | -0.0596 | = | -0.1193 |
| Fy | = | 0.3382 | + | 0.3382 | = | 0.6763 |
Figure 24: Result of momentum and pressure integration over a circular path around the airfoil.
Compare the lift coefficient with the value obtained from surface pressure integration (The stall model
was set to “none” on the Polar card). The total force is the result of the change of the momentum passing
through the control volume and the pressure acting on the surface of the control volume. Note that the
pressure part is very important, even if the integration boundary is far away from the airfoil.
g m
CL
.
v 2 S
2
Solving the definition of the Reynolds number with the chord length c
v c
Re
for the flight speed v and inserting into the lift coefficient gives μs
g m
CL 2
.
Re S
2 c
c 2g m
Re
CL S
21
Yields the desired relation between lift coefficient and Reynolds number as it is seen by and
aircraft with a rectangular wing planform. The design parameters directly related to the
aircraft and its wing are wing loading m S and chord length c .
22
JavaFoil Panel Method
20
16
12
10
0
0 20 40 60 80 100 120
number of points on airfoil
Figure 25: Graph of the solution time versus number of points on the airfoil (Pentium 4, 2.4 GHz).
Note: the local skin friction coefficient as given on the Boundary Layer card is twice the value
as used by Eppler to follow the more common convention Cf 0 / 2 v2 .
In JAVAFOIL there is no interaction between the boundary layer and the external flow, as in
XFOIL, though. Therefore largely separated flows cannot be analyzed – a short flow
separation ( sseparated / c 10% ) at the trailing edge does not affect the results very much. Also
laminar separation bubbles are not modeled; when laminar separation is detected the code
switches to turbulent flow.
Transition Criteria
Methods to predict transition from laminar to turbulent flow have been developed by many
authors since the early days of Prandtl’s boundary layer theory. While it is possible to analyze
the stability of a boundary layer numerically, all methods which are practical and fast are
more or less approximate and rely on empirical relations (usually derived from experiments).
Because the local boundary layer parameters at a station s are the result of an integration
process starting at the stagnation point, they contain a “history” of the flow.
Local Criteria
Many methods predict transition by applying a criterion based on local boundary layer
parameters. These criteria are based on relations, which can be evaluated at any station along
the surface. They do not need an extra integration of some instability parameter, but of course
are affected by the “history” of the flow. Most of these criteria are relating Re2 to the shape
of the boundary layer profile.
23
Eppler
Transition is assumed to occur when Re2 e18.4H32 21.740.36r .
Eppler enhanced
2
18.4H32 21.74 125H 32 1.573 0.36r
Transition is assumed to occur when Re2 e .
Michel (1)
This simple criterion assumes transition to occur when Re2 1.535 Res 0.444 .
Michel (2)
Transition is assumed to occur when Re2 1.174 1 22400 / Res Res 0.46 . See [24].
H12-Res
Transition is assumed to occur when 2.1<H12 <2.8 and
log10 Res 40.4557 64.8066 H12 26.7538 H122 3.3819 H12 3 . See [25].
Drela approximates the envelopes of the amplification rate n versus Re2 by straight lines of
f Re2 , H12 . Two versions of this approximation were used in his codes of the
the form n
XFOIL and MSES/ISES family.
24
n
0.0345
0.028 H12 1 - 2
Re2 -
3.87
-2.52
e H12 -1
0.43
14 1
log10 Re2 ,crit 0.7 tanh
- 9.24 2.492 0.66
H12 - 1 H12 - 1
Method of Arnal:
A set of tables produced by D. Arnal has been approximated by W. Würz with polynomials:
n
2
a1 a 2 H12 a 3 H12
Re2
log10 Re2 ,crit b1 b2 H12 b3 H12
2
Here the envelope is not a straight line as in Drela’s method. For details see [21].
In JAVAFOIL transition is assumed to occur when the value n crit 9 r is exceeded.
Method of Granville
This method is not described here. It also works by integrating a stability parameter starting
from a point of instability.
Abbreviations:
approximation of n
n
roughness factor (0 = smooth) r
displacement thickness 1
momentum thickness 2
shape factor displacement thickness / momentum thickness H12 1
2
Reynolds number based on local momentum thickness Re2 Re
Reynolds number based on local arc length Res
Effect of Roughness
The effect of roughness on transition and drag is complex and cannot be simulated accurately.
Even modern resource hungry direct numerical simulation methods have difficulties to
simulate the effect.
In JAVAFOIL two effects of surface roughness are modeled:
■ laminar flow on a rough surface will be destabilized leading to premature transition,
■ laminar as well as turbulent flow on rough surfaces produce a higher skin friction drag.
25
The effect on toughness is modeled in the following transition models
Eppler Transition is assumed to occur when Re2 e18.4H32 21.740.36r .
Standard
Eppler 2
18.4H32 21.74 125H 32 1.573 0.36r
Transition is assumed to occur when Re2 e .
enhanced
Drela, Transition is assumed to occur when the value n crit 9 r is exceeded.
n
e approx.
Arnal Transition is assumed to occur when the value n crit 9 r is exceeded.
(Würz)
The global effect on drag is taken into account by a simple scaling of the total drag coefficient
Cd Cd 1 r /10
Note that the NACA standard roughness is usually applied to the leading edge only. It
consists of a sparse (5-10% of the area) leading edge coating up to 8% x/c. The grain size is
about 0.45‰ of the chord length. Thus for a wing chord length of 1m the grain size would be
0.45mm.
Stall Corrections
Empirical Stall Correction #1 („CalcFoil“)
if ( 0 )
{
// handle separation on upper surface
// drag increment
2 2
Cd, upper Cd, upper sin2 x TE x sep, upper 0.025 cos x TE x sep, upper
// moment multiplier
Cm, corrected Cm, panel method 0.9 x2sep, lower x2sep, upper
C Cl, max, fudge TE x TE x sep, upper
if ( C 0 )
{
// lift reduction
C C C
}
else
{
// lift multiplier
C C 1 sin x TE x sep, upper
}
// moment increment
Cm Cm sin x TE x sep, upper 0.5 1 x sep, upper 0.25
27
}
else if ( 0 )
{
// handle separation on lower surface
if ( x sep, lower x TE )
{
// trailing edge angle of lower surface
y sep, lower y TE
TE arctan
x sep, lower x TE
}
else
{
TE 0
}
// drag increment
2
Cd, lower Cd, lower 0.2 sin TE x TE x sep, lower
C Cl, max, fudge TE x TE x sep, lower
if ( C 0 )
{
// lift reduction
C C C
}
else
{
// lift multiplier
C C 1 sin x TE x sep, lower
}
// moment increment
Cm Cm sin x TE x sep, lower 0.5 1 x sep, lower 0.25
}
28
Compressible Flow
JAVAFOIL analyzes airfoils in incompressible flow, which means low Mach numbers as they
are common in model aircraft of general aviation airplanes. In practical application this means
Mach numbers below M 0.25 . It is possible however to extend the Mach number range
somewhat by applying compressibility corrections to the incompressible results. This is only
possible, as long as the flow speed is subsonic all over the surface of the airfoil and
compressibility effects are small.
In order to indicate how close the local flow is to supersonic speeds, JAVAFOIL calculates the
critical pressure coefficient if a Mach number is specified on the Options card. The critical
limit is drawn as a wavy line in the graph on the Velocity card. Additionally, a
compressibility correction is applied to the incompressible solution to model first order
compressibility effects. Note however, that the theory becomes invalid, when flow reaches or
exceeds sonic speed.
Compressibility Corrections
There are different ways to correct incompressible flow results for compressibility effects.
One should keep in mind that these are only corrections – they can never produce the correct
physical effects when the flow locally reaches or exceeds supersonic speed. Therefore the
applicability of all compressibility corrections is limited to cases where the local flow velocity
(which can be much higher than the onset flow velocity) is well beyond the speed of sound.
In practical application one can use such corrections well up to about M 0.5 , the error
grows very rapidly when the onset Mach number exceeds 0.7 .
In JAVAFOIL, the incompressible panel analysis is always performed for the given airfoil – the
shape is never geometrically distorted. The compressibility correction is applied later to the
local surface pressure according to the Kármán-Tsien approximation
29
C P ,c
2 CP ,i 1 1 M 2 .
2 1 1 M M
2
2
M 2
C P ,i
The corrected pressure coefficient is then used to calculate the lift and moment coefficients.
Now, JAVAFOIL is a program for the analysis of two dimensional airfoils. Nevertheless it
supports a very simple model of finite wings to allow for a more realistic comparison of
airfoils. When the user supplies a value for the aspect ratio on the Options card classical wing
theory formulas are used to determine an approximation of the 3D effects on lift, drag and
pitching moment. These effects can applied to the polars produced by JAVAFOIL and make it
possible to get a first impression of the relations between induced drag and airfoil drag. For
example the importance of the airfoil drag is diminishing for higher lift coefficients and lower
aspect ratios.
These three dimensional corrections can also be applied to the results for constant Reynolds
number (Polar card) as well as more realistically for the results associated with a constant
wing loading (Aircraft card).
30
Figure 26: Lift versus drag coefficient polars for a NACA 0012 airfoil and wings of different aspect ratio.
The graph above shows the effect of the wing aspect ratio on lift over drag coefficient.
Starting with infinite aspect ratio (aspect ratio = 0 on the Options card) three wings with
increasing aspect ratio have been analyzed. For each curve the maximum of the lift over drag
(L/D) ratio is indicated by a filled circle. It can be clearly seen, that depending on the aspect
ratio the additional induced drag distorts the polar so that the optimum L/D ratio is shifted to
lower lift coefficients. While the two dimensional airfoil achieves its maximum of L/D at
slightly above C 1.0 , the low aspect ratio wing of 5 requires to operate the airfoil at
C 0.5 because this is the optimum CL of the whole wing. If we compare with another
airfoil we would better compare the airfoils at the lift coefficients corresponding to the wing
aspect ratios.
Note that the results as shown above are accurate for a wing having an elliptical lift
distribution and an elliptical, untwisted planform. Due to the spanwise lift distribution on a
generic wing, the airfoils along the span of the wing will operate somewhat above and below
the total lift coefficient of the wing. To analyze such effects requires a more sophisticated
three dimensional wing analysis code (e.g. lifting line, vortex lattice or panel methods). Also
no additional wing effects (like Reynolds number variation due to taper) are taken into
account.
31
in a wind tunnel, but feasible in a numerical tool like JAVAFOIL. Here you can use the Aircraft
card to calculate polars for a given wing loading.
Abbreviations:
mass of aircraft m kg
gravity constant g m/s2
density of medium m/s2
kinematic viscosity m2/s
flight speed v m/s
wing area S m2
chord length c m
Reynolds number Re -
Basic Equations
mg
The definition of the lift coefficient is CL
. Solving the definition of the
2 v2 S
v c Re
Reynolds number Re for the velocity v yields v . Inserting this result
c
into the definition of the lift coefficient produces
m g c2
CL
.
2
Re2 2 S
Solving for the Reynolds number yields
c 2g m
Re .
CL S
c 2g m
Note that this equation can also be written Re CL , which means that we
S
can also calculate polars of constant Re CL to match a given aircraft.
Using these results one can derive an aircraft oriented airfoil polar for a given wing loading
S and given mean chord length c . Due to the dependency between lift coefficient and
m
32
● perform the following calculation sequence:
inital value
Re* 106
for ( 0 to 1 step )
{
iterate
{
Re Re*
CL f(, Re)
g m 2
Re*
c
CL 2 S
2
}
Re* Re
while( )
Re
}
Note that the result still is an airfoil polar, even if wing loading and chord length are involved.
Only when you additionally specify an aspect ratio on the options card, the polars include the
induced drag and approximate a finite wing.
A precaution must be undertaken to handle cases where CL 0 . Here JAVAFOIL limits the
Reynolds number to a value corresponding to a small lift coefficient, e.g. CL 0.02 .
Note: One can also derive the Reynolds number for a constant ratio m , eliminating the chord
length c . This has not been implemented in JAVAFOIL as it was considered more abstract to
think in terms of m instead of the aircraft design parameters mS and c . But as the relation is
m
S
c2 m
it would be sufficient to use m
instead of m
S in JAVAFOIL while setting c 1 .
33
C
CL
2
1 M2
Implementation in JAVAFOIL
34
specify a value for the aspect ratio of the wing b2 / S (span b and wing area S ) on the
Options card.
As no information about the real wing shape is available, the assumption of having a “good”
wing planform is made. Therefore the induced drag component is calculated by using the
classical formula derived in the lifting line theory (Prandtl).
C2L
CD,i k
In JAVAFOIL the “k-Factor” is assumed to be 1.0 (planar wing with elliptical lift distribution).
Note that the idea of these simple corrections is to give you a feeling for the relative
importance of the induced drag in relation to the airfoil drag only. For real wing design you
should use a more appropriate 3D aerodynamic analysis tool, e.g. a vortex lattice or panel
method.
Implementation in JAVAFOIL
return (dReturn);
}
Note that all finite wing results are only approximations. If you need more accurate results,
you must use a 3D wing analysis code, which ideally can also handle friction effects.
35
Figure 27: Top view of a swept wing with sections in the x z and in the normal plane x n z .
JAVAFOIL assumes that the wing has no taper and that it is infinitely long. In practical
application, these assumptions are not too far from the conditions at mid-span of a low taper
ratio wing having an aspect ratio of 10 or higher.
Note that JAVAFOIL can predict the velocity or pressure distribution over the section quite
accurately, but all of its transition criteria are not made for swept wings. Typically wing
sweep introduces additional disturbances due to crossflow and spanwise flow at the leading
edge of the wing, which both may lead to premature transition. Therefore the drag coefficients
should not be taken too serious when the sweep angle is larger than, say, 20° except if
transition is fixed close to the leading edge.
In order to analyze an airfoil on a swept wing we align the defining wing section with the
streamwise direction (this is also called a “sheared” wing planform). The sweep angle must be
specified on the Options card and then the analyses on all other cards (including the Design
card) take this angle into account. Following classical sweep theory as devised by the German
aerospace engineer Busemann in the 1930s, JAVAFOIL internally analyzes the airfoil section at
right angles to the leading edge at an increased angle of attack and combines the result with
the tangential flow past the wing. The resulting velocity resp. pressure distribution matches
perfectly with the result of a three-dimensional analysis produced with a 3D-panel method.
The following figures show a comparison between JAVAFOIL and VSAERO.
a) Results of two dimensional analysis with sweep correction. b) Results of three dimensional analysis.
Figure 28: Velocity ratio past a NACA 0015 airfoil for sweep angles of 0° and 45° at 0 . Left: two
dimensional analysis; right: three dimensional analysis of a finite wing of very high aspect ratio.
36
a) Results of two dimensional analysis with sweep correction. b) Results of three dimensional analysis.
Figure 29: Velocity ratio past a NACA 0015 airfoil for sweep angles of 0° and 45° and the same lift
coefficient as obtained at 5 . Left: two dimensional analysis, data see Table 1; right: three
dimensional analysis of a finite wing of very high aspect ratio.
C Cd C m 0.25 C p* Mcrit .
[°] [°] [-] [-] [-] [-] [-]
0 5.00 0.604 0.01710 -0.008 -1.787 0.564
45 6.72 0.604 0.01611 -0.009 -1.650 0.579
Table 1: Two dimensional analysis results for a NACA 0015 airfoil at same lift coefficient.
As can be seen in the table above, the swept wing requires a larger angle of attack to achieve
the same lift. Due to the changed velocity distribution this example exhibits lower drag and,
the main reason for sweeping wings, a higher critical Mach number allowing higher flight
speeds.
The aerodynamic center is not to be confused with the center of pressure (C.P.), which is the
point at which the total aerodynamic force acts. This total force produces the same effect as
the lift and pitching moment. The location of the center of pressure changes with angle of
attack and can even move in front or behind the airfoil shape. The center of pressure can be
calculated from lift and pitching moment coefficients:
37
Cm 0.25
x C.P. 0.25 .
C
Note that both, center of pressure as well as the aerodynamic center, are for the airfoil only,
not for the complete aircraft with tailplanes.
JAVAFOIL simulates the ground effect on the flow around the two dimensional airfoil by using
a mirror image of the airfoil section. The mirror plane is always located at y = 0. Note that for
a proper simulation, the baseline airfoil must be translated into the positive y-direction so that
it does not intersect the horizontal line y = 0. This translation can be performed using the
Modify card.
In contrast to the flow around a free airfoil, where the flow field can be constructed from a
superposition of the solutions for zero and 90 degrees angle of attack, the ground effect case
cannot be created by superposition. Any change of angle of attack also changes the geometry
of the airfoil and mirror airfoil pair. Therefore a new panel solution is required for each angle
of attack, which slows down the calculation of a polar somewhat. More slowdown will be
noticed during the analysis on the Flowfield card because here an analysis is required for each
single flow field point and for each step on each streamline.
Figure 30: Changing the angle of attack in ground effect rotates around the pivot point.
The angle of attack of the airfoil is always changed by rotating the section around the pivot
point specified on the Modify card. If you want to analyze an airfoil at a height of 25% of the
chord length and want to maintain the trailing edge point, you would first translate the airfoil
in y-direction by 25% and then set the pivot point to x=100%,y=25%. Then any subsequent
change of angle of attack would maintain the trailing edge point and elevate the nose of the
airfoil above the y=25% line. Note that the airfoil is rotated and thus its projection on the x/c
axis becomes shorter, but pressure, velocity or Mach number distributions on the Velocity
card are still plotted over x/c.
38
Figure 31: Distributions of the pressure coefficient on a Clark Y airfoil in ground proximity.
Results of the numerical solution of the Navier-Stokes equations have been taken from [19],
the experimental results have been reproduced from [20]. The experiments were carried out
with a fixed ground board, equipped with a suction system. The results of JAVAFOIL match
the experimental results quite well. The Navier-Stokes solutions should model boundary layer
displacement effects more accurately.
C2L
1.5
33 h / b
CD, i
1
1.5 .
1 33 h / b
1
Sometimes the Froude number is given as the square of this expression – be careful when comparing data.
39
v
Fr .
gc
In JAVAFOIL you have to move the airfoil below the water surface to the appropriate depth,
which is always located at y = 0. This translation can be performed using the Modify card.
Note that the surface effect diminishes with immersion depth and it can be assumed that it can
be neglected when the airfoil is submersed deeper than 10 chord lengths below the surface.
Figure 32: Velocity distribution past a NACA 2412 at an angle of attack of 5°. The results are for free
flow, at 50% c above the ground and submerged 50% c below the water surface. Note that the pivot point
has to be set to y=0, +50%, -50% respectively to minimize distortion of the x-axis die to angle of attack for
the ground effect and Froude effect analysis.
Force and moment coefficients for the three cases depicted above.
40
Figure 33: Streamlines around the submersed hydrofoil (note that image is clipped at y=0) but the
generated surface wave are extending above this border.
Multi-Element Airfoils
The maximum lift of single element airfoils is limited by onset of flow separation. The
achievable limit for single element airfoils seems to be at lift coefficients between 2 and 3.
For maximum lift it can be beneficial to split an airfoil unto several elements, arranged to
form a slotted cascade. Each element then develops its own fresh boundary layer and positive
interference effects between the elements allow for a higher lift loading per element.
JAVAFOIL can handle such multi-element airfoils to a limited extent. Limitations are imposed
by the fact that boundary layer effects are not modeled. Therefore inaccurate results must be
expected when slots are very narrow (less than twice the displacement thickness of the
boundary layer and when the wake of a leading element interacts with a following element.
Nevertheless JAVAFOIL should be useful to produce a reasonable first design for a slotted
airfoil with appropriate gap, overlap and element angle settings. Also one can design such
sections so that suction peaks and too steep pressure gradients are avoided.
The following script shows how a two element downforce wing section can be generated
starting with a basic NACA 4-digit section.
//
//
// A simple JavaFoil example which creates a two element
// airfoil for downforce generation.
//
// switch to US country settings
Options.Country(0);
// create a cambered NACA airfoil for starting
var dThickness = 0.15;
var dCamber = 0.02;
var dCamberLocation = 0.40;
var params = new Array ( dThickness,0.0, dCamber, dCamberLocation );
Geometry.CreateAirfoil(0,61,params,true);
//
// create a copy of this first airfoil element to be used later
41
Modify.Select(1);
Modify.Duplicate();
// now select the first element again
Modify.Select(1);
// ... flip it upside down
Modify.Flip(0.0);
// ... scale it to 75%
Modify.Scale(0.75);
// ... rotate it 5 degrees trailing edge up around its nose (0;0)
Modify.Rotate(0,0,-5);
//
// now select the second element
Modify.Select(2);
// ... flip it upside down
Modify.Flip(0.0);
// ... scale this copy to 30%
Modify.Scale(0.30);
// ... move it back so that there is 5% overlap
Modify.Move(0.70,0.12);
// ...rotate it by 30 degrees around a point at (70%/12%)
Modify.Rotate(0.70,0.12,-30);
// finally: (THIS IS IMPORTANT!)
// select both elements again for all further analyses
// if only one element is selected on the Modify card, only this element
// will be considered during the calculation of polars etc.!
arr = new Array(2);
arr[0] = 1;
arr[1] = 2;
Modify.Select(arr);
// and move both elements up by 25% for ground clearance
// (note that the airfoil may not cross y=0 i.e. the ground plane)
Modify.Move( 0.0, 0.25 );
/*
* prepare for analysis
*/
// switch ground effect simulation ON
Options.GroundEffect(1);
Options.MachNumber(0);
Options.StallModel(0);
Options.TransitionModel(1);
Options.AspectRatio(0);
Modify.SetPivot(0.25,0);
// velocity versus x/c should show no strong suction peaks in the
// nose region of 2nd element
Velocity.Analyze(0,0,1,0,false);
//
// polar for Re=500'000, alfa=-15 to +10 degrees
// with ground present a strong suction force is generated
// (even for single element airfoils)
// therefore a Cl_min in the order of -4 to -5 can be seen.
Polar.Analyze(500000,500000,500000,-15,10,1,1.0,1.0,0,false);
//
// finally: export coordinates in XML format
Geometry.Save("Z:/groundforce-example.xml");
42
Automating JAVAFOIL with a Script
JAVAFOIL had a rather simple but useful scripting interface since 2002. In 2012 this has been
rewritten to make use of JavaScript as the scripting language. This scripting engine is
included with Java since version 1.5 and allows for more complex scripts.
Scripts can be recorded, modified and stored for later reuse in script files. Basically these
scripts mimic the actions you perform in the graphical user interface. The syntax must follow
the JavaScript rules, which are not detailed here. There is no direct interaction with JAVAFOIL,
i.e. you cannot directly ask for certain values. If you want to build up something like an
optimization loop, you have to write results to output files and parse these results to extract
data.
The easiest way to start with scripting is to use the script recorder built into the Script dialog
window, which can be opened on the Options card.
The name of the script file can be transferred to JAVAFOIL in two ways. First you can define a
“system property” using the “-D” command line option of the java command, look like so:
Alternatively, you can specify the script file using as a command line argument like this:
Both ways methods are equivalent and produce the same result.
Note that this example in Windows style uses the backslash as file separator, for Unix-like
systems you have to use the appropriate separator, usually a forward slash.
JavaScript is uses the backslash character as an “escape” character e.g. to specify a “newline”
character by “\n”. In Windows the backslash character is also used as a path separator. Inside
a script you must therefore make sure that path names inside strings are written with double
backslashes to separate directory elements (e.g. filename = "C:\\dir1\\dir2\\file.name";).
Note:
As JAVAFOIL is running without showing a window, you must make sure that the script ends
with an JavaFoil.Exit() command to terminate the run of JAVAFOIL properly.
Otherwise, the JAVAFOIL process will continue to run in the background. In Windows you can
check for running JAVAFOIL processes using the Task Manager window. In Unix-like
operating systems you can use the “ps” command to list all processes running under your user
account.
43
References
[1] Mark Drela, Michael B. Giles, “Viscous-Inviscid Analysis of Transonic and Low
Reynolds Number Airfoils”, AIAA-86-1786-CP, 1986
[2] Xiao-liang Wang, Xue-xiong Shan, “Shape Optimization of Stratosphere Airship”,
Journal of Aircraft V43N1, 2006.
[3] Ira Abbott and Albert Von Doenhoff, “Theory of Wing Sections”, Dover Publications,
New York, 1959
[4] Eastman N. Jacobs, Kenneth E. Ward, Robert M. Pinkerton, “The Characteristics of 78
Related Airfoil Sections from Tests in the Variable-Density Wind Tunnel”, NACA Rep.
No. 460, 1933.
[5] John Stack, “Tests of Airfoils Designed to Delay the Compressibility Burble”, NACA
Rep. No. 763, 1943.
[6] Charles L. Ladson and Cuyler W. Brooks, Jr., “Development of a Computer Program
To Obtain Ordinates for NACA 6- and 6A-Series Airfoils”, NASA Technical
Memorandum TM X-3069, September, 1974.
[7] Charles L. Ladson, Cuyler W. Brooks, Jr. and Acquila S. Hill, “Computer Program To
Obtain Ordinates for NACA Airfoils”, NASA Technical Memorandum 4741,
December, 1996.
[8] A. K. Martynov, “Practical Aerodynamics”, Pergamon Press 1965.
[9] A. C. Kravets, “Characteristics of Aircraft Profiles”, Moscow 1939.
[10] Anonymous, “Measurement of Force Coefficients on the Aerofoils EC 1240 and EC
1240/0640 in the High-Speed Tunnel at the National Physical Laboratory”, British ARC
R&M 2246.
[11] Sidney Goldstein, “Approximate Two-Dimensional Aerofoil Theory. Part I. Velocity
Distributions for Symmetrical Aerofoils”, British A.R.C. Technical Report C.P. No. 68,
1952.
[12] British A.R.C. R&M 4726.
[13] British A.R.C. R&M 4978.
[14] Joseph Katz, Allen Plotkin, “Low-Speed Aerodynamics”, McGraw-Hill, 1991.
[15] H. B. Helmbold, F. Keune, “Beiträge zur Profilforschung, II. Geometrie der
Profilsystematik”, Luftfahrt-Forschung, Band XX, 1943, pp 81 ff.
[16] G. Roßner, “Über eine Klasse von theoretischen Profilen mit vier frei wählbaren
geometrischen Parametern”, Jahrbuch 1942 der Deutschen Luftfahrtforschung, p.I/141-
I/159, 1942.
[17] K. G. Wilkinson, „The Horten Tailless Aircraft - How the Hortens Design Their
Aircraft“, Farnborough, ca. 1946, [http://www.twitt.org/Farnborough.html], retrieved 13
January 2012.
[18] Chun Ho-Hwan, Chang Chong-Hee, “Development of S-shaped section”, Pusan
national university, 1996.
[19] H. H. Chun, R. H. Chang, “Turbulence Flow Simulation for Wings in Ground Effect
with two Ground Conditions: fixed and moving Ground”, International Journal of
Maritime Engineering, Royal Institution of Naval Architects, 2003.
[20] Dieter Steinbach, “Comment on Aerodynamic Characteristics of a Two-Dimensional
Airfoil with Ground Effect”, Journal of Aircraft, Col. 34, No. 3, pp. 455-456, 1996.
[21] Werner Würz, “Hitzdrahtmessungen zum laminar-turbulenten Strömungsumschlag in
anliegenden Grenzschichten und Ablöseblasen sowie Vergleich mit der linearen
Stabilitätstheorie und empirischen Umschlagskriterien”, Dissertation, Institut für Aero-
und Gasdynamik, Universität Stuttgart, 1995.
[22] Richard Eppler, D. Somers, „A Computer Program fort he Design and Analysis of Low-
Speed Airfoils“, NASA TM-80210, 1980.
44
[23] Richard Eppler, „Airfoil Design and Data“, Springer-Verlag, 1990.
[24] T. Cebeci, P. Bradshaw, “Momentum Transfer in Boundary Layers”, Hemisphere
Publishing Corporation, Washington, London, 1977
[25] A. R. Wazzan, C. Gazley, A. M. O. Smith, “H-Rx method for Predicting Transition”,
AIAA Journal, Vol. 19, No. 6, June 1981, pp.810-811.
[26] K. G. Guderley, “Theorie schallnaher Strömungen”, p. 235 ff., Springer, 1957.
Version History
/**
* 1.00 ... 2001 initial version
* 1... various small undocumented changes over the months
* 1.46 18.04.2002 setGUILocale enhanced, printing errors repaired
* 1... various small undocumented changes over the months
* 1.49 07.2002 experimental implementation of MGM design method.
* 1.50 20.08.2002 Lots of changes and improvements concerning the handling
* of multi element airfoils. Most changes in MH.AeroTools.*
* 1.51 22.08.2002 Added simple handling of ground effect on all cards.
* Most changes in MH.AeroTools.*
* 1.52 23.08.2002 Moved Mach and ground effect settings to Options-Card
* because these are common for all cards
* 1.60 24.08.2002 new scripting mechanism added
* 1.61 11.09.2002 finite wing corrections for Cl and Cd added
* 1.70 10.11.2002 design card released
* 1.71 10.11.2002 mouse drag of y-coordinates on modify card added
* 1.72 10.01.2003 Spanish translation added
* 1.73 22.02.2003 normal vector plot added to flow field
* 1.74 10.05.2003 boundary layer added to design card (transition, separation)
* 1.75 30.05.2003 transition models added, Cd<->Cm in table on boundary layer card swapped
* 1.76 20.06.2003 normal vector Cp-plot in flow field changed to spectrum filled outline
* 1.77 10.08.2003 update to remedy problem with growth of XY canvases
* 1.78 16.02.2004 application command line arguments are now used,
* Exit() script command added
* AFL polar export for XPlane 7.00 added
* 1.79 17.04.2004 NACA 6-series approximative shape generation added
* 1.80 16.05.2004 rotational flow field feature added (experimental/Script only)
* 1.81 7.10.2004 small changes to XML export to Polar card
* 1.82 3.01.2005 TsAGI "B" airfoils added to Geometry card
* 1.83 12.01.2005 Design card improved by adding arc length display option
* Text direction record in CGM export in MH.AeroTools.* added
* 1.84 13.03.2005 circular arc, wedge, plate airfoil generators added to Geometry card
* 1.85 27.03.2005 Finnish translation added
* 1.86 6.07.2005 NPL EQH airfoil shape added to Geometry card (symmetrical)
* 1.87 26.11.2005 H-Rx transition criterion added
* Granville transition criterion added
* 1.88 17.12.2005 Van de Vooren airfoil added
* 1.90 31.01.2006 Newman airfoil added
* 1.91 21.09.2006 display of Mach number versus x/c to "Velocity" card added,
* compressibility corrections moved into new classes and
* MH.AeroTools.Airfoils.PanelAnalysis cleaned up and corrected
* 1.92 1.03.2007 all cards enlarged in size
* 1.93 25.03.2007 Cf plot added to BoundaryLayer card
* 1.94 6.05.2007 Cf output multiplied by 2 to adhere to common conventions
* Additions to allow for embedding of JavaFoil
* 1.95 9.06.2007 Mach influence on velocity vector in space corrected (in MHClasses)
* 1.96 19.06.2007 Error with incorrect Cp display on Velocity card corrected
* 1.97 23.07.2007 NACA 4 digit inactive option x_t/c disabled, minimum aspect ratio
* set to 0.01 even if this makes not much sense.
* 1.98 13.09.2007 MHClasses: XYCanvas Import Dialog repaired for Java 1.6
* 1.99 17.11.2007 Geometry card: airfoil type dropdown box selection is
* restored when country is changed, airfoils of old Selig
* format can be imported (first line contains nUpper nLower)
* 2.00 13.01.2008 Aircraft card for aircraft oriented airfoil polars added
* 2.01 13.02.2008 Aerodynamic center position added to polar listings
* 2.02 21.04.2008 Dutch language version completed
* 2.03 18.06.2008 NACA 5 digit definition improved (m factor)
* 2.04 28.06.2008 Inverse design card enhanced by CpTarget specification window
* 2.05 28.08.2008 Center of pressure position added to polar listings.
* Robustness of number format parsing of coordinate on
* geometry card improved.
* Input and output of polars etc now uses UTF-8 Unicode
* charset for alfa etc.
* 2.06 22.11.2008 Incorrect TsAGI "B" generator repaired.
* Trailing edge handling in panel method cleaned up.
* 2.07 13.12.2008 Joukovsky airfoil generator repaired.
* 2.08 07.02.2009 Froude free surface approximation added (not yet working correctly).
* 2.09 16.08.2009 Added values to tables on Flowfield and BoundaryLayer cards.
* Replaced NACA 6 and 6A series generator by more accurate
* algorithm according to Ladson's NASA report (with tables).
45
* 2.10 06.01.2010 A negative number of points on Modify card now creates a
* spline interpolation of strong tension, almost a polyline.
* Clean NPL EC and ECH airfoil definitions added.
* FlowField filled color plot improved.
* Autoscaling for geometry graph on Modify card as well as x-y-axes added
* 2.11 21.02.2010 MHSpinner controls added, MHText controls added,
* more robustness in airfoil generators against nonsense input.
* 2.12 13.03.2010 minor modifications, check for Java 1.5, transition and separation
* location labels added to BoundaryLayer card
* 2.13 12.04.2010 added functions to Design card. Fixed a AC calculation bug when a
* single point was analyzed on 2D polar or airfoil polar cards.
* 2.14 15.05.2010 added Roßner airfoils.
* 2.15 30.05.2010 fixed a bug in Prandtl-Glauer correction and added robustness.
* 2.16 30.06.2010 XML export format to Velocity card added.
* Option for colored v/V on Flow field card added.
* 2.17 26.11.2010 smoothing option changed
* 2.18 02.07.2011 Bitmap import on Geometry card added,
* colorramp display on Flowfield card added.
* 2.19 05.09.2011 Automatic saving on restoring of current settings added.
* Added scripting access to Height/Span ratio on Options card.
* 2.20 01.10.2012 Fixed scripting access to FlipY and Smooth commands on Modify card.
* Ground and Froude effect analysis now uses the pivot point
* from Modify card for angle of attack.
* Froude simulation rewritten correctly, some code unification with ground effect.
* Cp and airfoil geometry added to Tecplot output from Flowfield card.
* Mach number corrections corrected.
* Added swept wing section analysis feature.
* 2.21 02.03.2014 Option to enter the number of decimal places added to the Geometry card.
* Momentum and pressure field integration on Flowfield card added.
* 2.22 04.11.2014 Finite wing approximation extended to pitching moment correction.
* 2.23 15.09.2015 Bug in DXF export on geometry card fixed.
* 2.24 11.04.2016 Bug in scripting interface (missing JavaFoil.Exit() method) fixed.
* 2.25 18.01.2017 Script recorder now escapes backslashes in path names on Windows.
* 2.26 02.04.2017
* 2.27 18.08.2017 Improvement in Calcfoil stall model.
* 2.28 22.12.2017 Reversion of “Improvement” in Calcfoil stall model introduced in 2.27.
* 2.29 14.01.2020 Java version detection modified for new numbering scheme in Java 11, 12, 13.
*/
46