-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathLecture8.html
More file actions
902 lines (761 loc) · 42.7 KB
/
Copy pathLecture8.html
File metadata and controls
902 lines (761 loc) · 42.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="favicon.png" type="image/x-icon">
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+JP&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/default.min.css">
<link rel="stylesheet" href="style.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script>
<script>
MathJax = {
tex: {
inlineMath: [['$', '$'], ['\\(', '\\)']],
displayMath: [['$$', '$$'], ['\\[', '\\]']]
},
options: {
renderActions: {
addMenu: []
}
},
svg: {
fontCache: 'global',
scale: 1.0
}
};
document.addEventListener("DOMContentLoaded", () => {
const sidebar = document.querySelector('.sidebar');
const main = document.querySelector('.main-content');
const wrapper = document.createElement('div');
wrapper.className = 'layout';
sidebar.parentNode.insertBefore(wrapper, sidebar);
wrapper.appendChild(sidebar);
wrapper.appendChild(main);
});
</script>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js" async></script>
</head>
<body>
<div class="sidebar">
<img src="Logo_NS-blackboard-Expand.png" alt="Sidebar Image">
<nav>
<ul class="nav-menu">
<li><a href="index.html">Welcome to NFYK22003U</a></li>
<ul class="sub-menu">
<li><a href="CourseInformation.html">Course Information</a></li>
</ul>
<li><a href="Welcome.html">Scope and Sequence</a></li>
<ul class="sub-menu">
<li><a href="CoursePrerequisitesExam.html">Prerequisites Exam</a></li>
<li><a href="IntroductiontoPythonProgramming.html">Introduction to Python Programming</a></li>
<li><a href="MathsSpeedrun.html">Maths Speedrun</a></li>
</ul>
<li>
<a href="Lecture1.html">Lecture 1 – Introduction and Transport Processes</a></li>
<ul class="sub-menu">
<li><a href="Project1.html">Project 1 – Oxygen Budget</a></li>
</ul>
<li><a href="Lecture2.html">Lecture 2 – The Dynamics of Rotating Planets</a></li>
<ul class="sub-menu">
<li><a href="Project2.html">Project 2 – The Sverdrup Relation</a></li>
</ul>
<li><a href="Lecture3.html">Lecture 3 – Origin of Carbon and Water on Earth</a></li>
<li><a href="Lecture4.html">Lecture 4 – The Gulfstream</a></li>
<ul class="sub-menu">
<li><a href="Project3.html">Project 3 – Western Boundary Currents</a></li>
</ul>
<li><a href="Lecture5.html">Lecture 5 – Carbon and Plankton</a></li>
<li><a href="Lecture6.html">Lecture 6 – Quasi-Geostrophy</a></li>
<li><a href="Lecture7.html">Lecture 7 – Theory of the Ventilated Thermocline</a></li>
<ul class="sub-menu">
<li><a href="Project4.html">Project 4 – Shadow Zone</a></li>
</ul>
<li><a href="Lecture8.html">Lecture 8 – Waves</a></li>
<li><a href="Lecture9.html">Lecture 9 – Atmospheric Thermodynamics</a></li>
<ul class="sub-menu">
<li><a href="Project5.html">Project 5 – Hadley Cell</a></li>
</ul>
<li><a href="Lecture10.html">Lecture 10 – Surface and Abyssal Circulation</a></li>
<ul class="sub-menu">
<li><a href="Project6.html">Project 6 – Overturning</a></li>
</ul>
<li><a href="Lecture11.html">Lecture 11 – Ocean Mixing and Overturning Circulation</a></li>
<li><a href="Lecture12.html">Lecture 12 – Stability of the Atlantic Meridional Overturning Circulation</a></li>
<ul class="sub-menu">
<li><a href="Project7.html">Project 7 – Oscillations</a></li>
<li><a href="TestExam.html">Test Exam</a></li>
</ul>
<li><a href="Lecture13.html">Lecture 13 – Applications of Machine Learning in CFD and GFD</a></li>
<ul class="sub-menu">
<li><a href="SailbyNightPhysics.html">Sail by Night Physics</a></li>
</ul>
<li><a href="Appendix.html">Appendix</a></li>
<li><a href="References.html">References</a></li>
</li>
</ul>
</nav>
</div>
<div class="main-content">
<!-- TOC goes here -->
<!--<div class="toc-sidebar" id="toc">-->
<!--<div class="toc-title">☰ Contents</div>-->
<!--<ul id="toc-list"></ul>-->
<!--</div>-->
<h1>Lecture 8 – Waves</h1>
<h2>Internal Gravity Waves</h2>
Rotation effects will only be important for long waves with low frequencies – so we can
assume outright that these are <i>shallow water waves</i>, even in the open ocean. These waves have the same dynamics as shallow-water surface gravity waves, with the addition of the Coriolis force:
$$
\frac{\partial u}{\partial t} - fv = -g \frac{\partial \eta}{\partial x}
$$
$$
\frac{\partial v}{\partial t} + fu = -g \frac{\partial \eta}{\partial y}
$$
Rotating surface gravity waves are called <strong>Poincare waves</strong> or <strong>inertia-gravity waves</strong>. Away from land boundaries, the tide propagates as an inertia-gravity wave.
<img src="Figures/Lecture8_ShallowLayerFluidRotating.png" alt="ShallowLayerFluidRotating" style="margin-top: 1.5em; max-width: 100%; display: block;">
<div class="figure-caption">(A shallow layer of fluid rotating and of constant density.
Credit: Pedlosky, 2003.)</div>
Take \(x\) to be in the direction of propagation of the wave (which is not changed by
rotation) and \(y\) in the horizontal direction perpendicular to the direction of propagation.
The sea surface elevation has the same cosine function as for non-rotating waves, but
water parcel motions are modified by rotation. Again, we are working on very large horizontal scales (in order for rotation to be
important), so vertical velocity is negligible. Water parcel motions are nearly horizontal.
<img src="Figures/Lecture8_ModifiedShallowLayerFluidRotating.png" alt="ModifiedShallowLayerFluidRotating" style="margin-top: 1.5em; max-width: 100%; display: block;">
<div class="code-block">
<button class="copy-btn" onclick="copyToClipboard(this)">Copy</button>
<pre><code class="language-python">import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
import cartopy.crs as ccrs
import cartopy.feature as cfeature
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
import imageio
import os
style_color = '#d6ebff'
plt.rcParams.update({
'text.color': style_color,
'axes.labelcolor': style_color,
'xtick.color': style_color,
'ytick.color': style_color,
'axes.edgecolor': style_color,
'axes.facecolor': 'none',
'savefig.transparent': True,
})
nt = 60 * 24 * 3
dt = 60
lon0 = 288.9
lat0 = 42.4
u0 = 20
v0 = 0
d2r = np.pi / 180
omega = 7.292E-5
re = 6.371E6
xold = yold = 0.0
uold = u0
vold = v0
lonold = lon0
latold = lat0
x_all = np.zeros(nt + 1)
y_all = np.zeros(nt + 1)
lon_all = np.zeros(nt + 1)
lat_all = np.zeros(nt + 1)
u_all = np.zeros(nt + 1)
v_all = np.zeros(nt + 1)
x_all[0], y_all[0], lon_all[0], lat_all[0], u_all[0], v_all[0] = xold, yold, lonold, latold, uold, vold
# Analytic solution
t_all = np.arange(0, nt * dt, dt)
f0 = 2 * omega * np.sin(lat0 * d2r)
x_lytic_all = u0 * np.sin(f0 * t_all) / f0 - v0 * np.cos(f0 * t_all) / f0 + v0 / f0
y_lytic_all = v0 * np.sin(f0 * t_all) / f0 + u0 * np.cos(f0 * t_all) / f0 - u0 / f0
lon_lytic_all = lon0 + x_lytic_all * np.cos(lat0 * d2r) * 360 / (2 * np.pi * re)
lat_lytic_all = lat0 + y_lytic_all * 360 / (2 * np.pi * re)
# First time step
x = xold + dt * uold
y = yold + dt * vold
f = 2 * omega * np.sin(latold * d2r)
u = uold + dt * f * vold
v = vold - dt * f * uold
lat = latold + (y - yold) * 360 / (2 * np.pi * re)
lon = lonold + (x - xold) * np.cos(lat * d2r) * 360 / (2 * np.pi * re)
x_all[1], y_all[1], lon_all[1], lat_all[1], u_all[1], v_all[1] = x, y, lon, lat, u, v
for it in range(2, nt + 1):
xnew = xold + 2 * dt * u
ynew = yold + 2 * dt * v
f = 2 * omega * np.sin(lat * d2r)
unew = uold + 2 * dt * f * v
vnew = vold - 2 * dt * f * u
lonnew = lonold + (xnew - xold) * np.cos(lat * d2r) * 360 / (2 * np.pi * re)
latnew = latold + (ynew - yold) * 360 / (2 * np.pi * re)
xold, yold, uold, vold, lonold, latold = x, y, u, v, lon, lat
x, y, u, v, lon, lat = xnew, ynew, unew, vnew, lonnew, latnew
x_all[it], y_all[it], lon_all[it], lat_all[it], u_all[it], v_all[it] = x, y, lon, lat, u, v
# Map extents
fudge = 1E-2
lon1 = int(lon0) - 5
lon2 = int(lon0) + 5
lat1 = int(lat0) - 5
lat2 = int(lat0) + 5
dlon = (lon2 - lon1) / 5
dlat = (lat2 - lat1) / 5
def custom_gridlines(ax):
gl = ax.gridlines(draw_labels=True, color=style_color, linestyle='--')
gl.xlabels_top = gl.ylabels_right = False
gl.xformatter = LONGITUDE_FORMATTER
gl.yformatter = LATITUDE_FORMATTER
gl.xlocator = mticker.FixedLocator(np.arange(lon1-360, lon2+dlon-360, dlon))
gl.ylocator = mticker.FixedLocator(np.arange(lat1, lat2 + dlat, dlat))
return gl
# Trajectory Plot
plt.figure(1)
ax = plt.axes(projection=ccrs.PlateCarree())
ax.set_extent([lon1 - fudge, lon2 + fudge, lat1 - fudge, lat2 + fudge])
ax.coastlines('50m', color=style_color, linewidth=0.8)
ax.add_feature(cfeature.BORDERS, linewidth=0.5, edgecolor=style_color)
custom_gridlines(ax)
plt.plot(lon_all, lat_all, '-', transform=ccrs.PlateCarree(), color=style_color)
plt.plot(lon_all[-1], lat_all[-1], 'o', color=style_color, transform=ccrs.PlateCarree())
plt.title('Trajectory', color=style_color)
# Static Kinetic Energy
plt.figure(2, facecolor='none')
plt.ylim([199.75, 200.25])
plt.plot((u_all**2 + v_all**2) / 2, color=style_color)
plt.title('Kinetic Energy', color=style_color)
plt.figure(3)
ax = plt.axes(projection=ccrs.PlateCarree())
ax.set_extent([lon1 - fudge, lon2 + fudge, lat1 - fudge, lat2 + fudge])
ax.coastlines('50m', color=style_color, linewidth=0.8)
ax.add_feature(cfeature.BORDERS, linewidth=0.5, edgecolor=style_color)
custom_gridlines(ax)
plt.plot(lon_lytic_all, lat_lytic_all, '-', color='red', transform=ccrs.PlateCarree())
plt.plot(lon_all, lat_all, '-', color=style_color, transform=ccrs.PlateCarree())
plt.plot(lon_all[-1], lat_all[-1], 'o', color=style_color, transform=ccrs.PlateCarree())
plt.title('Trajectory (Comparison)', color=style_color)
# Animation
images = []
filenames = []
nframe = 90
mydir = '.'
for iframe in range(nframe + 1):
it = int(iframe * (nt - 1) / nframe) + 1
plt.figure(figsize=plt.figaspect(0.5), facecolor='none')
ax = plt.axes(projection=ccrs.PlateCarree())
ax.set_extent([lon1 - fudge, lon2 + fudge, lat1 - fudge, lat2 + fudge])
ax.coastlines('50m', color=style_color, linewidth=0.8)
ax.add_feature(cfeature.BORDERS, linewidth=0.5, edgecolor=style_color)
custom_gridlines(ax)
# Highlight analytic solution
plt.plot(lon_lytic_all, lat_lytic_all, '-', color='midnightblue', transform=ccrs.PlateCarree())
# Actual trajectory up to current step
plt.plot(lon_all[0:it], lat_all[0:it], '-', color=style_color, transform=ccrs.PlateCarree())
plt.plot(lon_all[it], lat_all[it], 'o', color=style_color, transform=ccrs.PlateCarree())
plt.title('Trajectory', color=style_color)
filename = os.path.join(mydir, f'temp{iframe:04d}.png')
plt.savefig(filename, bbox_inches='tight', dpi=300, transparent=True)
images.append(imageio.imread(filename))
filenames.append(filename)
plt.close()
# Save the infinite replaying GIF
imageio.mimsave(os.path.join(mydir, 'InertialOscillations.gif'), images, loop=0)</code></pre>
</div>
<img src="Figures/Lecture8_InertialOscillations.gif" alt="InertialOscillations" style="margin-top: 1.5em; border: 1px solid #3c5c78; border-radius: 6px; max-width: 100%; display: block;">
<h2>Shallow-Water Waves</h2>
<img src="Figures/Lecture8_OceanCat.png" alt="OceanCat" style="margin-top: 1.5em; max-width: 70%; display: block;">
<h3>Dispersion Relation</h3>
A dispersion relation relates the wavelength or wavenumber \(k\) of a wave to its frequency \(\omega\).
<ul>
<li>For waves in which the phase speed varies with k, the
various sinusoidal components of a disturbance
originating at a given location are at a later time
found in different places. Such waves are <span class="doubleUnderline">dispersive</span>.</li>
<li>For <span class="doubleUnderline">nondispersive waves</span>, their phase speeds are
independent of the wave number</li>
</ul>
<h3>Internal Waves in Continuous Stratification</h3>
The <strong>dispersion relation</strong> for internal waves in a continuously stratified ocean is:
$$
\omega^2 = N^2 \cos^2 \varphi
$$
One immediate consequence of this expression is that internal waves have frequencies less than $N$. Let’s look at two extreme limits of this dispersion relationship.
<ul>
<li>Let the wave number vector be horizontal:
$$
\lim_{\phi \to 0^\circ} \omega^2 = N^2 \cos^2 \phi = N^2
$$
This corresponds to nearly vertical oscillations of water parcels, where internal waves resemble buoyancy oscillations.</li>
<li>
Let the wave number vector be nearly vertical:
$$
\lim_{\phi \to 90^\circ} \omega^2 = N^2 \cos^2 \phi = 0
$$
The restoring
force on purely horizontal water parcel displacements is the <i>Coriolis force</i> alone and
internal waves in this limit approach <strong>inertial oscillations</strong>. In this limit, the frequency of internal waves approaches the <strong>inertial frequency $f$</strong>, due to the Coriolis force dominating the restoring mechanism:
$$
\omega \to f
$$
</li>
</ul>
In a stratified fluid, an energy source at a fixed frequency will produce different responses depending on the frequency.
<ul>
<li>For low frequency, the response will be in beams that extend at a low angle
away from the source with respect to the horizontal</li>
<li>For higher frequencies, the
beams of energy point more and more vertically</li>
</ul>
<img src="Figures/Lecture8_InternalGravityWaveEnergySource.png" alt="InternalGravityWaveEnergySource" style="margin-top: 1.5em; max-width: 100%; display: block;">
<div class="figure-caption">(Phase configurations of internal gravity waves.
Source is at centre and rays spread out in X-formation with (a) $\omega/N = 0.318$, (b) $\omega/N = 0.900$. Full lines represent troughs and dashed lines represent crests with propagation across the rays; (c) shows the relations between group velocity $\mathbf{C}_g$ and phase velocity direction $\mathbf{k}$.
Credit: Pond, S. and Pickard, G.L. (1983) Introductory Dynamical Oceanography.)</div>
This can be understood in terms of the
direction of energy propagation relative to the frequency. Note that in the limit that the
source oscillates at very high frequency (higher than N), the response would not
propagate.
<h2>Kelvin Waves</h2>
The Kelvin wave is a unidirectional coastally trapped wave such that the amplitude of the wave decreases exponentially away from the coastline, f
acing the direction of the phase velocity.
The Kelvin wave always travels with the wall (coast) on its right side in the Northern Hemisphere.
<img src="Figures/Lecture8_KelvinWaveNHSH.png" alt="KelvinWaveNHSH" style="margin-top: 1.5em; max-width: 100%; display: block;">
<div class="figure-caption">(Northern hemisphere Kelvin waves on opposite sides
of a channel that is wide compared with the Rossby radius. In each
vertical plane parallel to the coast, the currents (shown by arrows)
are entirely within the plane and are exactly the same as those for a
long gravity wave in a nonrotating channel. However, the surface
elevation varies exponentially with distance from the coast in order
to give a geostrophic balance. This means Kelvin waves move with
the coast on their right in the Northern Hemisphere and on their left
in the Southern Hemisphere.
Credit: Mortimer, 1977.)</div>
We work in a rotating shallow-water system, assuming constant mean depth $H$, gravity $g$, and Coriolis parameter $f$. The variables are:
<ul>
<li>$u(x, y, t)$: zonal velocity</li>
<li>$v(x, y, t)$: meridional velocity</li>
<li>$\eta(x, y, t)$: free surface displacement</li>
</ul>
Assume wave propagation along a boundary (e.g., coastline aligned with $x$-direction),
with the boundary at $y = 0$, and velocity normal to the boundary vanishing:
$$
v = 0 \quad \text{at all times}
$$
Here's the system of linearized shallow water equations:
$$
\left\{
\begin{aligned}
\frac{\partial u}{\partial t} &= -g \frac{\partial \eta}{\partial x} \quad &&\text{(Zonal momentum)} \\
f u &= -g \frac{\partial \eta}{\partial y} \quad &&\text{(Meridional momentum with $v = 0$)} \\
\frac{\partial \eta}{\partial t} + H \frac{\partial u}{\partial x} &= 0 \quad &&\text{(Continuity)}
\end{aligned}
\right.
$$
Differentiate continuity in time:
$$
\frac{\partial^2 \eta}{\partial t^2} + H \frac{\partial}{\partial t} \left( \frac{\partial u}{\partial x} \right) = 0
$$
Use Zonal momentum equation:
$$
\frac{\partial u}{\partial t} = -g \frac{\partial \eta}{\partial x} \quad \Rightarrow \quad \frac{\partial}{\partial t} \left( \frac{\partial u}{\partial x} \right) = -g \frac{\partial^2 \eta}{\partial x^2}
$$
Plug in:
$$
\boxed{ \frac{\partial^2 \eta}{\partial t^2} + g H \frac{\partial^2 \eta}{\partial x^2} = 0 }
$$
This is a wave equation with wave speed $c = \sqrt{g H}$.
The dispersion relation is:
$$
\omega^2 = g H k^2 \quad \Rightarrow \quad \omega = \sqrt{g H} \, k
$$
So the phase speed and group speed are:
<ul>
<li>Phase speed $c = \frac{\omega}{k} = \sqrt{g H}$</li>
<li>Group speed $c_g = \frac{d\omega}{dk} = \sqrt{g H}$</li>
</ul>
These are equal and constant, so Kelvin waves are non-dispersive.
All wave components travel at the same speed → wave shape is preserved over time.
<h2>Rossby Waves</h2>
Rossby waves are large-scale,
low-frequency waves influenced by the variation of the Coriolis force with latitude
(the β-effect). They are dispersive, westward-propagating,
and essential for explaining oceanic and atmospheric responses to slow, large-scale forcing like climate change.
Since Rossby waves are very slow, we assume periods longer than weeks:
$$
\frac{1}{T} \ll f \quad \Rightarrow \quad \frac{\partial u}{\partial t} \approx 0, \quad \frac{\partial v}{\partial t} \approx 0 \quad \text{(drop them)}
$$
For Rossby waves, the local acceleration terms are negligible compared to the Coriolis and pressure gradient forces.<br>
Define Rossby deformation radius: $$L_D = \frac{\sqrt{gH}}{f_0}$$
Then:
$$
\omega = -\beta \frac{gk}{H f_0^2} = -\beta \frac{k}{f_0^2} \frac{g}{H} = -\beta L_D^2 k
$$
It should be mentioned that for <i>long Rossby waves</i> (i.e., large wavelength, small $k$), we approximate:
$$
\omega = -\frac{\beta k}{k^2 + \frac{1}{L_D^2}}
\quad \Rightarrow \quad
c = \frac{\omega}{k} = -\frac{\beta}{k^2 + \frac{1}{L_D^2}}
$$
$$
k^2 \ll \frac{1}{L_D^2} \quad \Rightarrow \quad \omega \approx -\beta L_D^2 k
$$
The final expression only appears independent of $k$ because it is the limit for very small $k$.
So final dispersion relation is:
$$
\boxed{\omega = -\beta L_D^2 k}
\quad \text{or} \quad
\boxed{c = \frac{\omega}{k} = -\beta L_D^2}
$$
Rossby waves are
dispersive waves whose
phase speeds increase
rapidly with increasing
wavelength.
This <span class="doubleUnderline">negative phase speed</span> shows Rossby waves <span class="doubleUnderline">propagate westward (always)</span>.
<br>
Below shows a special case of barotropic flow with no internal stratification (1-layer fluid):
<img src="Figures/Lecture8_RossbyWaveSketch.png" alt="RossbyWaveSketch" style="margin-top: 1.5em; width: 100%; display: block;">
<h3>β Effect</h3>
Consider a closed chain of fluid parcels initially aligned along a circle of latitude at time $t_0$, with no initial relative vorticity:
$$
\zeta_{t_0} = 0
$$
Then, the entire chain is displaced meridionally by a small amount $\delta y$ at time $t_1$.
We assume the absolute vorticity is conserved for each fluid parcel:
$$
(\zeta + f)_{t_1} = f_{t_0}
$$
Substituting $\zeta_{t_0} = 0$:
$$
\zeta_{t_1} = f_{t_0} - f_{t_1}
$$
Using Taylor expansion of the Coriolis parameter, the $\delta y$ is the meridional displacement (northward is positive):
$$
f_{t_1} = f_{t_0} + \frac{df}{dy} \, \delta y = f_{t_0} + \beta \, \delta y
$$
So the relative vorticity at $t_1$ becomes:
$$
\boxed{\zeta_{t_1} = -\beta \, \delta y}
$$
The $\beta$ effect induces vorticity
\[
\left\{
\begin{aligned}
&\zeta_{t_1} = -\beta \, \delta y < 0 && \text{(northward displacement: } \delta y > 0\text{)} \\
&\zeta_{t_1} = -\beta \, \delta y > 0 && \text{(southward displacement: } \delta y < 0\text{)}
\end{aligned}
\right.
\]
<ul>
<li>This perturbation vorticity field will induce a meridional velocity field, which advects the chain of fluid parcels southward west of the vorticity maximum and northward west of the vorticity minimum.</li>
<li>The fluid parcels oscillate back and forth about their equilibrium latitude, and the pattern of vorticity maxima and minima propagates to the west.</li>
</ul>
<img src="Figures/Lecture8_BetaEffectVorticity.png" alt="BetaEffectVorticity" style="margin-top: 1.5em; max-width: 100%; display: block;">
<div style="font-family: 'Courier New', Courier, monospace; background-color: #001a33; color: #aaccee; padding: 16px; border: 2px solid #3c5c78;">
<em>Waves in the Atmosphere and Oceans</em>
<table style="width: 100%; border-collapse: collapse; background-color: #001a33; color: #aaccee; border: 1px solid #3c5c78;">
<thead>
<tr>
<th style="padding: 8px; border: 1px solid #3c5c78;" colspan="2">Wave Classification</th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding: 8px;" colspan="2">
<div style="border-top: 1px solid #3c5c78; padding-top: 8px;">
<div style="border-bottom: 2px solid #3c5c78; display: inline-block; margin-bottom: 4px;"><strong>Restoring Force</strong></div><br>
Conservation of potential temperature in the presence of positive static stability ⇒ internal gravity waves<br>
Conservation of potential vorticity in the presence of a mean gradient of potential vorticity ⇒ Rossby waves
</div>
</td>
</tr>
<tr>
<td style="padding: 8px;" colspan="2">
<div style="border-top: 1px solid #3c5c78; padding-top: 8px;">
<div style="border-bottom: 2px solid #3c5c78; display: inline-block; margin-bottom: 4px;"><strong>Types of Waves</strong></div><br>
<strong>External gravity wave</strong> (Shallow-water gravity wave)<br>
<strong>Internal gravity (buoyancy) wave</strong><br>
<strong>Inertial-gravity wave</strong>: Gravity waves that have a large enough wavelength to be affected by the earth’s rotation.<br>
<strong>Rossby Wave</strong>: Wavy motions result from the conservation of potential vorticity.<br>
<strong>Kelvin wave</strong>: It is a wave in the ocean or atmosphere that balances the Coriolis force against a topographic boundary such as a coastline, or a waveguide such as the equator. Kelvin wave is non-dispersive.
</div>
</td>
</tr>
</tbody>
</table>
</div>
<br>
<div style="font-family: 'Courier New', Courier, monospace; background-color: #001a33; color: #aaccee; padding: 16px; ">
<table style="width: 100%; border-collapse: collapse; background-color: #001a33; color: #aaccee; border: 1px solid #3c5c78;">
<thead>
<tr style="border-bottom: 2px solid #3c5c78;">
<th style="padding: 10px; border: 1px solid #3c5c78;">Wave Type</th>
<th style="padding: 10px; border: 1px solid #3c5c78;">Dispersive or Non-Dispersive</th>
<th style="padding: 10px; border: 1px solid #3c5c78;">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding: 8px; border: 1px solid #3c5c78;"><strong>Gravity Waves</strong></td>
<td style="padding: 8px; border: 1px solid #3c5c78;">Both</td>
<td style="padding: 8px; border: 1px solid #3c5c78;">
Deep-water gravity waves are <strong>dispersive</strong><br>
Shallow-water gravity waves are <strong>non-dispersive</strong>
</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #3c5c78;"><strong>Rossby Waves</strong></td>
<td style="padding: 8px; border: 1px solid #3c5c78;">Dispersive</td>
<td style="padding: 8px; border: 1px solid #3c5c78;">Phase speed varies with wavelength</td>
</tr>
<tr>
<td style="padding: 8px; border: 1px solid #3c5c78;"><strong>Kelvin Waves</strong></td>
<td style="padding: 8px; border: 1px solid #3c5c78;">Non-dispersive</td>
<td style="padding: 8px; border: 1px solid #3c5c78;">Constant phase speed regardless of wavelength</td>
</tr>
</tbody>
</table>
</div>
<h3>Bonus: Breaking Wave</h3>
All of our discussion thus far has been based on a linear (small-amplitude) approximation of the full problem. Using this approximation, we have been able to explain many commonly observed properties of surface water waves. However, there is at least one familiar aspect of these waves that cannot be explained by linear theory: breaking,
which is most commonly observed as waves run up a beach.
A wave crest becomes unstable and starts breaking when the particle velocity exceeds the velocity of the wave crest (the wave celerity).
<img src="Figures/Lecture8_BreakingWaveSimple.png" alt="BreakingWaveSimple" style="margin-top: 1.5em; max-width: 100%; display: block;">
<div class="figure-caption">(Steepening of a finite amplitude wave.
Credit: 12.333 | Spring 2004 | Undergraduate Atmospheric and Ocean Circulations, MIT OpenCourseWare.)</div>
This happens for two reasons:
<ul>
<li>As the waves run up the beach, the energy in the wave becomes focused into a shallower layer (once $D \leq k^{-1}$ or so), thus concentrating the energy and increasing the wave amplitude</li>
<li>when $D \leq k^{-1}$ or so, the phase speed becomes dependent on depth, being greater where the water is deeper. In a finite amplitude wave, the water is deeper at the wave crest than in the wave trough. Hence the crests travel faster than the troughs; the crest therefore tend to catch up with and, eventually, overtake the troughs.
This produces the overturning of the wave that is familiar in breakers.</li>
</ul>
<img src="Figures/Lecture8_BreakingWaveDetail.png" alt="BreakingWaveDetail" style="margin-top: 1.5em; max-width: 100%; display: block;">
<div class="figure-caption">(A stationary oblique breaking wave for laboratory testing of surfboards.
Credit: Hornung HG & Killen P 1976.)</div>
<h2>Baroclinic Instability and the Eady Model</h2>
Baroclinic instability generates eddies/waves from a geostrophically balanced, vertically sheared flow. Because of the thermal wind relationship,
the shear flow has horizontal buoyancy gradients, meaning that the height of isentropes varies from place to place.
Thus potential energy is stored in the field and can be released by allowing these deviations to relax, lowering some of the dense fluid that's been raised and raising some of the lighter fluid that's been pushed down.
We shall analyze this using the Boussinesq, quasi-geostrophic equations.
<h3>Eddies</h3>
Large rotating masses of water called <i>vortexes</i> (<i>vortexes</i> = to turn),
which are more commonly known as <span class="doubleUnderline">eddies</span> or rings. <br>
For example, <i>Meanders</i> (<i>Menderes</i> = a river in Turkey that has a very sinuous course, snakelike bends)
along the north boundary of the Gulf Stream pinch off and trap warm Sargasso Sea water in eddies that rotate clockwise, creating warm-core rings surrounded by cooler water.<br>
Cold nearshore water spins off to the south of the Gulf Stream as
counter-clockwise-rotating cold-core rings surrounded by warmer water.
<img src="Figures/Lecture8_EddiesGulfStream.png" alt="EddiesGulfStream" style="margin-top: 1.5em; max-width: 100%; display: block;">
<div class="figure-caption">(A schematic diagram of the Gulf Stream and sea surface temperatures.
As the Gulf Stream meanders northward, some of its meanders pinch off and form either warm-core or cold-core rings.
Credit: <i>Essentials of Oceanography</i>, Trujillo and Thurman.)</div>
The cold rings consist of spinning cone-shaped masses of cold water that extend over 3.5 kilometers deep. These rings may exceed 500 kilometers in diameter at the surface. The diameter of the cone increases with depth and sometimes reaches all the way to the sea floor, where cones have a tremendous impact on sea floor sediment.
Cold rings move southwest at speeds of 3 to 7 kilometers per day toward Cape Hatteras, where they often rejoin the Gulf Stream.
<img src="Figures/Lecture8_EddiesMixedLayer.png" alt="EddiesMixedLayer" style="margin-top: 1.5em; max-width: 100%; display: block;">
<div class="figure-caption">(In winter, the mixed layer becomes thicker because of cooling of the ocean surface (left). On the other hand the mixed layer depth is shallow in summer due to calm winds and stronger solar radiation (right).
Submesoscale structures become more active within the deeper mixed layer in winter (left), while becoming calmer in summer when the mixed layer is shallow (right).
Credit: Jamstec.)</div>
<h3>Storms</h3>
In class we discussed that in the most simple way we can think of the Jetstream as a vertically sheared flow on a rotating disc. An analysis of the potential vorticity equation then showed that any perturbation on this background flow will have to obey:
\[
\phi_{zz} - \frac{N^2 k^2}{f^2} \phi = 0
\]
the boundary conditions being no normal flow at the bottom (i.e., the ground) and top of the atmosphere (with fixed height \( D \)).<br>
$\because \phi(x, z, t) = B \sinh\left( \alpha(z - D/2) \right) e^{i(kx + ly - \omega t)} \text{ with } \alpha = \frac{N k}{f}$<br>
$\because e^{-i\omega t} = e^{-i k c t}, \quad \text{where} \quad c = \frac{\omega}{k}$<br>
$\therefore \text{Let } c = c_r + i c_i\quad \text{(real part + imaginary part)}$<br>
$ e^{-i k c t} = e^{-i k c_r t} \cdot e^{k c_i t}$<br>
$\therefore
\begin{cases}
c_i > 0 & \Rightarrow \text{Instability (perturbation grows)} \\
c_i < 0 & \Rightarrow \text{Stability (perturbation decays)} \\
c_i = 0 & \Rightarrow \text{Neutral (pure oscillation)}
\end{cases}
$<br>
<h2>Ocean Tides</h2>
<i>(The atmosphere and solid Earth also experience tides — just dig a hole here and take a note for later.)</i><br>
In a nutshell, ocean tides refer to the periodic motion of seawater caused by tidal forces exerted by astronomical object (mainly the Sun and the Moon). By convention, the vertical rise and fall of sea level is called the tide, while the horizontal motion is referred to as the tidal current.<br>
In 1687, the physicist Isaac Newton proposed the law of universal gravitation.
Following this, the <span class="doubleUnderline">equilibrium theory of the tide</span> (also known as static tide theory) was developed. This theory assumes that the Earth's surface is entirely covered by a layer of ocean with uniform depth, and that the seawater has no inertia.<br>
Regarding tidal force, it is often confused with gravitational force. In fact, the tidal force is the resultant of the gravitational force from a astronomical object and the inertial centrifugal force associated with the Earth's orbital motion around that body.<br>
<img src="Figures/Lecture8_BlackboardLunarOceanTide.png" alt="BlackboardLunarOceanTide" style="margin-top: 1.5em; border-radius: 6px; max-width: 100%; display: block;">
For the whole year, the sun is in the middle and the earth revolves around the sun. One circle is one year.
The moon revolves around the earth once and returns to roughly the same relative position,
which takes about one month.
The earth's equatorial plane has an angle of intersection with the white plane
of the moon orbiting the earth,
and the ecliptic plane of the earth orbiting the sun also has an angle.
Therefore, in addition to the equator, tides in other places on the earth also occur.
The phenomenon varies from day to day. This is the equilibrium tide theory, which was mainly proposed by Newton.
<img src="Figures/Lecture8_LunarM2TidalPattern.png" alt="LunarM2TidalPattern" style="margin-top: 1.5em; max-width: 100%; display: block;">
<div class="figure-caption">(The M 2 (semidiurnal) barotropic tidal constituent in the oceans of the world, based on Topex-Poseidon satellite altimeter data. The amplitude of the surface elevation in centimeters is indicated by the color bar scale. Note the high-amplitude locations (red-yellow) in certain parts of the continental margins of the world. The white lines, which are cotidal differing by 1 hr, represent lines of constant phase. Amphidromic points are spots where amplitude is zero and where phase lines merge.
The curved arcs around the amphidromic points show the direction of the tides, each indicating a synchronized 6-hr period. See Egbert and Ray (2000) for further details.
Credit: Richard Ray, Space Geodesy branch, National Aeronautics and Space Administration-Goddard Space Flight Center.)</div>
Above is a distribution map of the global tidal component (the main half-day tidal component of the lunar), and you can roughly understand the global tidal distribution.
<div style="font-family: 'Courier New', Courier, monospace; background-color: #001a33; color: #aaccee; padding: 16px; border: 1px solid #3c5c78;">
<em>The relative importance of the various processes affecting the evolution of waves in oceanic and coastal waters from Holthuijsen (2007)</em></h3>
<table style="width: 100%; border-collapse: collapse; background-color: #001a33; color: #aaccee; border: 1px solid #3c5c78;">
<thead>
<tr>
<th rowspan="2" style="padding: 8px; border: 1px solid #3c5c78;">Process</th>
<th rowspan="2" style="padding: 8px; border: 1px solid #3c5c78;">Oceanic waters</th>
<th colspan="3" style="padding: 8px; border: 1px solid #3c5c78;">Coastal waters</th>
</tr>
<tr>
<th style="padding: 8px; border: 1px solid #3c5c78;">Shelf seas</th>
<th style="padding: 8px; border: 1px solid #3c5c78;">Nearshore</th>
<th style="padding: 8px; border: 1px solid #3c5c78;">Harbour</th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding: 8px; border-right: 1px solid #3c5c78;">Wind generation</td>
<td style="padding: 8px;">●●●</td>
<td style="padding: 8px;">●●●</td>
<td style="padding: 8px;">●</td>
<td style="padding: 8px;">○</td>
</tr>
<tr>
<td style="padding: 8px; border-right: 1px solid #3c5c78;">Quadruplet wave–wave interactions</td>
<td style="padding: 8px;">●●●</td>
<td style="padding: 8px;">●●●</td>
<td style="padding: 8px;">●</td>
<td style="padding: 8px;">○</td>
</tr>
<tr>
<td style="padding: 8px; border-right: 1px solid #3c5c78;">White-capping</td>
<td style="padding: 8px;">●●●</td>
<td style="padding: 8px;">●●●</td>
<td style="padding: 8px;">●</td>
<td style="padding: 8px;">○</td>
</tr>
<tr>
<td style="padding: 8px; border-right: 1px solid #3c5c78;">Bottom friction</td>
<td style="padding: 8px;">○</td>
<td style="padding: 8px;">●●</td>
<td style="padding: 8px;">●●</td>
<td style="padding: 8px;">○</td>
</tr>
<tr>
<td style="padding: 8px; border-right: 1px solid #3c5c78;">Current refraction / energy bunching</td>
<td style="padding: 8px;">○ / ●</td>
<td style="padding: 8px;">●</td>
<td style="padding: 8px;">●●</td>
<td style="padding: 8px;">○</td>
</tr>
<tr>
<td style="padding: 8px; border-right: 1px solid #3c5c78;">Bottom refraction / shoaling</td>
<td style="padding: 8px;">○</td>
<td style="padding: 8px;">●●</td>
<td style="padding: 8px;">●●●</td>
<td style="padding: 8px;">●●</td>
</tr>
<tr>
<td style="padding: 8px; border-right: 1px solid #3c5c78;">Breaking (depth-induced; surf)</td>
<td style="padding: 8px;">○</td>
<td style="padding: 8px;">●</td>
<td style="padding: 8px;">●●●</td>
<td style="padding: 8px;">○</td>
</tr>
<tr>
<td style="padding: 8px; border-right: 1px solid #3c5c78;">Triad wave–wave interactions</td>
<td style="padding: 8px;">○</td>
<td style="padding: 8px;">○</td>
<td style="padding: 8px;">●●</td>
<td style="padding: 8px;">●</td>
</tr>
<tr>
<td style="padding: 8px; border-right: 1px solid #3c5c78;">Reflection</td>
<td style="padding: 8px;">○</td>
<td style="padding: 8px;">○</td>
<td style="padding: 8px;">● / ●●</td>
<td style="padding: 8px;">●●●</td>
</tr>
<tr>
<td style="padding: 8px; border-right: 1px solid #3c5c78;">Diffraction</td>
<td style="padding: 8px;">○</td>
<td style="padding: 8px;">○</td>
<td style="padding: 8px;">●</td>
<td style="padding: 8px;">●●●</td>
</tr>
</tbody>
</table>
<p style="margin-top: 16px; font-size: 14px; color: #aaccee;">
●●● = dominant, ●● = significant but not dominant, ● = of minor importance, ○ = negligible.
</p>
</div>
<h2>El Niño/La Niña</h2>
<img src="Figures/Lecture8_BlackboardElNinoLaNina.png" alt="BlackboardElNinoLaNina" style="margin-top: 1.5em; border: 1px solid #3c5c78; border-radius: 6px; max-width: 100%; display: block;">
The tropical Pacific-wide
circuit of air proceeding westward at the surface, rising over the (warm) region of
persistent precipitation, returning eastward aloft, and descending over the cool eastern
2
Pacific, is called the <span class="doubleUnderline">Walker circulation</span>, it is associated with the Walker circulation
is the low surface pressure in the western Pacific and the high surface pressure in the east.<br>
<span class="doubleUnderline">El Niño–Southern Oscillation (ENSO)</span> is one of the most important climate phenomena on Earth due to its ability to change the global atmospheric circulation, which in turn, influences temperature and precipitation across the globe.<br>
It has three phases, the two opposite phases “El Niño” and “La Niña,” require certain changes in both the ocean and the atmosphere
because ENSO is a <span class="doubleUnderline">coupled</span> climate phenomenon.
“Neutral” is in the middle of the continuum.<br>
The phases of ENSO evolve differently each time they appear. The
general recurrence time for warm and cold phases is around 4 years, with large variations
around this mean. The literature often speaks of an ENSO band from 2 to 7 years. One way of describing ENSO evolution with time is to examine the SST anomalies in
various regions of the Pacific.<br>
ENSO can also have direct impacts on marine life. For example, during normal years, upwelling along the west coast of South
America bring the nutrients to eupohotic zone, and thus favor marine life and fishery.
During El Niño, however, upwelling is suppressed and thus the marine food chain is
significantly affected, thus fishery declines.
<h3>Pacific Decadal Oscillation (PDO)</h3>
Pacific decadal oscillation (PDO) is one of the dominant modes of sea surface temperature (SST) variability in the North Pacific,
and it shifts phases on an inter-decadal time scale usually covering more than 10 years.
When the PDO index is positive (negative), SSTs in the central part of the North Pacific are likely to be lower (higher) than their normals (i.e., typical SST anomalies in the positive phase of the PDO).
In addition, when the index is positive (negative), sea level pressures (SLPs) values in the high latitudes of the North Pacific are likely to be lower (higher) than their normals.
This indicates that the Aleutian Low is stronger (weaker) than its normal in winter and spring (typical SLP anomalies in the positive phase of the PDO).
<img src="Figures/Lecture8_PDOGrids.png" alt="PDOGrids" style="margin-top: 1.5em; max-width: 100%; display: block;">
<div class="figure-caption">(The grids of SST and SLP data. Ten degree by five degree SLP averages are centered at grid intersections and SST averages are centered at crosses.
Credit: Davis, R.E. (1976) Predictability of sea surface temperature and sea level pressure anomalies over the North Pacific Ocean. <i>J. Phys. Oceanogr.</i>)</div>
The PDO has positive and negative phases.
<ul>
<li>Positive phases of the PDO tend to be associated with periods of more rapid global warming whilst cold PDO events have been linked to severe droughts spanning many years in south western USA, as well as increased rainfall over eastern Australia.</li>
<li>It is thought that negative phases could be linked to times of slower warming. This is because cold phases of the PDO tend to increase mixing of colder, deep ocean waters with warmer surface waters. This temporarily reduces the rate of global warming caused by increasing greenhouse gas emissions. Positive phases have the opposite effect.</li>
</ul>
The cause of changes in the PDO has yet to be identified and it may even be due to a combination of factors including long-lasting fingerprints of El Nino and La Nina events in the tropical Pacific Ocean; changes in atmospheric pressure the northern Pacific; the impact of industrial pollution; and natural variability.
<script>
function copyToClipboard(btn) {
const code = btn.nextElementSibling.innerText;
navigator.clipboard.writeText(code).then(() => {
btn.classList.add('copied');
setTimeout(() => btn.classList.remove('copied'), 2000);
});
}
</script>
<p><strong>Next</strong>: <a href="Lecture9.html">Lecture 9 – Atmospheric Thermodynamics</a></p>
<div class="footer">
Qi-fan based on the course material by Markus Jochum<br>
It is very much a work in progress! Have you spotted a mistake or an error on this page?
Click <a href="mailto:qifan.wu@nbi.ku.dk">here</a> to tell me!<br>
© 2025 TeamOcean | NBI/KU
</div>
</div>
<script>
function copyToClipboard(btn) {
const code = btn.nextElementSibling.innerText;
navigator.clipboard.writeText(code).then(() => {
btn.classList.add('copied');
setTimeout(() => btn.classList.remove('copied'), 2000);
});
}
</script>
<script>
document.addEventListener("DOMContentLoaded", function () {
const tocList = document.getElementById("toc-list");
const headings = document.querySelectorAll("h2");
headings.forEach((heading, index) => {
if (!heading.id) heading.id = `heading-${index}`;
const link = document.createElement("a");
link.href = `#${heading.id}`;
link.textContent = heading.textContent;
const li = document.createElement("li");
li.classList.add(`toc-level-${heading.tagName.toLowerCase()}`);
li.appendChild(link);
tocList.appendChild(li);
});
});
</script>
</body>
</html>