Orthogonal Decomposition Tutorial
Orthogonal Decomposition Tutorial
Orthogonal Decomposition Tutorial
Weiss, Julien: A Tutorial on the Proper Orthogonal Decomposition. In: 2019 AIAA Aviation Forum. 17–21
June 2019, Dallas, Texas, United States.
Terms of Use
This work is licensed under a CC BY 4.0 License (Creative
Commons Attribution 4.0 International). For more information
see https://creativecommons.org/licenses/by/4.0/.
A Tutorial on the Proper Orthogonal Decomposition
Julien Weiss∗
Technical University of Berlin, 10587 Berlin, Germany
I. Introduction
The Proper Orthogonal Decomposition (POD) originates from the eld of turbulence. It was introduced
to the uid-dynamics community by Lumley in 1967 [1] as an attempt to decompose the random vector eld
representing turbulent uid motion into a set of deterministic functions that each capture some portion of
the total uctuating kinetic energy in the ow. The hope was that a limited number of these deterministic
functions the POD modes can give the analyst some idea about the organization of the ow. In other
words, the POD should help us nd the elusive coherent structures that populate turbulent ows but yet
are surprisingly dicult to dene and observe.
Let us write the uctuating velocity in a ow u0 (x, t), where u0 is the velocity vector U minus its temporal
mean U (we are assuming a statistically stationary ow with a dened temporal mean). Our notations are
x = (x, y, z) for the position vector, U = (U, V, W ) for the velocity vector, and t for time. The idea behind
the POD is to decompose the random vector eld u0 (x, t) into a set of deterministic spatial functions Φk (x)
modulated by random time coecients ak (t) so that:
∞
X
u0 (x, t) = ak (t)Φk (x). (1)
k=1
The Φk (x) are the POD (spatial) modes and the ak (t) are their time coecients.
In practice, there are many ways to write a decomposition like Eq. 1, the familiar Fourier decomposition
being another well-know method.
Pn The P in POD comes from the fact that the POD is `proper', or optimal,
inasmuch as the sequence k=1 ak (t)Φk (x) maximizes the kinetic energy that can be captured by the rst
n spatial modes. The O in POD comes from the fact that the modes are orthonormal, which means that in
a suitable function space one can write:
ZZZ 1 if k = k
1 2
Φk1 (x)Φk2 (x)dx = . (2)
x 0 if k1 6= k2
The orthonormality property is quite useful since it implies that each time coecient ak (t) only depends on
the spatial mode Φk (x). Indeed, by multiplying Eq. 1 with Φk (x) and integrating over space one obtains:
ZZZ
ak (t) = u0 (x, t)Φk (x)dx. (3)
x
∗ Professor, Chair of Aerodynamics, Associate Fellow AIAA.
1 of 21
In this tutorial, we will illustrate the POD through its computation on the velocity elds measured
experimentally by particle image velocimetry (PIV) in a turbulent separation-bubble ow (TSB). The general
ow geometry is illustrated in Fig. 1 and was investigated in detail in [13]. An incoming turbulent boundary
layer separates because of an adverse pressure gradient and reattaches further downstream because of a
favorable pressure gradient. What we call a TSB is a recirculation zone that is observed on the ceiling of
the wind tunnel and that is bounded by a shear layer. The PIV eld of view is a 200 mm × 80 mm vertical
rectangle roughly centered at x = 1825 mm and z = 0 mm.
The PIV data consists of Nt = 3580 vector elds of 129(Nx ) × 45(Ny ) velocity vectors (U, V ) measured
on a Cartesian grid in the (x, y) plane. The sampling frequency is 900 Hz. For the sake of simplicity we will
only consider the longitudinal velocity U in the calculations. Fig. 2(top) shows an example of instantaneous
contour plot of the longitudinal velocity eld obtained from PIV (one specic snapshot). It can be seen that
the ow is indeed highly unsteady. Fig. 2(bottom) shows the corresponding time-averaged, longitudinal
velocity eld with a few representative mean streamlines.a
Let's start by analyzing the data obtained at two positions (a) and (b) within our separation bubble.
These two points are illustrated by the two small circles in Fig. 2(bottom). Our velocity data thus consists
of two arrays of m = Nt = 3580 longitudinal velocity values (Ua (ti ) and Ub (ti )) that we can concatenate
into one m × 2 matrix S, which we will call the matrix of snapshots:
a The PIV data is available as MATLAB workspace at http://dx.doi.org/10.14279/depositonce-8447.
2 of 21
U (m/s)
0 18
(a) (b) 14
20
y (mm)
10
40
6
60 2
-2
1750 1800 1850 1900
x (mm)
Figure 2. Top: Example of instantaneous longitudinal velocity eld in m/s. Bottom: Time-averaged, longitu-
dinal velocity eld in m/s. The white line approximately delimits the region of negative mean velocity. The
black lines are three representative mean streamlines. The two circles denote the measurement points used in
Section III.
Ua (t1 ) Ub (t1 )
Ua (t2 ) Ub (t2 )
..
S= .. . (4)
. .
Ua (tm ) Ub (tm )
Since we are mostly interested in the ow dynamics, we start by removing the average velocities U a
and U b from their respective columns in order to get a new snapshot matrix consisting only of the velocity
uctuations u0a (t) = Ua (t) − U a and u0b (t) = Ub (t) − U b . We call this new matrix U:
u11 u12 u0a (t1 ) u0b (t1 )
u21 u22 u0a (t2 ) u0b (t2 )
U= .. .. ..
= .. . (5)
. . . .
um1 um2 u0a (tm ) u0b (tm )
The time traces of u0a and u0b are shown in Fig. 3 for an arbitrary time interval. Since we are looking at
a turbulent ow, the two signals are essentially random. However, because positions (a) and (b) are not too
far apart, the traces tend to follow each other. In other words, there is some correlation between the two
velocity signals.
We can also look at our data on a 2D plot where the x-axis represents the magnitude of u0a and the
y -axis that of u0b . Each row of U is a point on this plane and when we plot all the rows, what we typically
3 of 21
u0 (m/s)
0
-10
0.9 0.95 1 1.05 1.1
t (s)
10 10
5 5
u0b (m/s)
0 0
-5 -5
Data
Proj on
=(0.894,0.447)
-10 -10
-10 -5 0 5 10 -10 -5 0 5 10
u0a (m/s)
Figure 4. Raw data plotted on a plane. Figure 5. Raw data projected on unit vector φ.
see is a sort of ellipse like that shown in Fig. 4. Why do we see an ellipse? Again, this is because our data
is correlated. Statistically, there is a relationship between u0a and u0b : when one moves in one direction, the
other also tends to move on average in the same direction. Thus, although the velocity uctuations are
essentially random, there is still some order in this randomness, and this order is seen through the correlation
between u0a and u0b . When we search for coherent structures in a ow, this is precisely what we are interested
in: a zone where the uid moves in sync and the velocity uctuations are correlated.
We can verify that our data is correlated by computing its covariance matrix C, which in our 2D case is
the 2 × 2 matrix
m
X m
X
u02
a (ti ) u0a (ti )u0b (ti )
1 1
UT U = (6)
i=1 i=1
C= .
m m
m−1 m − 1 X 0 X
ub (ti )u0a (ti ) 02
ub (ti )
i=1 i=1
The diagonal elements of the covariance matrix are the respective variances of u0a and u0b , whereas each o-
diagonal element is the covariance between u0a and u0b . The covariance matrix is thus necessarily symmetric
and if the o-diagonal terms are non-zero, this implies that there is indeed a statistical correlation between
u0a and u0b . If the covariance matrix were diagonal, this would mean that u0a and u0b are perfectly uncorrelated.
For the data shown in Fig. 4, the covariance matrix is
4 of 21
and in the case of our example from Fig. 5 we obtain varφ (a) = 7.19 m2 /s2 , which is larger than the
variances expressed on the horizontal axis (var(1,0) (a) = var(u0a ) = 4.92 m2 /s2 ) or on the vertical axis
(var(0,1) (a) = var(u0b ) = 5.01 m2 /s2 ).
Now, obviously there is an innity of ways to do this. Any direction φ will lead to a new value of the
variance in this direction. However, intuitively there are two directions that are particular in Fig. 4, namely
the major and minor axes of the ellipse representing our data. It is obvious from Fig. 4 that the maximum
variance will be obtained on the major axis and that, once this direction is considered, the `rest' of the
variance will occur on the minor axis. So the projection Uφ will have maximum variance if φ is on the
major axis of the ellipse. Furthermore, since the major and minor axes are orthogonal, the two unit vectors
in their directions form an orthonormal basis for our dataset. These axes are called the principal axes or the
proper orthogonal modes of the dataset.
How do we compute the directions of the major and minor axes? Using tools from linear algebra, one can
show that they are the two eigenvectors of the covariance matrix C. There is also an intuitive way to see this:
in the proper orthogonal basis, the variance on each axis is maximized and, as a corollary, the covariance
between axes should ideally be zero. This means that the covariance matrix should be a 2 × 2 diagonal
b The correlation coecient ρ between two random variables is dened as their covariance divided by the product of their
standard deviations. By construction this coecient will lie between −1 and 1. When ρ = 0 the variables are said to be
uncorrelated. When ρ = ±1 the variables are either perfectly correlated (+1) or perfectly anti-correlated (−1).
5 of 21
5 5
u0b (m/s)
u0b (m/s)
0 0
-5 -5 Proj on EV1
Data Proj on EV2
EV 1 EV 1
EV 2 EV 2
-10 -10
-10 -5 0 5 10 -10 -5 0 5 10
u0a (m/s) u0a (m/s)
Figure 6. Raw data with directions of the eigen- Figure 7. Projection of the data points on the
vectors (EVs) of the covariance matrix. eigenvectors of the covariance matrix.
matrix in the proper orthogonal basis. Now, remember that C is symmetric and as such its eigenvectors
necessarily form an orthonormal basis in which C can be diagonalized [14]. Therefore, the optimized basis
to express our data is simply the set of eigenvectors of the covariance matrix, which are easily computed in
MATLAB by: [PHI LAM] = eig(C). Note that, as a convention, we order the eigenvalues from the largest
to the smallest, so our rst eigenvector is the one that corresponds to the largest eigenvalue and so on. We
will see shortly that this ordering is equivalent to ranking the modes based on their contribution to the total
uctuating kinetic energy. Formally, the covariance matrix C is diagonalized as
1 1 1
C0 = AT A = (UΦ)T (UΦ) = (ΦT UT UΦ) = ΦT CΦ = ΦT ΦΛΦT Φ = Λ. (13)
m−1 m−1 m−1
6 of 21
• For (1,0), u0a tends to uctuate but not u0b . In this case, the velocity uctuations are not correlated
and the proper orthogonal basis coincides with the natural basis.
√ √
• Finally, for ( 2/2, − 2/2), u0a and u0b tend to uctuate in opposition of phase with the same amplitude.
Here also, this could mean a specic structure in the ow, where the velocity at points (a) and (b) is
anti-correlated. This is the case in Fig. 7 for the second mode.
u0b
√ √
( 2/2, 2/2)
(1,0) u0a
√ √
( 2/2, − 2/2)
Futhermore, the eigenvalues rank the correlation with respect to the variance of the data, which when
we consider velocity measurements is the same as saying that they rank the correlation with respect to the
kinetic energy of the velocity uctuations. In the data shown above, λ1 = 7.78 m2 /s2 and λ2 = 2.15 m2 /s2 .
The TKE is still given by one half of the diagonal elements of the covariance matrix, this time expressed
in the proper orthogonal basis.c Thus we have again TKE = 12 (λ1 + λ2 ) = 4.96 m2 /s2 . But now we can
compute the proportion of TKE produced by each mode: for mode 1 it is λ1 /(λ1 + λ2 ) ' 0.78 and for mode
2 it is λ2 /(λ1 + λ2 ) ' 0.22. So approximately 78% of the TKE is accounted for by the rst mode and only
22% by the second. From Fig. 7 we see that the rst mode is roughly oriented at 45◦ , which implies a perfect
correlation between u0a and u0b . Since 78% of the TKE occurs in this rst mode, it is not surprising that u0a
and u0b are well correlated. Looking back at Fig. 7, we conclude that we have essentially decomposed our pair
of uctuating velocities into a large portion of in-phase uctuations and a smaller portion of out-of-phase
uctuations.
Let's take a break and summarize what we have done so far. We have taken our original matrix of
snapshots S and removed its mean to obtain the matrix U (note that we typically also call U a snapshot
or data matrix). We have then computed the covariance matrix C = m−1 1
UT U and obtained its matrix
of eigenvectors Φ. Finally, we have projected our matrix U onto each eigenvector to obtain a new matrix
c This is because the trace of an n × n matrix is equal to the sum of its eigenvalues [14].
7 of 21
u11 u12 a11 a12
!
u21 u22 a21 a22 φ11
φ21
..
U= .. = .. ..
. . . . φ12 φ22
am1 am2
1
= Ũ + Ũ , 2
(15)
8 of 21
ui2 u0 (ti )
aik
φ2k
reduction and although it doesn't really make sense to do this on a 2D problem, it is an extremely useful
property for more complicated problems.
10
u0a (m/s)
-10 U~1.1
1
0.9 0.95 1 1.05
~
U2
t (s)
U =U~1 +U~2
10
u0b (m/s)
-10
0.9 0.95 1 1.05 1.1
t (s)
While the 2D example is quite useful to visualize the dierent projections occurring in the POD algorithm,
the real strength of POD as a decomposition method is on larger-dimensional datasets. To illustrate this,
we now consider the POD on the complete longitudinal velocity eld measured by PIV. That is, we have an
n = Nx × Ny = 5805-dimensional problem.
To create our new snapshot matrix, we start by subtracting the time-averaged velocity eld (Fig. 2)
from each of our individual vector elds. We obtain a set of m = Nt = 3580 uctuating velocity elds
u0 (xi , yj , tk ). For each instant tk , we then reorder our dataset by concatenating each individual velocity eld
into one single 1 × n row and we stack those rows onto each other. All our uctuating velocity data is then
summarized into one m × n snapshot matrix U:
9 of 21
10 of 21
Mode 2 Mode 2
0 0.02 400
200
0 0
50
-200
-0.02 -400
1750 1800 1850 1900 0 1 2 3 4
Mode 3 Mode 3
0 0.02 400
200
0 0
50
-200
-0.02 -400
1750 1800 1850 1900 0 1 2 3 4
Figure 11. Left column: rst, second and third POD modes of longitudinal velocity uctuations in the TSB.
Right column: time coecients of rst, second and third POD modes.
Now, how can we interpret our POD modes? √Here √ it is again useful to remember what was done in
the 2D case. In Fig. 8, we interpreted
√ √ the mode ( 2/2, 2/2) as a synchronized uctuation of u0a and u0b .
The n-D equivalent of mode ( 2/2, 2/2) is a region where the spatial mode has approximately the same
value. For example, in the contour plot of mode 1 (Fig. 11), there is a large red region that encompasses
roughly the size of the TSB. This means that the longitudinal velocity uctuations in this region tend to be
correlated and this is interpreted as a global uctuation of the complete TSB √ (for√more details about this
specic case, see [13]). Similarly, in the 2D case, we interpreted the mode ( 2/2, − 2/2) as anti-correlated
velocity uctuations at both measurement points. In the contour plots of modes 2 and 3, we see red and
blue patches with opposite signs. Here also, this means that the longitudinal velocity in these regions is
anti-correlated: when the velocity moves up in the red zone, it tends to move down in the blue zone, and
vice versa. As we will see later, this type of POD mode is often interpreted as a sign of convected structures.
Now in the n-D case, there are obviously a lot of modes. Is it necessary to interpret all of them? Well,
typically we can concentrate on only a few of the low-order modes. This is because the POD ranks the
modes according to their contribution to the total variance. As an illustration, the 10 rst eigenvalues from
our calculation are plotted in Fig. 12. The actual eigenvalues are shown on the left axis and their percent
contribution to the TKE is shown on the right (recall that the contribution from mode i is simply λi /Σk λk ).
It can be seen that the rst eigenvalue is largely dominant, with approximately 20% of the TKE. The second
mode contributes 8% and the contribution from the next ones diminishes slowly. This indicates that a
large chunk of the total uctuations is well represented by the rst mode, whereas the remaining turbulent
uctuations are spread among the higher modes. So looking at the rst few modes is generally sucient to
identify dominant coherent motions.
11 of 21
% TKE
6i
10
2000 8
6
1000 4
2
0 0
2 4 6 8 10
Mode #
Figure 12. Ten rst eigenvalues for the TSB example. Left axis: eigenvalues; right axis: percentage of TKE
from each eigenvalue.
Now, like in the 2D case, we can project our original dataset onto each of the n modes by writing
A = UΦ. Written explicitly we have:
a11 . . . a1n u11 . . . u1n φ11 . . . φ1n
a21 . . . a2n u21 . . . u2n φ21 . . . φ2n
.
. .. = ..
.. ..
..
. (20)
. . . . . .
am1 . . . amn um1 . . . umn φn1 . . . φnn
Referring back to Fig. 9, we can interpret each aij as the projection of the data measured at time i on mode
j . Here it is important to remember that each data point in our n = 5805-dimensional space represents one
velocity eld measured by PIV. In other words, each point in our n-dimensional space represents the value of
the longitudinal velocity at n points in physical space. We refer to the columns of A as the time coecients
of the modes since for each snapshot k = 1, . . . , m there will be one projection on each mode (again it is
useful to visualize the projection in the 2D case in Fig. 9). For the case of our turbulent separation bubble,
the time coecients of the rst three modes (the rst three columns of A expressed as a function of time),
are shown on the right hand side of Fig. 11.
Furthermore, the original snapshot matrix U can be expressed as the sum of the contributions from the
n modes. Indeed, we still have U = AΦ−1 = AΦT :
u11 ... u1n a11 a1n
u21 ... u2n a21 a2n
.
. .. = .. φ11 . . . φn1 + . . . + ..
φ1n . . . φnn (21)
. . . .
um1 ... umn am1 amn
1 1
ũ11 . . . ũ1n ũ11 . . . ũn1n
n
1
ũ21 . . . ũ12n
n
ũ21 . . . ũn2n
= . .. + . . . + .. .. (22)
..
. . .
ũ1m1 ... ũ1mn ũnm1 ... ũnmn
with
ũk11 ... ũk1n a1k
k
ũ21 ... ũk2n a2k
.
. .. = . φ1k
. ...
k
φnk = Ũ . (23)
. . .
ũkm1 ... k
ũmn amk
12 of 21
Eq. 24 implies that we have decomposed our original velocity uctuations into a sum of n contributions
from n proper orthogonal modes. This is the nite-dimensional equivalent of the original innite-dimensional
POD theorem (Eq. 1) which states that the uctuating longitudinal velocity eld u0 (x, t) can be decomposed
into a sum of deterministic spatial functions Φk (x) each multiplied by a uctuating (random) time coecient
ak (t), and which is repeated here for clarity:
∞
X
u0 (x, t) = ak (t)Φk (x). (25)
k=1
Here we have used the traditional notation in which ak (t) is the time coecient of POD mode Φk . In the
nite-dimensional case, and with our previous notation, ak (t) is the column vector (a1k a2k . . . amk )T and
Φk (x) is the row vector (φ1k φ2k . . . φnk ). Again, in our example there are m = 3580 time coecients (one
per snapshot) and n = 5805 spatial points to represent each mode. The orthonormality of the POD modes,
rst discussed in Eq. 2, translates into Eq. 21 in nite dimensions: if matrix Φ were not orthogonal (i.e. if
Φ−1 6= ΦT ), it would not be possible to express uij as a sum of the time coecients aik times the eigenvectors
φjk .
This is where the notion of dimensionality reduction becomes so powerful. Recall that in our example of
a turbulent separation bubble, about 20% of the TKE in the ow is accounted for by the rst POD mode
(Fig. 12). What is this mode doing, physically, to produce 20% of the uctuations? In fact, we can visualize
the motion that subtends these uctuations by looking at Ũ1 . All we have to do is reorder matrix Ũ1 into
a series of m = 3580 snapshots, add the mean eld U , and look at the resulting velocity elds. This is done
in Fig. 13, where it can be seen that in this particular case, since the rst mode has a global nature, the
motion that it represents is a contraction and expansion of the complete separation bubble. What we have
done here is create a low-order model (LOM) of the longitudinal velocity using only the rst POD mode.
Now, it is important to realize that this new series of snapshots does not correspond to any real, physical
ow. It is an approximation that accounts for only 20% of the TKE, the other 80% being accounted for by
the other modes. In eect, Fig. 13 is the n-dimensional equivalent of the red curves in Fig. 10.
Figure 13. Low-order model Ũ1 of longitudinal velocity eld in the turbulent separation bubble with rst
POD mode at four random instants. The white line delimits the region of mean backow.
In this specic example, the rst POD mode is idiosyncratic because it contains a fairly large amount
of energy and because its shape is dierent than that of the other modes. In a more general setting, model
reduction consists of approximating the complete uctuating velocity eld by a low-order model using a
13 of 21
Model reduction via POD can also be used to generate a set of ordinary dierential equations (a nite-
dimensional dynamical system) as a simplication of the partial dierential equations normally used to
solve uid-mechanics problems. This is called Galerkin projection but it is out of the scope of the present
document.
In summary, we now show the MATLAB code of the n-dimensional POD as described above. The raw
velocity data is organized as a three-dimensional array S(i, j, k) where the rst index is the y -position in the
eld of view, the second is the x-position, and the third is time. This particular way of computing the POD
is called the direct method.
% Reconstruction on mode k
k = 1; % for example
Utilde_k = A(:,k)*PHI(:,k)';
The original POD equation (Eq. 1) is essentially symmetric in t and x since mathematically there is no
fundamental dierence between the temporal variable t and the spatial variable x. So instead of seeing it as
a decomposition involving deterministic spatial modes and random time coecients, we could also see it as
a decomposition in deterministic temporal modes with random spatial coecients. In other words, we can
interchange t and x in our algorithm. This is called the snapshot POD and it was originally introduced by
Sirovich [15].
There are two ways to do this. A rst possibility would be to transpose our snapshot matrix and follow
the same algorithm as in the previous section. In the second, equivalent method, we start with the same
m × n snapshot matrix U as before but we build the correlation matrix Cs = m−1 1
UUT , which is now m × m
instead of the n × n matrix C of the direct method. Recall that m = Nt is the total number of velocity elds
acquired from the PIV and n = Nx ×Ny is the number of spatial velocity points measured in each eld. Thus,
14 of 21
Φs = UT As ⇒ UT = Φs As −1 = Φs As T ⇒ U = As Φs T . (28)
Similarly to Eq. 24, we can therefore write
m
X
U= Ũks , (29)
k=1
with
(as )1k
(as )2k
Ũks =
.. (φs )1k
... (φs )nk . (30)
.
(as )mk
Now why would we bother using the snapshot POD instead of the direct method? Simply because it is
often faster to run than the direct algorithm. In most practical cases involving planar or volumetric velocity
data, the number n of spatial measurement points is larger than the number m of snapshots: n > m. This
means that the correlation matrix Cs is smaller and easier to store, and that the corresponding eigenvalue
problem is faster to solve. In the example of the turbulent separation bubble, C has 33.7 million elements
but Cs only has 12.8 million. Furthermore, had we considered both the longitudinal and vertical velocity
components, C would have had 135 million elements but Cs would still only have 12.8 million elements.
The snapshot POD is therefore often used in POD calculations involving PIV or CFD datasets, whereas the
direct method is preferred for measurements with a limited number of single-point probes with high temporal
resolution. On top of this, the results are essentially the same: when m < n, the last n − m eigenvalues of
the direct method are zero and the last n − m modes are irrelevant. Thus, when m 6= n, either procedure
returns min(m, n) modes. While the modes calculated separately by the two methods may have opposite
signs, this is not an issue since the corresponding time coecients will also have opposite signs.
To conclude this section, the MATLAB code of the snapshot POD is shown here assuming the same
m × n matrix of snapshots U as before:
15 of 21
% Reconstruction on mode k
k = 1; % for example
Utilde_k_s = A_s(:,k)*PHI_s(:,k)';
The reason why both direct POD and snapshot POD lead to equivalent results is that both methods are
closely related to the singular value decomposition (SVD) of the snapshot matrix U. The SVD is a matrix
decomposition that factorizes a real m × n matrix U into
U = LΣRT , (31)
where L is an m × m orthogonal matrix, Σ is an m × n rectangular diagonal matrix and R is an n × n
orthogonal matrix [12]. The non-zero diagonal elements of Σ are typically a set of r = min(m, n) positive
numbers arranged in decreasing order, i.e. σ1 ≥ σ2 ≥ . . . ≥ σr ≥ 0. These are called the singular values
of U. Essentially, the SVD is a procedure that will diagonalize any rectangular matrix, whereas eigenvalue
decomposition only works for square matrices.
What is the connection between SVD and POD? To see this, let us compute the matrices C and Cs in
light of the SVD. We have
1
UT U
C=
m−1
1 T
= LΣRT LΣRT
m−1
1
RΣT LT LΣRT
=
m−1
1
R ΣT Σ R T (32)
=
m−1
and similarly
1
UUT
Cs =
m−1
1 T
LΣRT LΣRT
=
m−1
1
LΣRT RΣT LT
=
m−1
1
L ΣΣT LT . (33)
=
m−1
16 of 21
So what is the best algorithm to choose from? Clearly the SVD is most economical in terms of lines of
code. However, depending on the dimensions of matrix U, the snapshot POD is often much faster. This
is because the SVD algorithm still needs to compute the n × n matrix UT U to obtain its eigenvectors R.
Therefore, for most applications in experimental or numerical uid dynamics (where n > m), the snapshot
POD is the method of choice. In fact, the snapshot POD was specically developed by Sirovich to speed up
the computation algorithmically [15].
Wouldn't it be nice if the POD modes were a direct spatial representation of coherent structures in the
ow? This was probably the original idea behind the introduction of POD in uid dynamics. Unfortunately,
this is generally not the case. Remember from our 2D example that the spatial modes are a measure of how
the velocity is correlated at dierent points in the ow. While a zone of correlation can indeed represent a
`coherent structure' especially when the corresponding energy is dominant compared to the other modes,
in other words when the ellipsoid representing the data is `shallow' there are many POD modes that add
up to the complete ow when multiplied by their time coecients (Eq. 1). Some of these zones of correlation
appear randomly often due to the turbulent nature of most practical ows, which means that these modes
are simply a manifestation of the randomness of turbulence.
Nevertheless, the POD can be very useful because it enables us to reconstruct a ow with only a few
of the most energetic modes in order to educe motions that are sometimes not easily spotted in the raw
data. In the example of the turbulent separation bubble above, we saw by visualizing Ũ1 that the rst
mode represents a contraction and expansion of the bubble. This is interesting for two reasons, rst because
this motion cannot easily be observed on the original data U due to the many scales of turbulence that are
superimposed on it, and second because this motion is connected to a fairly large portion (20%) of the TKE,
so we expect it to be an important practical characteristic of the ow.
g This is precisely why we have normalized C with m − 1 in the snapshot POD. If n − 1 had been used, as might have been
s
expected, the eigenvalues of the snapshot method would not have been equal to those of the direct method.
17 of 21
100
80
Energy (%)
60
40
20
0
0 2 4 6 8 10
POD Modes
Figure 15. Contribution of the 10 rst eigenvalues to the TKE for the 2D cylinder case.
Figure 16. POD modes 1 and 2 for the 2D cylinder case. The color contours indicate the magnitude of the
vertical velocity component.
18 of 21
ai
-50
-100
0 5 10 15 20 25 30
t (s)
Figure 17. Time coecients of the rst 2 POD modes for the 2D cylinder case.
Figure 18. Phase portrait of the rst 2 POD modes for the 2D cylinder case.
The POD may also be used to illustrate the convection of vortical structures. Fig. 14 shows a particular
snapshot of the ow around a circular cylinder at a Reynolds number ReD = 100. This data, obtained by
numerical solution of the two-dimensional Navier-Stokes equations and made publicly available by Kutz et
al. [16], shows the typical von Kármán street of alternating vortices in its wake. One hundred and fty of
these snapshots, sampled at regular time intervals on a 450 × 200 grid, are now used to compute the snapshot
POD. Both the longitudinal and vertical velocity components are considered in the POD, which results in a
matrix U containing 150 rows and 450 × 200 × 2 = 180000 columns.
The contribution of the rst 10 eigenvalues to the TKE (the `POD spectrum') is shown in Fig. 15, where
it can be seen that the rst and second modes are largely dominant and contribute to about 50% and 45% of
the kinetic energy, respectively. The two rst spatial modes, Φ1 and Φ2 (the rst two columns of matrix Φ),
are plotted in Fig. 16. Clearly, both modes show the presence of structures resembling vortices in the ow,
which is expected given the predominance of actual vortices in the cylinder's wake. Another interesting point
is that mode 2 appears to be almost exactly the same as mode 1, except for a translation of approximately
a quarter of a wavelength. The eect of this translation becomes apparent if we look at the time coecients
a1 (t) and a2 (t) of these modes (the rst 2 columns of matrix A), which are shown in Fig. 17. These are
nearly sinusoidal and oset by a quarter of a period. Because of these osets, when the two rst spatial
modes are combined with their time coecients and added together, they reproduce the translating and
alternating character of the vortices in the wake. In fact, to show that a pair of POD modes illustrate a
periodic phenomenon, it is common to plot a phase portrait consisting of one time coecient as a function
19 of 21
VIII. Conclusion
Because of the now ubiquitous availability of planar or volumetric velocity databases, the POD has become
a classical tool in experimental and numerical uid dynamics. Nevertheless, the method still appears to be
surrounded by an aura of mystery for the non-specialist. I believe that this is because most texts describe it
in terms of abstract functional spaces, which are not part of the usual mathematical toolbox of mechanical
and aerospace engineers. In this tutorial, I have tried to demistify the POD by approaching it in the nite-
dimensional case, and by restricting the analysis to a separation of variables in terms of space and time.
The POD was also rst illustrated with a 2D example, as is common in the eld of statistics for existing
tutorials on Principal Component Analysis, e.g. [8, 10]. I believe that this is useful to visualize the dierent
projections that occur in the POD algorithm. While this approach might be seen as too restrictive or too
simplistic for the specialist, I hope that it will be useful for students and researchers interested in learning
about the method for applications in experimental or numerical uid dynamics.
Acknowledgements
The author is indebted to Giuseppe Di Labbio for his detailed comments on an earlier version of
the manuscript and for his optimization of the original MATLAB codes. Thanks also to Abdelouahab
Mohammed-Taifour for his processing of the cylinder case.
References
1
J. L. Lumley. The structure of inhomogeneous turbulent ows. Atmospheric turbulence and radio wave
propagation, 1967.
2
G. Berkooz, P. Holmes, and J. L. Lumley. The proper orthogonal decomposition in the analysis of
20 of 21
21 of 21