Flow over a Rotating Disk
Copyright Brian G. Higgins (2008)
Background
The steady flow induced by a infinite disk that rotates in its own plane at z=0 is a classic problem in
fluid mechanics. It is one of the few examples of a swirling flow that involves all 3 components of
velocity.
The swirling flow is taken to have radial symmetry; that is the velocity components do not depend on the
azimuth direction. If the velocity is given by
(1)
v Hr, zL = u Hr, zL e
r
+ v Hr, zL e
q
+ w Hr, zL e
z
then the NavierStokes equations reduce to
(2)
1
r
!
!r
Hr uL +
!
!z
HwL = 0
u
!u
!r
+ w
!u
!z

v
2
r
= 
1
r
!p
!r
+ n
!
2
u
!r
2
+
1
r
!u
!r
+
!
2
u
!z
2

u
r
2
u
!v
!r
+ w
!v
!z

v u
r
= n
!
2
v
!r
2
+
1
r
!v
!r
+
!
2
v
!z
2

v
r
2
u
!w
!r
+ w
!w
!z
= 
1
r
!p
!z
+ n
!
2
w
!r
2
+
1
r
!w
!r
+
!
2
w
!z
2
The boundary conditions at the disk surface are no slip and impenetrability conditions
(3)
u Hr, 0L = 0, v Hr, 0L = W, w Hr, 0L = 0
where W is the rotational speed of the disk. Far away from the surface of the disk, viscous effect are
negligible such that
(4)
u Hr, zL 0, v Hr, zL 0 as z
However, the viscous pumping action of the disk is balanced by a uniform axial inflow at infinity:
(5)
w Hr, zL constant as z
von Karman was able to show that Eqns.(2)(8) admit a similaritylike solution defined by
(6)
u Hr, zL = W rF HhL, v Hr, zL = W rG HhL, w Hr, zL = W n H HhL, p Hr, zL = r W P HhL
where h = z W n , and the functions F, G , H and P are determined by
(7)
H' + 2 F = 0,
F'' = G
2
+ F
2
+ F' H,
G'' = 2 F G + H G'
P' = 2 F H  2 F'
subject to the following BCs
(8)
F H0L = H H0L = P H0L = 0, G H0L = 1
F HL = G HL = 0
It is evident from the structure of the equations that the equation for P is decoupled from the equations
that define F, G, and H. Thus our solution strategy is to solve first for the velocity components defined
by F , G and H, and then solve for the pressure P.
In the next section we will show how these equations can be solved by a shooting method using Mathe
matica. Thereafter, we will use Mathematica to develop a solution near h = 0 in terms of a power series
expansion in h.
Numerical Solution: Method 1
The shooting technique we will use is based on a previous notebook entitled ShootingMethod.nb. The
code is given below. Our goal in the shooting method is to determine the unknown slopes G'(0) and F'(0)
Remove@ODE, sol, FendBC, GendBC, bc, F, G, h, HD
ODE@W1_, W2_D := 92 F@hD + H'@hD 0,
F@hD
2
+ H@hD F'@hD  G@hD
2
F''@hD, F@hD G@hD + H@hD G'@hD + F@hD G@hD == G''@hD,
G@0D 1, F@0D 0, H@0D 0, G'@0D W2, F'@0D W1=;
sol@W1_?NumericQ, W2_?NumericQD :=
NDSolve@ODE@W1, W2D, 8F@hD, G@hD, H@hD<, 8h, 0, 9<D;
FendBC@W1_?NumericQ, W2_?NumericQD := First@HF@hD . sol@W1, W2DL . h 9D;
GendBC@W1_?NumericQ, W2_?NumericQD := First@HG@hD . sol@W1, W2DL . h 9D;
bc = FindRoot@8FendBC@W1, W2D, GendBC@W1, W2D<, 8W1, 0.54, 0.55<, 8W2, 0.65, 0.62<D
8W1 0.510186, W2 0.615892<
Thus we have found a solution such that
(9)
F' H0L = 0.510213, G' H0L = 0.61581
These values are in excellent agreement with published values (see White, 1974). Note: we can
improve the accuracy by increasing the working precision in NDSolve and FindRoot. Finally we should
point out that the above algorithm is very sensitive to the initial guesses for W1, and W2. As White
showed, there is a spurious solution to the equations for values of W1 0.505 and W2 0.593. In
practice what this means is for initial guesses of W1 and W2 that lie outside the range of attraction of the
real solution, the shooting method will fail to converge.
A plot of the solution is shown below
2 FlowRotatingDisk.nb
Plot@Evaluate@8F@hD, G@hD, H@hD< .sol@W1 .bc, W2 .bcDD,
8h, 0, 9<, PlotStyle Thick, Frame True, FrameLabel 8"h", "F,G,H"<D
0 2 4 6 8
0.0
0.2
0.4
0.6
0.8
1.0
h
F
,
G
,
H
The axial flow far from the disk surface is given by
H@hD . sol@W1 . bc, W2 . bcD . h 9
80.879811<
Again this value is in good agreement with published values. In the next section we show how to
develop a series solution that is valid near the disk surface
Numerical Solution: Method 2
With Mathematica Version 6.x, it is now possible to solve BVP directly with NDSolve, implementing a
shooting method
ODE3@L_D := 92 F@hD + H'@hD 0, F@hD
2
+ H@hD F'@hD  G@hD
2
F''@hD,
F@hD G@hD + H@hD G'@hD + F@hD G@hD == G''@hD,
G@0D 1, F@0D 0, H@0D 0, G@LD 0, F@LD 0=
sol4@L_D := Flatten@
NDSolve@ODE3@LD, 8F, G, H<, h, Method 8"Shooting", "StartingInitialConditions"
8G@0D 1, G'@0D 0.65, F@0D 0, F'@0D 0.55, H@0D 0<<DD
The solution is displayed below.
FlowRotatingDisk.nb 3
Plot@Evaluate@8F@hD, G@hD, H@hD< . sol4@12DD, 8h, 0, 8<,
PlotStyle Thick, Frame True, FrameLabel 8"h", "F, G,H"<,
Epilog 8Dashed, Thickness@0.005D, Line@880, 0.8844<, 88, 0.8844<<D<D
0 2 4 6 8
0.0
0.2
0.4
0.6
0.8
1.0
h
F
,
G
,

