Assignment 4: Basin-scale waves and overturning circulation#

For this assignment you will do quantiative analysis of basin-scale waves (see Assignment 3: Basin-scale flows and waves), and a qualitative analysis of overturning circulations.

Q1.1 Super-inertial Poincarre waves.#

Q1.1.a Determine the wavelength and frequency of waves#

From the poincarre12.py simulation, estimate the wavelength and frequency of the waves produced.

Estimate the phase speed and compare to theory. Estimate the group speed and compare to theory. Recall that \(f=10^{-4} \ \mathrm{rad\,s^{-1}}\), and that the high-frequency wave speed is given by \(\sqrt{\frac{g'h_1 h_2}{h_1 + h_2}}\), where \(h_1 = 60 \ \mathrm{m}\), \(h_2 = 140\ \mathrm{m}\), and \(g' = 0.2 g / 1000 = 1.96\times10^{-3}\ \mathrm{m\,s^{-2}}\)

import xarray as xr
import numpy as np
import matplotlib.pyplot as plt

def subplots_shared(n, m, sharex=True, sharey=True, layout='constrained', figsize=None):
    return plt.subplots(n, m, sharex=sharex, sharey=sharey, layout=layout, figsize=figsize)

def pcolormesh_sym(x, y, z, vbound, ax=None, cmap='RdBu_r'):
    if ax is None:
        ax = plt.gca()
    return ax.pcolormesh(x, y, z, vmin=-vbound, vmax=vbound, cmap=cmap, rasterized=True)

def tohours(Time):
    return Time.values.astype('float') / 1e9 /3600
# use the matplotlib widget
%matplotlib widget
# YOUR CODE HERE
raise NotImplementedError()
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Cell In[2], line 2
      1 # YOUR CODE HERE
----> 2 raise NotImplementedError()

NotImplementedError: 

YOUR ANSWER HERE

Q1.2a Kelvin wave#

Do as above, but for the Kelvin wave: Kelvin40.py.

# YOUR CODE HERE
raise NotImplementedError()
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Cell In[3], line 2
      1 # YOUR CODE HERE
----> 2 raise NotImplementedError()

NotImplementedError: 

YOUR ANSWER HERE

Q1.2b Kelvin wave assumptions:#

Check the assumptions of Kelvin wave theory. How large is the along-sidewall velocity versus cross-sidewall?
What happens when the wave reaches a corner? What is the Rossby radius and how does it compare to the observed signals?

# YOUR CODE HERE
raise NotImplementedError()
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Cell In[4], line 2
      1 # YOUR CODE HERE
----> 2 raise NotImplementedError()

NotImplementedError: 

YOUR ANSWER HERE

Q1.2c geostrophic balance?#

Calculate the north-south geostrophic flow and compare to the flow in the Kelvin waves in the upper layer. Comment on any difference.

# YOUR CODE HERE
raise NotImplementedError()
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Cell In[5], line 2
      1 # YOUR CODE HERE
----> 2 raise NotImplementedError()

NotImplementedError: 

YOUR ANSWER HERE

Q1.2 Rossby waves#

Q1.2.1 expected wavelengths#

We ran three simulations for Rossby waves T=200, 300 and 400 h. Considering just phase propagation in x, along the center of the model domain, what are the expected x-direction wavelengths? Recall that the water depth is 2000 m, and that \(\beta = 10^{-11}\ \mathrm{m\,s^{-1}}\).

YOUR ANSWER HERE

# YOUR CODE HERE
raise NotImplementedError()
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Cell In[6], line 2
      1 # YOUR CODE HERE
----> 2 raise NotImplementedError()

NotImplementedError: 

YOUR ANSWER HERE

Q1.2.2 Hovmoller diagram#

Show using a Hovmoller diagram for all three Rossby wave simulations that the shorter wavelengths are close to expected. Comment on the energy propagating to the left.

# YOUR CODE HERE
raise NotImplementedError()
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Cell In[7], line 2
      1 # YOUR CODE HERE
----> 2 raise NotImplementedError()

NotImplementedError: 

YOUR ANSWER HERE

Q1.2.3 Group speed#

Calculate the x-direction group speed for both sets of waves in the 400-h simulation and compare to the simulation’s Hovmoller diagram (I did this by just adding to the Hovmoller diagram above and replotting it.

From

\[ \omega = -\beta_0R^2 \frac{l}{1 + R^2l^2} $$ we can calculate $$c_{gx} = \frac{d\omega}{dl} = \frac{-\beta_0 R^2 + \beta_0 R^4 l^2}{(1 + R^2 l^2)^2}\]
# YOUR CODE HERE
raise NotImplementedError()
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Cell In[8], line 2
      1 # YOUR CODE HERE
----> 2 raise NotImplementedError()

NotImplementedError: 

YOUR ANSWER HERE

Q1.2.4 Compare dq/dt to q#

For Rossby400.py, calculate the time derivative of the relative vorticity, and compare to the relative vorticity and argue if this make sense for the direction of propagation of the Rossby wave.

# YOUR CODE HERE
raise NotImplementedError()
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Cell In[9], line 2
      1 # YOUR CODE HERE
----> 2 raise NotImplementedError()

NotImplementedError: 

YOUR ANSWER HERE

Q2 Overturning Circulation: Qualitative#

These simulations take a few hours to run on my machine, and I want you to look at a few, so I’ll provide the netcdf files. The simulations are in Overturning.py, and then Hosing.py and StopHosing.py. The files are provided in OverturningRuns.zip (Note 776 Mb!).

Physically, the models are solved on a spherical grid so the coordinates are in degrees longitude (xt, xu) and latitude (yt,yu). The “wedge” is 48 degrees in longitude, and from the equator to 72 degrees N in latitude. There are 18 vertical levels used for these simulations, with the vertical grid spacing between the levels exponentially growing from 113 m to 318 m at the seafloor.

All the models use the same external forcing of a sin-wave temperature at the surface, going from 28 degrees at the equator to 4 degress at 72 degrees N.

The models are run with isopycnal lateral diffusion in an attempt to reduce the “Veronis effect”.

Q2.1 Plot the forcing#

Plot the surface temperature for OverturningBeta4e6Coarse.snapshot.nc. How close is it to the forcing described above?

# YOUR CODE HERE
raise NotImplementedError()
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Cell In[10], line 2
      1 # YOUR CODE HERE
----> 2 raise NotImplementedError()

NotImplementedError: 

YOUR ANSWER HERE

Q2.2 Overturning as a function of mixing strength#

There are 6 runs, each run at a different value of a constant vertical mixing co-efficient.

\(\kappa\ [m^2\,s^{-1}]\)

Runname

\(4\times10^{-6}\)

OverturningBeta4e6Coarse

\(1 \times 10^{-5}\)

OverturningBeta1e5Coarse

\(4\times 10^{-5}\)

OverturningBeta1e5Coarse

\(8\times 10^{-5}\)

OverturningBeta8e5Coarse

\(1\times 10^{-4}\)

OverturningBeta10e5Coarse

\(4\times 10^{-4}\)

OverturningBeta4e4Coarse

Plot the a cross-section at the end of the run from south to north with the mean north-south velocity and temprature contoured for at least three of these runs. Discuss the basic sense of the flow, and the differences observed as the mixing is increased.

# YOUR CODE HERE
raise NotImplementedError()
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Cell In[11], line 2
      1 # YOUR CODE HERE
----> 2 raise NotImplementedError()

NotImplementedError: 

YOUR ANSWER HERE

Q2.3 Overturning as function of time#

We can calculate the strength of the overturning circulation ourselves. However, this is done so often in physical oceanography that many models have an overturning diagnostic.

Using the files like OverturningBeta4e6Coarse.overturning.nc, plot the minimum of the overturning strength south of 60 N (the reuslts are less clear north of 60 N) as a function of time. The correct field in these files to look at is vsf_depth.

How long do these runs take to reach “steady state”? Which runs are the fastest to get to “steady state”?

# YOUR CODE HERE
raise NotImplementedError()
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Cell In[12], line 2
      1 # YOUR CODE HERE
----> 2 raise NotImplementedError()

NotImplementedError: 

YOUR ANSWER HERE

Q2.4 Hosing experiment and stop…#

Thre more runs were made, based on OverturningBeta4e5Coarse. The first was Hosing, which adds fresh water north of 50 N. This is supposed to be like glaciers and sea ice melting. The rate was approximately 0.1 Sv of fresh water added to the upper ocean.

The next two were StopHosing and StopHosing3. These stop the fresh water flux (all the glaciers have melted. The first stops after 100 years, and the second stops after 300 years.

As above, plot a time series of the strength of the overturning circulation for all 4 of these runs versus time. I found it really useful to also plot the difference between the minimum and maximum salinities in the model.

Describe what happens to the overturning circulation in the three new runs.

# YOUR CODE HERE
raise NotImplementedError()
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Cell In[13], line 2
      1 # YOUR CODE HERE
----> 2 raise NotImplementedError()

NotImplementedError: 

YOUR ANSWER HERE