Integral Boundary Layer Methods in Python
Integral Boundary Layer Methods in Python
A Thesis
presented to
In Partial Fulfillment
by
Malachi Edland
August 2021
© 2021
Malachi Edland
ALL RIGHTS RESERVED
ii
COMMITTEE MEMBERSHIP
Python
iii
ABSTRACT
Malachi Edland
This thesis presents a modern approach to two Integral Boundary Layer methods
boundary layer methods: Thwaites’ method for laminar boundary layer flows and
Head’s method for turbulent boundary layer flows. Several novel enhancements im-
prove the quality and usability of the results. These improvements include: a common
output Runge-Kutta ODE solver that allows for querying of simulation results at
any point with accuracy to the same order as that of the solver; and an edge veloc-
ity treatment method using cubic spline interpolation that improves the simulation
performance using only points from an inviscid edge velocity distribution. Both the
laminar and turbulent methods are shown to benefit from smoothing of the edge ve-
locity distribution. The choice of ODE solver alleviates the need to artificially limit
step sizes. Comparisons against analytic solutions, experimental data and XFOIL
results provide a wide varity of verification and validation cases with which to com-
made in other implementations of this method, which results in more robust results.
Utilizing the common ODE framework results in significantly less code needed to
implement Thwaites’ and Head’s methods. In addition, the boundary layer solvers
produce results in seconds for all results presented here. Boundary layer transition
iv
and separation criteria are implemented as a proof of concept, but require future
work.
v
ACKNOWLEDGMENTS
Thanks to:
• My parents, whose financial support, patience, and love have carried me through
• My amazing girlfriend, for reassuring me when the hours are long and the work
• Kari Mobley and ACI Jet for giving me two exhilarating years in the hangar
• Nick Brake and Cory Seubert for taking me on and providing invaluable work
this project
• Finally, thank you to my wonderful advisor Dr. David Marshall for taking me
under your wing and encouraging me to find new things! I think back often
to when I walked into your office and first asked you about Python. Your first
words were “sure Malachi, take a seat.” The way you said it made me feel so
included, and I knew that I’d come to the right person to learn from. More
than a year later, I’ve learned so much, and am so glad that I took that seat.
vi
TABLE OF CONTENTS
Page
LIST OF FIGURES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
NOMENCLATURE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
CHAPTER
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.1 Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
vii
3.1 Testing Thwaites’ Method Against Falkner Skan . . . . . . . . . . . . 27
Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
APPENDIX
viii
LIST OF FIGURES
Figure Page
3.10 Flat Plate with Mild Adverse Pressure Gradient - Velocity Inputs . 37
3.11 Flat Plate with Mild Adverse Pressure Gradient - Velocity Spline
Derivatives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.13 Flat Plate with Mild Pressure Gradient, Head’s Method - Error . . 40
3.14 Flat Plate with Mild Pressure Gradient, Head’s Method - Error
(Smoothed Velocity) . . . . . . . . . . . . . . . . . . . . . . . . . . 40
ix
3.15 Flat Plate with Mild Pressure Gradient, Head’s Method - Error
(Smoothed Velocity Derivative) . . . . . . . . . . . . . . . . . . . . 41
3.16 Flat Plate with Mild Pressure Gradient, Head’s method - Transpi-
ration Velocity Results . . . . . . . . . . . . . . . . . . . . . . . . . 41
x
NOMENCLATURE
Latin
Greek
xi
δ Boundary layer thickness, page 2
xii
Chapter 1
INTRODUCTION
1.1 Background
The exponential growth of computing power in recent years has made a powerful im-
design processes rely on computational tools that vary widely in precision and sim-
ulation times. Modern computational techniques for fluid flows have been driven by
the capabilities of the hardware on which they run, becoming more and more complex
While high-accuracy solvers are the focus of research labs, lower fidelity models are
design environments where simulation time savings, workflow, and modularity are
extremely valuable, Integral Boundary Layer methods offer valuable results and can
quickly return important boundary layer parameters needed for the analysis of a
design.
In aerodynamics, the concept of boundary layers has been very important for un-
derstanding viscous flows, since the velocity of a low-viscosity fluid flowing around
an object changes rapidly near the object’s surface. Prandtl was the first to define a
Grenzschicht, literally boundary layer, as the thin layer of viscous influence near a wall
in 1904 [15]. While the Navier-Stokes equations for fluid flows already existed at this
1
point, their complexities had limited aerodynamicists to inviscid solutions before this
Stokes equations applicable within the boundary layer. The result allowed the flow
to be treated as inviscid outside the boundary layer and simplified the Navier-Stokes
Boundary layers are often characterized by their thicknesses. The boundary layer
thickness, δ, is the distance at which the local velocity is equivalent to the freestream
inviscid streamline from the surface and is calculated as the amount of freestream
mass leaving the boundary layer in the direction normal to the surface:
Z ∞
∗ u(x, y)
δ (x) = 1− dy (1.1)
0 ue x
The momentum thickness, θ, characterizes the amount of momentum lost within the
lost:
Z ∞
u u
θ(x) = 1− dy (1.2)
0 ue ue
Other parameters are also used to characterize the boundary layer flow.
ue θ
Reθ = (1.3)
ν
boundary layer, including in the methods used for predicting transition. The shape
2
factor H is the ratio of displacement thickness over momentum thickness:
δ∗
H= (1.4)
θ
It is typically used as a criteria for separation and for transition, and also appears
the viscous stresses on the surface. It is defined as the wall shear stress τw nondimen-
τw
cf = (1.5)
q
The velocity used to calculate q has not always been defined consistently. Some
references use the freestream velocity (far upstream of the surface) and some use
the velocity at the edge of the boundary layer at the current streamwise location.
calculated q.
Boundary layers in fluid flows undergo specific changes as they move along the surface.
Boundary layers are described as laminar when flow travels smoothly and steadily [17].
Laminar boundary layers are prevalent in low Reynolds number flows. In contrast,
boundary layers that are turbulent occur at higher Reynolds numbers and are charac-
terized by random fluctuations in the instantaneous flow properties. They are often
As a flow moves along a surface, the boundary layer near the surface may change from
having laminar qualities close to the stagnation point, to becoming turbulent further
transition. Laminar or turbulent flows may also separate from the surface. These
changes occur because of the growth of instabilities along the surface [17].
3
1.3 The Blasius Solution
In 1908, the work of Blasius presented a solution for boundary layer growth on a flat
plate with no streamwise pressure gradient [4]. The inviscid velocity distribution for
ue = u∞ (1.6)
Where at any x point along the surface, the velocity at the edge of the boundary
layer, ue , is equal to the freestream velocity, u∞ . This solution utilizes the similar-
ity property of this type of boundary layer. The boundary layer equations can be
transformed into a third order, non-linear ODE that represents a similarity solution
for the laminar laminar flow field anywhere within the boundary layer, except at the
start of the plate, x = 0. The solution at any streamwise location in the boundary
layer can be found from solving for the dimensionless stream function f (η):
f f 00 + 2f 000 = 0 (1.7)
r
u∞
η=y (1.9)
νx
Blasius’ work described the velocity distribution along the surface, as well as through
4
the boundary layer, with the following relations:
u = u∞ f 0 (η) (1.10a)
r
1 ν∞
v= (ηf 0 − f ) (1.10b)
2 x
where u and v are streamwise and transverse velocity, respectively. This solution
In 1930, Blasius’ solution was generalized by the work of Falkner and Skan that
applied a boundary layer to a wide variety of flows [2]. Potential flow theory was
used to find the edge velocity expressions and the physical flows that they represent.
One flow that may be represented using the Falkner-Skan equations is a wedge flow.
In a wedge flow, a flat surface is positioned at an angle πβ/2 to the flow, as shown in
fig. 1.1.
The edge velocity, ue , for Falkner-Skan flow is defined by the following expression:
x m
ue = u∞ (1.12a)
L
5
y x
u∞
πβ
2
where
β
m= (1.12b)
2−β
and where x is the distance along the surface from the stagnation point [18]. This
velocity distribution can represent a number of different flows beyond wedge flows, so
Once again, the boundary layer equations are transformed into a non-linear ODE:
f 00 + f f 00 + β[1 − (f 0 )2 ] = 0 (1.13a)
Blasius’ solution, f and its derivatives may then be used to obtain δ ∗ , θ, and cf . The
displacement thickness, momentum thickness, and skin friction coefficient are given
by:
1/2 1/2 Z ∞
∗ 2 νx
δ = (1 − f 0 ) dη (1.14a)
m+1 u∞ 0
1/2 1/2 Z ∞
2 νx
θ= f 0 (1 − f 0 )dη (1.14b)
m+1 u∞ 0
6
q
2 m+12
cf = √ (f 00 |0 ) (1.14c)
Rex
A different approach to analyzing the boundary layer equations came from Theodore
Von Karman in 1921 [19]. He integrated the boundary layer equations through the
boundary layer (essentially averaging over the thickness) [19] to arrive at:
dθ θ due 1
+ (2 + H) = cf (1.15)
dx ue dx 2
This is known as the momentum integral equation. This equation forms the basis
for the Integral Boundary Layer (IBL) methods. Empirical relations are needed to
complete models based on this equation. Equation (1.15) is valid for both laminar
and turbulent boundary layers with the appropriate empirical relations; however, to
model the relationships between H, cf , and θ, different empirical relations are needed
surface, these methods return the shape factor, momentum thickness, skin friction,
and displacement thickness. Two specific Integral Boundary Layer methods were
used in this project: Thwaites’ method for laminar flows, and Head’s method for
turbulent flows. These methods are well studied and are generally simpler than other
IBL methods, as their ODE’s are mostly derived from experimental data or analytic
solutions [8].
7
1.5.1 Thwaites’ Method for Laminar Boundary Layers
A method for estimation of laminar boundary layers was presented by Bryan Thwaites
in 1949 [3]. This method is 2-dimensional, but may be applied to axisymmetric bodies
θ2 due
λ= (1.16)
ν dx
cf dθ θ due
= + (2 + H) (1.17)
2 dx ue dx
τw θν ue θ dθ θ2 due
= + (2 + H) = s(λ) (1.18)
ue ν dx ν dx
He found that two functions, a wall shear correlation, s, and shape factor, H, were
Tabulated values correlating s and H to λ were also provided by Thwaites and were
obtained from a number of solutions to the laminar boundary layer equations. Various
fits to this tabulated data have been presented, such as those presented in Cebeci and
8
and given that:
dθ2
dθ 1
θ = (1.20)
dx 2 dx
dθ2 θ2
ue due
s(λ) = + (2 + H) (1.21a)
2ν dx ν dx
d λ
2s(λ) = ue + 2λ(2 + H) (1.21b)
dx due/dx
d λ
ue = 2[s(λ) − λ(2 + H)] = F (λ) (1.21c)
dx due/dx
To simplify solving this, Thwaites recognized that if F (λ) was of the form F (λ) =
x
θ2
Z
= au−b
e ub−1
e dζ +c (1.22a)
ν 0
Where the integration constant c must be zero so that the momentum thickness at
the start of the surface, x = 0, is not infinite, c/0. Thwaites found the best fit values
to be:
Z x
2.45ν
θ = 6 u5e dx (1.23)
ue 0
Implementations of Thwaites’ method typically carry out this integral on the velocity
with a simple quadrature technique). With θ calculated at a given point and due/dx
either solved for analytically or approximated in order to determine λ using eq. (1.16),
9
While the assumed relationship for F in equation eq. (1.21c) makes this method easier
to solve, it also sacrifices the accuracy of the tabulated values Thwaites provided for
s and H (as well as the fits provided by others) by introducing potential error in θ
A new method, using the empirical fits for s(λ) and H(λ), was derived during this
Presented in fig. 1.2 are the values of F (λ) using the linear assumption and two
different fits. The associated errors are shown in fig. 1.3. The linear assumption (the
most common) produces the most error, as shown in fig. 1.3. The lowest error in
F is achieved with the fits to s and H presented by Cebeci and Bradshaw [8] and
0.22 + 1.57λ − 1.8λ2
for 0 ≤ λ ≤ 0.1
s(λ) ≈ (1.24a)
0.018λ
0.22 + 1.402λ +
0.107+λ
for −0.1 ≤ λ < 0
2.61 − 3.75λ + 5.24λ2
for 0 ≤ λ ≤ 0.1
H(λ) ≈ (1.24b)
0.0731 + 2.088
0.14+λ
for −0.1 ≤ λ < 0
This model, while accurate, applies to a specifically limited range compared to the
Figure 1.3 shows that by using a linear approximation for F , significant error is
introduced at certain values of λ. While splicing the different fits may have shown
slight improvement, this project instead implements a cubic spline between Thwaites’
10
1 Linear
Splined
Cebeci and Bradshaw
White
0.5
Thwaites
−0.5
−1
Figure 1.2: Linearized F (λ), (F (λ) = .45 − 6λ), splined F (λ) from Thwaites’
original values, and F (λ) using fits to s(λ) and H(λ) presented by Cebeci
and Bradshaw [8] and White [17].
inates the need to assume that F is linear. The details of this change are described
more in section 2.2. For comparison with known analytical results, Thwaites’ method
θ2 at a given point:
Z x
2 .45ν x 5m
θ (x) = u5∞ (1.26)
x 6m L
u6∞ L
0
s
.45Lm νx1−m
θ(x) = (1.27)
u∞ (5m + 1)
11
10−1
F (λ) Relative Error
10−2
10−3
Linear
Cebeci and Bradshaw
White
Figure 1.3: Error introduced using linearized F (λ) (F (λ) = .45 − 6λ), fits
presented by Cebeci and Bradshaw [8], and fits presented by White [17],
against Thwaites’ original tabulated values. Note that that no error for the
spline (presented later) is shown, as its error is 0 at every one of Thwaites’
points.
12
For various values of m, the error of this calculation is within 10% for the momentum
M. R. Head first described his method for solving for a turbulent boundary layer in
1958 [6]. This is a 2-dimensional method, but can be applied to axisymmetric bodies
with the appropriate transformation. His method used a new shape factor, H1 , based
δ − δ∗
H1 = (1.28)
θ
dθ θ due 1
+ (2 + H) = cf (1.15 revisited)
dx ue dx 2
a relation for the entrainment velocity and the new shape factor, H1 , such as the
1 d
F1 (H1 ) = (ue θH1 ) ≈ 0.0306(H1 − 3)−0.6169 (1.29)
ue dx
3.3 + 0.8234(H − 1.1)−1.287
for H ≤ 1.6
H1 (H) ≈ (1.30)
3.3 + 1.5501(H − 0.6778)−3.064
for H > 1.6
13
a system of partial differential equations with 2 unknowns, θ and H, may be obtained
if ue and due/dx are known as functions of x. This process is described further with
Cebeci and Bradshaw [8] presented a Runge-Kutta implementation for solving Head’s
Method, using θ and H as the simulation variables. Given the relationship presented
by Ludwieg and Tillman [5] in eq. (1.31), skin friction coefficient can be found as a
function of θ and H to eiliminate it from the momentum integral equation, eq. (1.15).
Cebeci and Bradshaw used a simple approximation for due/dx using the provided values
of the edge velocity in order to obtain dH/dx from eq. (1.29). Their implementation
used the form of the fits to F1 and H1 to calculate the derivatives needed to implement
Note that dH1/dH may be obtained analytically when H1 (H) is estimated as in eq. (1.30).
By applying the chain rule to eq. (1.29) and using the fits to F1 (H1 ) and H1 (H), the
dH1 dH1 dH
= (1.32a)
dx dH dx
d due dθ dH1
ue F 1 = (ue θH1 ) = θH1 + ue H1 + ue θ (1.32b)
dx dx dx dx
dH1 dH1 dH due dθ
ue θ = ue θ = ue F1 − θH1 − ue H1 (1.32c)
dx dH dx dx dx
dθ due
dH ue F1 − ue dx H1 − dx
θH1
= dH
(1.33)
dx 1
dH e
uθ
14
1.6 Transition Modeling
Near the location of transition, the flow becomes unstable and undamped Tollmien-
Schlichting waves appear [17]. They develop within the boundary layer until the flow
becomes fully turbulent and transitions. As described in White [17], the transition
from laminar flow to turbulent flow and the determination of its location is not built
of fundamental theory. Rather, tests and fits try to predict the location of transition
and wall roughness may be chosen for functional relationships to determine transition,
One such method is that of Michel [10]. This method uses only one parameter, the
local momentum thickness Reynolds number (defined in eq. (1.3)). Reθ is compared
0.4
xue (x)
2.9 (1.34)
ν
According to this model, transition has occurred at the location where Reθ surpasses
order ordinary differential equation (or system of first order differential equations)
of the form y 0 = f (t, y), where f is a function returning the derivative of y at the
current value of the independent variable t and the simulation variable y [9]. Runge-
15
Kutta solvers are often referred to by their order, such as RK4, which indicates a 4th
order accurate solver. Solvers may have multiple schemes of different orders running
Runge-Kutta solvers are a natural fit for use in IBL methods. Surface distance x
may be used as the independent variable for the simulation. The y vector may be
y = θ2
(1.36)
dθ2
0
y = (1.37)
dx
These values can be found given ue , due/dx, and values of s and H. A Runge-Kutta
where these relations may be obtained from eq. (1.15), eq. (1.29), eq. (1.30), and
eq. (1.31).
ble to reduce simulation times, as long as the error remains within a user defined
16
tolerance. However, fewer simulation points result in fewer locations with known
values of y when examining simulation results. Consider the IBL example above.
The user may need a boundary layer parameters at several specific x points. Setting
specific simulation points increases the time to run, and requires points of interest to
introduces error unless an interpolant is used that is the same order of accuracy as
the Runge-Kutta solver. This undermines the accuracy of the solver itself. In order
to find accurate results at specific points without recomputing the solution, some
solvers have a property known as dense output. Dense output returns a polynomial
fit between each pair of simulation points. This polynomial has the same degree of
accuracy as the solver. This feature allows for quick querying of results with minimal
mon Runge-Kutta solver between both implementations. The solver used in this work
is a Runge-Kutta of the order 5-4, a 5th order solver that uses a 4th order solution
as an error estimate in order to adjust the step size [21]. This chapter also covers
various implementation details, such as a common IBL parent class intended for use
with a variety of IBL methods, transition modeling, and separation. Chapter 3 dis-
cusses the results of the solvers compared against analytical solutions, experimental
data, and XFOIL results. Finally, Chapter 4 offers takeaways from the models and
17
Chapter 2
IMPLEMENTATION
2.1 Structure
While Thwaites’ Method and Head’s method have both been implemented using com-
putational methods (Cebeci and Bradshaw [8] present implementations of both), this
work provides a Python implementation that makes use of a common parent class and
user interface between the two that can be used as the basis for the implementation
of other Integral Boundary Layer methods. Figure 2.1 shows the overall structure of
the module. In addition, fig. 2.2 shows the classes implementing laminar separation,
boundary layer transition, and turbulent separation. The structure shown in fig. 2.1
serves multiple purposes. There are two major divisions between the object classes
in fig. 2.1 that may be made in order to better understand the implementation. The
first is a vertical division between Thwaites’ and Head’s method. The second is a
The division between Thwaites’ and Head’s methods is the more trivial of the two.
Thwaites’ and Head’s methods are separate methods for laminar and turbulent analy-
sis, so this division shows the classes associated with each method. This division also
highlights their parallel implementations and common inheritances from the IBLSim
18
IBLSimData
+char_length
+nu
+u_e_vec
+u_inf
+x_vec
-x_u_e_spline
+y0
-ue(x)
-duedx(x)
ThwaitesSimData HeadSimData
+theta0 +theta_0
+s(lam) +h_0
+h(lam) +c_f_0
<<use>> <<use>>
ThwaitesSim HeadSim
-__init__(ThwaitesSimData) -__init__(HeadSimData)
+c_f(x) +c_f(x)
+lam(x) +h(x)
+h_x(x) +rtheta(x)
+s_x(x) +theta(x)
+theta(x)
IBLSim
-sim_x_vec
-dense_output_vec
-derivatives(t, y)
-__init__(IBLSimData)
+y(x)
TransitionModel SeparationModel
-iblsim -iblsim
+x_tr +x_sep
+h0 +separated
-transitioned -buffer
-buffer -criteria(x)
-criteria(x) -__init__(iblsim, criteria, buffer)
-__init__(iblsim, criteria, h0calc, buffer)
19
Integral Boundary Layer methods share common attributes; they manipulate the
momentum integral equation, eq. (1.15), and relationships using an edge velocity dis-
equations that may be solved for over x. When pursuing the problems computa-
tionally, it follows that certain details can be abstracted from any Integral Boundary
Layer method and reused for other methods of the same category, in order to avoid
abstracted into a parent class. Both simulations need velocity distributions as func-
tions of x and one or more boundary conditions to run, and need to return results.
A user running a simulation through transition would make use of both models and
should not have to learn two separate conventions in order to implement them. At
the very least, a parent class maintains that the user interfaces between models are
consistent. In addition, updates and revisions that would benefit both IBL models
(or future models using the same parent classes) may be implemented in the parent
As shown in section 1.7, both simulations require current estimates of ue and due/dx
accomplish this when given only points from a velocity distribution, a cubic spline
was implemented in the IBLSimData class [22]. The spline not only returns both the
edge velocity and due/dx as functions of x, but also ensures a smooth first derivative
for optimal behavior of the Runge-Kutta solver. It uses an edge condition that sets
the first and second segment at each curve end with the same polynomial. Internal
testing showed that this edge condition was appropriate for these results.
20
2.1.2 User Interface
The division between the Sim and SimData classes is a user interface feature that
uses object classes to differentiate between the setup and results of each simulation.
The SimData classes receive and process the data, creating the velocity distribution
spline and saving the appropriate initial conditions for access by the simulation. Any
modification made from one simulation to the next can be made on this class. For
example, changing the momentum thickness at the stagnation point does not require
creating simulation data from scratch. This class does not represent any simulation
The Sim classes accept only a SimData class as an input from the appropriate sim-
ulation. Creating a Sim class runs the simulation, storing dense output polynomials
from between each pair of solution points. In order to query the results, the IBLSim
parent class contains a method that takes one or more x values, finds the appro-
priate polynomial fit, and returns the appropriate y value or vector at that point.
objects.
Because the simulation inputs and the simulations are implemented as objects instead
of dictionaries or arrays, their attributes have permissions that keep them from direct
access to the user. This prevents values being edited erroneously, and tracks values
21
Thwaites’ method improves the predictive results by eliminating assumptions that
θ2 due
λ= (1.16 revisited)
ν dx
ue dθ2
= 2(−[H(λ) + 2]λ + s(λ)) = F (λ) ≈ .45 − 6λ (2.1)
ν dx
Although s and H are treated as functions of λ when querying results and are calcu-
mate the relationship 2(−[H(λ) + 2]λ + s(λ)), or F (λ), as a linear relationship. This
linear approximation allows for the Thwaites integral, eq. (1.23) (restated below) to
Z x
2.45ν
θ = 6 u5e dx (1.23 revisited)
ue 0
When arranging this method for the Runge-Kutta integrator, eq. (2.1) may be solved
Using θ2 as the simulation variable y, λ can be obtained from θ2 and the velocity
spline, and this can be propagated downstream. Implemented in this way, this method
22
Using the same method to estimate λ, and using fits to s and H, the assumption of
linearity for F may be instead removed so that eq. (2.1) then becomes:
This uses more detail on the front end, solving for θ using s and H.
In addition, a cubic spline was used to estimate s and H using Thwaites’ original
tabulated values. Fits introduced by Cebeci and Bradshaw [8] and White [17] intro-
duce up to 10% error at some points and are limited in their applicable ranges. In
addition, their piecewise nature does not ensure a smooth derivative for the entirety
With more care taken in modeling θ, Thwaites’ method was implemented in a more
consistent form to its derivation, and with more direct influence from Thwaites’ values
of s and H.
The module assumes that the starting point for ThwaitesSim, x_vec[0], is a stag-
nation point, unless theta0 is given. The momentum thickness is determined using
s
.075ν
θ0 = due
(2.4)
dx 0
Note that the slope of the edge velocity distribution is used here and can have a signif-
icant impact on the boundary layer predictions. In addition, this relationship requires
the edge velocity derivative at zero to be infinite for zero momentum thickness.
For the special case of a flat plate, θ0 may be set equal to 0. If the velocity distribution
does not begin at the stagnation point, θ0 must be known and set with theta0. The
23
user may specify a starting point, x0, if not starting at the first point of the velocity
In order to provide transition analysis for Thwaites’ method and accompanying initial
conditions for Head’s method, this implementation utilizes the Michel transition cri-
and is a sufficient proof of concept to show that the laminar and turbulent solvers
could be tied together to simulate transition. In this respect, more focus was given
The transition model uses a parent class, TransitionModel, in order to make some
of the transition features available for other models. Michel is a class that takes a
completed simulation (SimData) as an input, and has methods and attributes that
find and describe the transition point. Taking advantage of the laminar solver’s dense
output, the implementation of the Michel criteria inherits an iterative method from
.4
xue (x)
Reθ = 2.9 (1.35 revisited)
ν
After this point, the Michel class will return an estimated value of the shape factor
after transition, Htr , . The method uses the following relationship presented by Coles
[11]:
1.4754
Htr = + .9698 (2.5)
ln(Reθ |xtr )
The Michel object returns this value after solving for xtr .
24
2.4 Head’s Method
beci and Bradshaw [8] fairly closely, using the same empirical fits. H1 (H) is fit with
3.3 + 0.8234(H − 1.1)−1.287
for H ≤ 1.6
H1 (H) ≈ (1.28 revisited)
3.3 + 1.5501(H − 0.6778)−3.064
for H > 1.6
In order to determine dH1/dH , it is useful to note that both segments are of the form:
dH1
= ac(H − b)c−1 (2.7)
dH
Two separation models were implemented in this project for comparison with test
cases, based on the possibility that nonphysical or inconsistent results could be the
TransitionModel class, with methods to optimize for the x value of separation using
25
The criteria used for laminar separation using Thwaites method is a λ value of:
Which corresponds to a value of s(λ) = 0. This value was noted by Moran [14] along
with correlation formulas for λ, and the assertion that the wall shear stress is 0 at
separation.
For Head’s method, the criteria used for separation was instead the value of H. This
was due to the Ludwieg-Tillman relation for cf LT = 0.246 ∗ 10−.678H Rθ−.268 tending to
0 as H grows. Shape factor was shown to have sufficient correlation with turbulent
separation when:
The specificity of the value was not seen as critical since the derivative of H was also
very high at separation. This relationship was also prescribed by Moran [14].
found to have separated at any point, results downstream of that point were said
boundary layer.
26
Chapter 3
Because Falkner-Skan flow can be solved analytically with Thwaites’ method, it was
chosen as a test case for the current method. This series of tests allowed for com-
these simulations begin at an offset from zero. Chapter A describes the reason for
These various cases produce results with accuracies consistent with Thwaites’ method.
Thwaites’ method is known to be within 10% of exact results before separation [17].
The analytic solution using Thwaites’ method matches the Falkner-Skan solution
closely, but not exactly. Section 1.5.1 shows how Thwaites’ method may be used to
calculate the momentum thickness for Falkner-Skan flow. In addition, the simulations
with non-linearized F (λ) were expected to differ from the numerical solutions using
Even the solution between the numerical and analytical solutions using linearized
27
The solver was tested at various values of m. Three are presented here. As noted
earlier, Falkner-Skan flow with a value of m = 0 reduces to Blasius flow. Each of the
numerical methods was given a starting value of θ0 from the analytic Falkner-Skan
result.
The three simulations are meant to compare against known results and validate the
performance of the algorithm in controlled conditions. The last solution in this section
tested the resilience of this implementation and made a naive attempt at solving
without the analytical solution for θ0 , instead implementing the Moran stagnation
condition. While it is important that this algorithm perform well with specific initial
conditions, the fourth case is intended to show its robustness in cases where the initial
The results were compared against the Falkner-Skan solution and the analytical
Thwaites solution for the corresponding m and u∞ values. While the derivative
of the velocity profile may be derived analytically, the Runge-Kutta solver was given
only points from the velocity distribution in order to show the ability of the cubic
uniform edge velocity distribution ue = u∞ . Figure 3.1 demonstrates that the solver
results match very closely with the analytical solution using Thwaites.
28
·10−3 ·10−3
6
2
4
θ (m)
δ (m)
1
2
0 0
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
x(m) x(m)
·10−2
2.8
2
2.6
H
cf
1
2.4
Figure 3.1: Falkner-Skan Flow, m=0 Results. For this flow, the analytical,
linear, and interpolated Thwaites method are very consistent.
29
θ
0
10 δ
cf
H
10−1
Relative Error
10−2
10−3
10−4
10−5
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x(m)
θ
100 δ
cf
H
10−1
Relative Error
10−2
10−3
10−4
10−5
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x(m)
30
3.1.2 Falkner-Skan Flow, m=1
x
ue = u∞ (3.1)
L
due u∞
= (3.2)
dx L
This simulation’s results are presented in fig. 3.4, and the errors for each simulation are
presented in fig. 3.5 and fig. 3.6. This result shows that the linearized and interpolated
Thwaites produce similar results for this condition to the analytic solution. While the
solution begins at the given value of θ0 , it quickly gravitates towards the Thwaites
While the m = 0 and m = 1 examples both gave useful results for quantifying the
effectiveness of the various new implementations of Thwaites, they were both fairly
special cases of Falkner-Skan flow. The case with m = 0 results in constant edge
more average Falkner-Skan flow. The results for a simulation at this condition are
31
·10−4 ·10−4
9
3.5 8.5
θ (m)
δ (m)
8
3
7.5
2.5
7
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
x(m) x(m)
0.3
0.2 2
H
cf
0.1
1.5
0
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
x(m) x(m)
Falkner-Skan
Thwaites (Analytical)
Thwaites
Thwaites (Linear)
32
θ
100 δ
cf
H
10−1
Relative Error
10−2
10−3
10−4
10−5
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x(m)
Figure 3.5: Falkner-Skan Flow Error, m=1. This result was generated
using the full estimation of F (λ) with cubic fits for s and H.
θ
100 δ
cf
H
10−1
Relative Error
10−2
10−3
10−4
10−5
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x(m)
Figure 3.6: Falkner-Skan Flow Error. This result was generated using the
linear estimation of F (λ) with the cubic fits for s and H used only after θ
had been solved.
33
The spline for the m = 0 and m = 1 cases was given a relatively simple velocity
distribution to approximate for the other two cases, given that their m values both
Figure 3.7, fig. 3.8 and fig. 3.9 show the total results and associated errors for this
simulation. These results show similar errors to the m = 0 and m = 1 cases, regardless
of the increased complexity of the edge velocity distribution. Testing showed that the
interpolated values from Thwaites’ paper maintained similar error to the linearized
method.
34
·10−3 ·10−3
1.5
3
1
θ (m)
δ (m)
2
0.5 1
0 0
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
x(m) x(m)
0.1 2.4
H
cf
5 · 10−2 2.35
0 2.3
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
x(m) x(m)
Falkner-Skan
Thwaites (Analytical)
Thwaites
Thwaites (Linear)
Figure 3.7: Falkner-Skan Flow Results, m=1/3. These results are the result
of a more complex velocity distribution.
35
θ
0
10 δ
cf
H
10−1
10−3
10−4
10−5
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x(m)
Figure 3.8: Falkner-Skan Flow Error, m=1/3. This error was calculated
using the Falkner-Skan result as reference. These results are well within
the 10% error reported for the analytic solution.
θ
0
10 δ
cf
H
10−1
Relative Error
10−2
10−3
10−4
10−5
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x(m)
Figure 3.9: Falkner-Skan Flow Error, m=1/3, using linearized F. This sim-
ulation was analogous to the analytical solution, which also had an offset
error from the Falkner-Skan solution.
36
ue
34
Smoothed ue
Smoothed derivative
32
30
ue (m/s)
28
26
24
In order to test the accuracy of the Head’s method implementation, simulations were
run to compare results with a test case presented by Ludwieg and Tillman [5]. The
test case was a flat plate with a mild adverse pressure gradient.
Verification against this specific set of experimental results demonstrated the rela-
tionship between the smoothness of the Head implementation’s inputs and its ability
[5] (and, notably, tabulated in [7]) was used to run the turbulent simulation. The
newer, tabulated data was presented with two plotted results: the edge velocity, ue
as a function of x, and the derivative of edge velocity, due/dx. Both papers note that
this data had been smoothed, but the exact method by which it was smoothed was
not described.
37
−5
−4
−3
due −2
dx
−1
0
ue
1 Smoothed ue
Smoothed derivative
2
0.5 1 1.5 2 2.5 3 3.5 4 4.5
x(m)
In order to run this simulation, points for edge velocity were used from the tabulated
data, extracted from the smoothed plot, and extrapolated from due/dx values taken
from the smoothed derivative plot. Figure 3.10 shows the three splines that were
generated from points taken from the tabulated values and smoothed ue and derivative
plots. Note that the smoothing omitted a small discrepancy near x = 3.3.
While the splines in fig. 3.10 seem to match fairly closely, the derivatives of the splines
(shown in fig. 3.11) show significant differences. The splines from the tabulated ue
and smoothed ue were generated fitting only the points without consideration for
the smoothness of the derivative. The third spline, because it was built from the
ness. Its antiderivative spline (and appropriate integration constant) were used to
38
These different velocity conditions had significant impacts on the boundary layer
fig. 3.12, it is clear that smoothing the derivative made a significant difference in the
accuracy of the program and produced results more closely matching the experimental
results compared to the other edge velocity treatments. Boundary layer data shown
·10−2 ·10−2
4
2
3
θ (m)
δ (m)
2
1
1
0 0
1 2 3 4 1 2 3 4
x(m) x(m)
·10−3
1.5
2.5
1
H
cf
2
0.5
1.5
0
1 2 3 4 1 2 3 4
x(m) x(m)
Tabulated Values
ue
Smoothed ue
Smoothed derivative
Figure 3.12: Flat plate with mild adverse pressure gradient, Head’s
Method. The simulation results using different velocity distrubutions,
alongside tabulated experimental results.
39
100 θ
δ
cf
H
10−1
Relative Error
10−2
10−3
1 1.5 2 2.5 3 3.5 4 4.5
x(m)
Figure 3.13: Head’s method results for a flat plate, mild adverse pressure
gradient. Error for each boundary layer parameter. Without smoothing
implemented, the simulation failed near x = 3.6.
θ
δ
10−1 cf
H
Relative Error
10−2
10−3
Figure 3.14: Head’s method results for a flat plate, mild adverse pressure
gradient with smoothed ue data. Error for each boundary layer parameter.
40
θ
δ
10−1 cf
H
Relative Error
10−2
10−3
Figure 3.15: Head’s method results for a flat plate, mild adverse pressure
gradient using smoothed velocity derivative distribution. Error for each
boundary layer parameter. The error improves slightly from the smoothed
ue result.
0.4
ue
0.35 Smoothed ue
Smoothed derivative
0.3
0.25
un (m/s)
0.2
0.15
0.1
0.05
0
1 1.5 2 2.5 3 3.5 4 4.5
x(m)
Figure 3.16: Flat Plate with mild adverse pressure gradient, Head’s
method - transpiration velocity results.
41
This case shows that in some instances, providing edge velocity data may result in
non-physical results when due/dx is not sufficiently smooth. When possible, smoothed
This test shows the capabilities of this Head’s method implementation to model tur-
bulent boundary layers. When practical, smoothing of the edge velocity derivative
seems to return more accurate results. For example, in a case where an inviscid
very important in generating new panel strengths and running a new inviscid solution.
Figure 3.16 shows calculated transpiration velocities from each simulation’s results.
due dH dθ
un = θH + ue θ + ue H (3.3)
dx dx dx
Clearly, these results show that the smoothness of the velocity derivative has a signif-
icant impact on the resulting transpiration velocity. Smoothness of the data in a use
case like this would be very important. However, in a case where the user is looking
for the momentum thickness at a certain point on the surface, smoothness of the edge
In order to better demonstrate the results of the different methods incorporated into
the module, the results from this work were compared to XFOIL against the current
method. Note that since XFOIL tightly couples the Integral Boundary Layer solu-
tion to its panel strength solution iteration and uses a more sophisticated transition
42
criteria, these results will not match exactly1 . This tight coupling normally involves
several iterations to obtain the final edge velocity and boundary layer results. To
minimize the effects of this tight coupling, care was taken to run only one viscous
iteration of XFOIL for comparison of PyBL and XFOIL results. Even with this con-
sideration, XFOIL’s viscous method is admittedly different and equal results between
these methods should not be expected, nor is XFOIL the gold standard for boundary
layer results. Integral Boundary Layer methods stand in validity on their own [8],
XFOIL was used to create the inviscid flow over the airfoil to be analyzed. From this
solution the edge velocities and stagnation point were found and used as the initial
conditions for PyBL. XFOIL was then run in viscous mode, taking care to limit viscous
iterations to one, to obtain the results needed for the comparisons. This process
allowed the ability to control iterations of XFOIL’s viscous solver and settings for
transition method and location. For comparison against the fully turbulent solution
with Head’s method, this was important for forcing transition as early as possible.
In order to minimize the influence XFOIL’s tightly coupled viscous solver has on its
results, its number of iterations was set to one. However, this does not eliminate the
effect of the boundary layer solution being closely coupled with its panel algorithm.
This results in the data returned from XFOIL not being a true one-way coupling of the
inviscid solution and the Integral Boundary Layer method as in this work. However,
the comparisons are still instructive for examining the predicition capabilities of this
work. Finally, it is recognized that the Michel transition criteria used for this work is
1
Since the Integral Boundary Layer solution affects the inviscid solution, via the transpiration
velocity term, XFOIL uses an interative solution process to converge on the solution and solves for
the panel strengths and Integral Boundary Layer terms simultaneously.
43
criteria parent class provides a building block for future authors to implement their
own transition criteria using the spline and dense output capabilities of the module.
In order to compare laminar results for as much chord length as possible, the laminar-
only test case was chosen at a low Reynolds number, with an airfoil at 0◦ angle of
attack. The airfoil chosen was a NACA 0003 airfoil, which is an airfoil with zero
camber and maximum thickness of 3% of the chord length. This yielded an XFOIL
prediction that did not transition or separate until nearly the trailing edge. The
results are displayed in fig. 3.17. Figure 3.18 shows the associated differences against
XFOIL.
This case did not trigger the module’s transition criteria, but did trigger the sepa-
ration criteria at x = .956. This chord location is where there is very high velocity
derivative.
As seen most prominently in the displacement thickness and shape factor, an insta-
bility in the result arises near x = 0.6 and grows downstream. This fluctuation can
be attributed to the non-smooth edge velocity profile in the XFOIL inviscid results at
the same location, as shown in fig. 3.19. While this may not provide a large percent
difference for velocity, the velocity derivative is significantly affected, also shown in
fig. 3.19. This is another indication, along with the Head’s method example, that
smoothing of the edge velocity and its derivative should be investigated further.
44
·10−2 ·10−2
8
2
6
θ (m)
δ (m)
4
1
2
0 0
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
x(m) x(m)
3.5
2
3
H
cf
2.5
0
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8
x(m) XFOIL x(m)
PyBL
Figure 3.17: Comparison against the fully laminar PyBL result and
XFOIL. PyBL reported laminar separation at x = .956.
45
θ
2 δ
10
cf
101 H
Relative Difference
100
10−1
10−2
10−3
10−4
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
x(m)
Figure 3.18: Difference between the fully laminar PyBL result and XFOIL.
Note that PyBL reported separation at x = .956, so the large spike in
difference near x = 1 is not guaranteed accuracy by the method.
19.6 0
−20
19.4
−40
19.2 −60
(m/s2 )
ue (m/s)
−80
19
−100
due
dx
18.8 −120
18.6 −140
−160
18.4
−180
0.6 0.7 0.8 0.9 1 0.6 0.7 0.8 0.9 1
x(m) x(m)
46
3.3.2 Turbulent Results
For the turbulent results, the choice of airfoil and conditions was less restrictive. In
order to emulate a fully turbulent boundary layer, XFOIL was forced to transition
near the leading edge. A value of x = 0.01 was used as the point at which to transition.
Because x = 0 was the point chosen for initial conditions for the turbulent solver,
this introduced a difference in the result at the leading edge, as seen in fig. 3.20 and
fig. 3.21. Note that there is a discrepancy at the leading edge because of XFOIL’s
transition criteria, which smooths out the transition into a range of chord locations.
After this initial difference, the turbulent results show strong agreement with XFOIL
for the rest of the domain, up until the trailing edge. For this case, the turbulent
separation criteria was met by the Python module very close to the trailing edge
at x = 1.02, due to the large edge velocity velocity derivative at that point. This
value corresponds to the sharp increase in difference with XFOIL for all values at the
trailing edge.
47
·10−3 ·10−2
1
4
θ (m)
δ (m)
2 0.5
0 0
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
x(m) x(m)
·10−2
8 2
6
H
cf
4 1
2
0 0
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
x(m) x(m)
XFOIL
PyBL
48
100
10−1
10−3
θ
δ
cf
10−4 H
This simulation was a comparison against XFOIL with a full implementation of stag-
nation criteria, the laminar Thwaites solver, transition criteria, the turbulent Head
solver, and separation criteria for both the laminar and turbulent simulations. A
different airfoil and flow conditions were tested in order demonstrate the versatility
of the solver. The following result is a NACA 0009 airfoil, run at a Reynolds number
of 2 × 106 and angle of attack of 0◦ . The boundary layer parameters for this result
are displayed in fig. 3.22. The Python module predicted transition at x = 0.492.
This differed from the XFOIL prediction of x = .66. The results showed noticeable
differences in this region, with the largest differences occurring at PyBL’s transition
fairly high for this result. Figure 3.23 shows the differences for variables of interest
for this simulation. While the differences are significant, this is a challenging test case
49
where errors will accumulate as they are propogated downstream. Note that the skin
friction results matched once the XFOIL boundary layer transitioned. Figure 3.22
shows that the trend of the shape factor was not dissimilar to the XFOIL result,
Overall, there is much better matching between the XFOIL and PyBL results com-
pared to the natural transition case. The laminar region matches quite well, and
of the transition. The smoothing of the the transition region impacts the predicted
Figure 3.25 shows the difference between XFOIL and PyBL where the differences in
the laminar region are much less than 10%. The differences in displacement thickness,
skin friction coefficient, and shape factor are highest at the transition location and
then generally decrease downstream. For the momentum thickness, those differences
do not spike at the transition location because both implementations keep the mo-
keep the momentum thickness constant at the the transition location. However, the
While XFOIL results are not to be accepted as truth, they provide valuable compar-
50
·10−3 ·10−3
3
4
2
θ (m)
δ (m)
1 2
0 0
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
x(m) x(m)
·10−2
6 3
4 2.5
H
cf
2
2
1.5
0
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
x(m) x(m)
XFOIL
PyBL
51
θ
101
δ
cf
100 H
Relative Difference
10−1
10−2
10−3
10−4
Figure 3.23: Full simulation result difference against XFOIL. Note that the
largest difference occurs between the two solvers’ estimates of xtr . The Htr
value estimated by Michel did not represent the same gradual transition
as XFOIL’s eN method.
52
·10−3 ·10−3
3
4
2
θ (m)
δ (m)
1 2
0 0
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
x(m) x(m)
·10−2
6
2.5
4
H
cf
2
2
1.5
0
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
x(m) x(m)
XFOIL
PyBL
Figure 3.24: Results after forcing XFOIL to transition at the point pre-
dicted by Michel criteria. The instantaneous change in shape factor de-
fined by the Michel method showed a clear difference from the gradual
change in the XFOIL result.
53
θ
δ
100 cf
H
Relative Difference
10−1
10−2
10−3
10−4
54
Chapter 4
This project shed new light on implementations for Thwaites’ and Head’s methods.
The results have shown to have sufficient agreement for various test cases, and were
implemented such that a user could query an accurate solution value at any point
along the surface. Cases run naively with only points from an inviscid velocity dis-
tribution matched very closely to other viscous simulations, and the dense output
criteria.
In terms of future work to be done, more accurate transition criteria should be im-
plemented in order to produce more realistic results for transition and downstream.
Further, a deeper change to Head’s method (similar to removing the linear assump-
tion of Thwaites’ method for the s and H functions) could add to its fidelity. Better
fits to the empirical relations of Head’s method could improve the quality of the re-
sults. More complex integral boundary layer models can be implemented to improve
the results and provide a wider selection of modeling options. This could include
dimensional geometries.
Not all features of the flow field may be well represented by the cubic spline method
used in this work. For example, surfaces with abrupt steps or gaps may not be
encompass these cases. Finally, more work may be done to investigate the error
55
solver. It is possible that lower or higher order solvers may be a better fit, or that
large step sizes decrease accuracy since portions of the spline may be stepped around
entirely. More work should be done to ensure that this grouping of tools does not
As a general lesson from this project, the empirical and experimental fits and splines
were less accurate in the extreme cases and reduced the quality of the results from
the solver in those regions. This also affected the solution process with the ODE
solver taking large spatial steps, and resulted in nonphysical values or leaving the
domain for the fits. This typically resulted in poor quality solutions or the solutions
diverging.
Finally, creating more comparisons against experimental data would greatly improve
the definition of limits for these solvers and provide a valuable resource for additional
models to be developed. Testing done in this work provided a good baseline com-
parison, but there are a wide range of cases to be covered that are of importance to
aerodynamicists.
Revisiting these methods decades later has proven to be fruitful in refining their
implementations. Only by continued effort will they reach their fullest adoption.
56
Bibliography
[2] V.M. Falkner and S.W. Skan. Aeronautical Research Council Report 1314. 1930.
Aeronautical Quarterly 1.3 (Nov. 1, 1949), pp. 245–280. issn: 0001-9259. doi:
10.1017/S0001925900000184.
[4] H Blasius. The Boundary Layers in Fluids with Little Friction. NACA technical
1950.
search Council Report 3152. London: Her Majesty’s Stationary Office: Ministry
[7] Hubert Ludwieg and W. Tillmann. “Ludwieg and Tillman, mild adverse pres-
sure gradient (1100)”. In: Computation of turbulent boundary layers: 1968 AFOSR-
IFP-Stanford Conference. Ed. by S. J. Kline et al. Vol. II. Meeting Name: Con-
[8] Tuncer Cebeci. Momentum transfer in boundary layers. In collab. with P. Brad-
shaw and Long Beach Faculty publications California State University. Series in
978-0-07-010300-9.
57
[9] J. R. Dormand and P. J. Prince. “A family of embedded Runge-Kutta formu-
lae”. In: Journal of Computational and Applied Mathematics 6.1 (Mar. 1, 1980),
ican Institute of Aeronautics and Astronautics, 1989. 296 pp. isbn: 978-0-
930403-57-7.
[12] Stephen J. Pollard. “Evaluation of the CMARC panel code software suite for the
Mathematical Fluid Mechanics. Basel: Birkhäuser, 2000, pp. 1–70. isbn: 978-3-
[15] John D. Anderson. “Ludwig Prandtl’s Boundary Layer”. In: Physics Today
58.12 (Dec. 1, 2005). Publisher: American Institute of Physics, pp. 42–48. issn:
58
[16] Tuncer Cebeci and Jean Cousteix. Modeling and computation of boundary-layer
flows. 2., rev. and extended ed. Berlin Heidelberg: Springer, 2005. 502 pp. isbn:
978-0-9668461-9-5 978-3-540-24459-2.
[17] Frank White. Viscous Fluid Flow. 3rd edition. New York, NY: McGraw Hill,
[18] Hermann Schlichting and Klaus Gersten. Boundary-Layer Theory. 9th ed. Berlin
3-662-52919-5.
ing history”. In: Journal of Engineering Mathematics 107.1 (Dec. 2017), pp. 5–
[20] Tuncer Cebeci and Jean Cousteix. Modeling and Computation of Boundary-
doc/scipy/reference/generated/scipy.integrate.RK45.html (visited on
07/02/2021).
scipy.org/doc/scipy/reference/generated/scipy.interpolate.CubicSpline.
59
APPENDICES
Appendix A
for numeric implementation of Thwaites’ method starting at zero due to its behavior
near zero. For this reason, the results provided in this thesis avoid starting near zero,
θ2 with respect to x can take a variety of values near zero. These values might be
well-behaved analytically, but this term is often problematic numerically. For these
cases, the assumptions of both the cubic spline derived from the velocity distribution
and the Runge-Kutta solver leave the program with no ability to accurately represent
the behavior of the initial conditions. For some cases, the slope is infinite, and the
cubic spline cannot represent thst. This results in the polynomial fits being poorly
θ2 due/dx
λ= (1.16 revisited)
ν
60
At the first solver step, the values of ue and θ (given that the exact value of θ from the
Falkner-Skan solution is used) are exact values. Note that if ue = 0, then this term
will usually be ∞ (depending on the value of the numerator), and the ODE solver will
not be able to proceed. Even if the derivative is finite for this case, special treatment
would be needed for the numerical implementation to handle the indeterminate 0/0
result. In addition, due/dx is a cubic spline estimate, and this makes the evaluation of
λ problematic in some situations. The Falkner-Skan flow edge velocity can directly
The analytic edge velocity derivative, which the solver is only estimating, has the
form:
due mu∞ x m−1
= (A.2)
dx L L
61
The value of due/dx at x = 0 (found analytically) take the forms:
0 for m = 0
due
(0) = ∞ for 0 < m < 1 (A.3c)
dx
u∞
L
for m = 1
Immediately after x = 0:
0 for m = 0
due
(x > 0) = mu∞ x m−1 (A.3d)
dx L L
for 0 < m < 1
u∞
L
for m = 1
Examination of eq. (A.1) and eq. (A.3a)-eqs. (A.3a) to (A.3d) shows that for x = 0,
dθ2/dx is not finite for m > 0. Further, eq. (A.3c) and eq. (A.3d) show that due/dx is
infinite for some values of m at x = 0. For most cases, a cubic spline cannot accurately
represent this function. For these reasons, the Falkner-Skan flows presented in this
62