H
The values of the initial slopes and the value of H[h] for h=15 are given below
8F'@0D, G'@0D, H@15D< . sol4@15D
80.510232, 0.615922, 0.884433<
In the following plot we show the dependence of H[L] on the domain length used in the numerical
solution (takes a while to compute)
Plot@Evaluate@H@LDD . sol4@LD, 8L, 8, 15<,
PlotStyle Thick, Frame True, FrameLabel 8"L", "H@LD"<,
Epilog 8Dashed, Thickness@0.005D, Line@888, 0.8844<, 815, 0.8844<<D<,
PlotRange 80.87, 0.89<, Axes FalseD
8 9 10 11 12 13 14 15
0.870
0.875
0.880
0.885
0.890
L

H
@
L
D
Power Series Expansion
The procedure we will use is based on my notebook entitled ODESeriesSoln.nb. First, we define a
function that is a list of our ODES. Note it is important that the RHS of each equation is zero.
4 FlowRotatingDisk.nb
ODES = 92 F@hD + H'@hD 0, F@hD
2
+ H@hD F'@hD  G@hD
2
 F''@hD 0,
F@hD G@hD + H@hD G'@hD + F@hD G@hD  G''@hD 0=
92 F@hD + H
@hD 0, F@hD
2
 G@hD
2
+ H@hD F
@hD  F
@hD 0,
2 F@hD G@hD + H@hD G
@hD  G
@hD 0=
Next we define a list of rules for the initial conditions
ICS = 8G@0D 1, F@0D 0, H@0D 0<
8G@0D 1, F@0D 0, H@0D 0<
Then we use Series to expand the functions F,G, and H in a Taylor series about h=0 . For convenience
we expand up to O Ih
5
M
PowerSeries = Series@8F@hD, G@hD, H@hD<, 8h, 0, 4<D
:F@0D + F
@0D h +
1
2
F
@0D h
2
+
1
6
F
H3L
@0D h
3
+
1
24
F
H4L
@0D h
4
+ O@hD
5
,
G@0D + G
@0D h +
1
2
G
@0D h
2
+
1
6
G
H3L
@0D h
3
+
1
24
G
H4L
@0D h
4
+ O@hD
5
,
H@0D + H
@0D h +
1
2
H
@0D h
2
+
1
6
H
H3L
@0D h
3
+
1
24
H
H4L
@0D h
4
+ O@hD
5
>
The next step is to substitute the power series expansion into the ODEs. Recall PowerSeries is a
special Mathematica object called a SeriesData object: it behaves like a pure function when it comes
to substituting into an ODE. To ensure this step works the RHS of the equations must be zero.
ODESeries = ODES . Thread@8F@hD, G@hD, H@hD< > PowerSeriesD;
If we inspect the list ODESeries we see that we have generated series solutions for each equation. We
can convert each of these equations into a set of equations involving the coefficients by mapping Logical
Expand onto each expansion:
FlowRotatingDisk.nb 5
AlgebraicEqns = Map@LogicalExpand@D . ICS &, ODESeriesD
:H
@0D 0 && 2 F
@0D + H
@0D 0 && F
@0D +
1
2
H
H3L
@0D 0 &&
1
3
F
H3L
@0D +
1
6
H
H4L
@0D 0 &&
1
12
F
H4L
@0D +
1
24
H
H5L
@0D 0, 1  F
@0D 0 && 2 G
@0D + F
@0D H
@0D  F
H3L
@0D 0 &&
F
@0D
2
 G
@0D
2
+ H
@0D F
@0D  G
@0D +
1
2
F
@0D H
@0D 
1
2
F
H4L
@0D 0 &&
F
@0D F
@0D  G
@0D G
@0D +
1
2
F
@0D H
@0D +
1
2
H
@0D F
H3L
@0D 
1
3
G
H3L
@0D +
1
6
F
@0D H
H3L
@0D 
1
6
F
H5L
@0D 0 &&
1
4
F
@0D
2

1
4
G
@0D
2
+
1
3
F
@0D F
H3L
@0D +
1
4
H
@0D F
H3L
@0D 
1
3
G
@0D G
H3L
@0D +
1
6
F
@0D H
H3L
@0D +
1
6
H
@0D F
H4L
@0D 
1
12
G
H4L
@0D +
1
24
F
@0D H
H4L
@0D 
1
24
F
H6L
@0D 0,
G
@0D 0 && 2 F
@0D + G
@0D H
@0D  G
H3L
@0D 0 &&
2 F
@0D G
@0D +
F
@0D
2
+ H
@0D G
@0D +
1
2
G
@0D H
@0D 
1
2
G
H4L
@0D 0 &&
1
2
G
@0D H
@0D + 2
1
2
G
@0D F
@0D +
1
2
F
@0D G
@0D +
1
6
F
H3L
@0D +
1
2
H
@0D G
H3L
@0D +
1
6
G
@0D H
H3L
@0D 
1
6
G
H5L
@0D 0 &&
1
4
H
@0D G
H3L
@0D +
1
6
G
@0D H
H3L
@0D +
2
1
4
F
@0D G
@0D +
1
6
G
@0D F
H3L
@0D +
1
6
F
@0D G
H3L
@0D +
1
24
F
H4L
@0D +
1
6
H
@0D G
H4L
@0D +
1
24
G
@0D H
H4L
@0D 
1
24
G
H6L
@0D 0>
Next we use Solve to determine the relationship between all the coefficients in our series expansions
seriesCoef = First@Solve@AlgebraicEqnsDD
Solve::svars : Equations may not give solutions for all "solve" variables.
9F
H5L
@0D 2 F
@0D, G
H5L
@0D 8 G
@0D, H
H5L
@0D 4 G
@0D
2
, F
H6L
@0D 2 H1 + 4 F
@0D G
@0DL,
G
H6L
@0D 8 IF
@0D
2
+ 2 G
@0D
2
M, G
H4L
@0D 2 H1 + F
@0D G
@0DL,
F
H4L
@0D 2 G
@0D
2
, H
H4L
@0D 4 G
@0D, H
H3L
@0D 2, G
H3L
@0D 2 F
@0D,
F
H3L
@0D 2 G
@0D, H
@0D 2 F
@0D, H
@0D 0, G
@0D 0, F
@0D 1=
Finally we substitute these coefficients back into the power series expansion of the ODEs
mySeriesSol = PowerSeries . seriesCoef . ICS
:F
@0D h 
h
2
2

1
3
G
@0D h
3

1
12
G
@0D
2
h
4
+ O@hD
5
,
1 + G
@0D h +
1
3
F
@0D h
3
+
1
12
H1 + F
@0D G
@0DL h
4
+ O@hD
5
, F
@0D h
2
+
h
3
3
+
1
6
G
@0D h
4
+ O@hD
5
>
Thus the power series expansion for the flow over a rotating disk valid for small h is given by
(10)
6 FlowRotatingDisk.nb
(10)
F@hD = F
@0D h 
h
2
2

1
3
G
@0D h
3

1
12
G
@0D
2
h
4
+ O@hD
5
G@hD = 1 + G
@0D h +
1
3
F
@0D h
3
+
1
12
H1 + F
@0D G
@0DL h
4
+ O@hD
5
H@hD = F
@0D h
2
+
h
3
3
+
1
6
G
@0D h
4
+ O@hD
5
Note from the numerical solution we have the values for F'[0], G'[0]
Summary
In this notebook we have shown how Mathematica can be used to solve classic problems in fluid
mechanics. The similarity solution that describes steady swirling flow over a disk rotating in its own
plane, known also as the von Karman viscous pump, is solved by a shooting method. We also showed
how Mathematica can be used to generate power series expansion of the solution valid for small h.
References
These notes build on Mathematica programming methods that are discussed in notebooks;
ShootingMethods.nb and ODESeriesSoln.nb. I also found the following references most helpful.
(1) Frank, M. White, Viscous Fluid Flow, McGrawHill, 1974
(2) G.K. Batchelor, An Introduction to Fluid Dynamics,Cambridge University Press,1967
(3) Hermann Schlichting, BoundaryLayer Theory, McGrawHill, 6th Edition, 1968
FlowRotatingDisk.nb 7