Existing finestructure estimates#
Whalen’s estimates are in pretty large bins 250-500m; 500m-1000m; 1000m-2000m; and there’s lot of data missing in the NATRE region
import cf_xarray
import dcpy
import gsw
import matplotlib as mpl
import mixsea
import pandas as pd
import scipy
import scipy.integrate
import seawater as sw
from scipy import signal
from scipy.io import loadmat
import xarray as xr
mpl.rcParams["figure.dpi"] = 140
dirname = "/home/deepak/datasets/finestructure/"
Whalen#
Sneakily taken from acknowledgments of Trossman et al (2020)
K = []
for z, name in zip((375, 750, 1500), ["250to500m", "500to1000m", "1000to2000m"]):
mat = loadmat(f"{dirname}/whalen/av_world_K_{name}_3_1p5deg_2015.mat")
K.append(
xr.DataArray(
mat["c"],
dims=("lat", "lon"),
coords={"lat": mat["y"].squeeze(), "lon": mat["x"].squeeze(), "z": z},
)
)
K = xr.concat(K, dim="z").cf.guess_coord_axis()
K.z.attrs["units"] = "m"
K.to_netcdf(f"{dirname}/whalen2015.nc")
K
<xarray.DataArray (z: 3, lat: 101, lon: 241)>
array([[[1.14926924e-03, 1.87404820e-03, nan, ...,
1.73270825e-03, 1.19684959e-04, 4.04780348e-04],
[4.61545906e-05, 3.77968734e-05, 2.20720928e-03, ...,
nan, 8.46056775e-05, 2.20150150e-05],
[ nan, 3.64251173e-05, 2.34609923e-05, ...,
1.72037751e-05, 1.85861537e-04, 9.51779934e-06],
...,
[ nan, nan, nan, ...,
nan, nan, nan],
[ nan, nan, nan, ...,
nan, nan, nan],
[ nan, nan, nan, ...,
nan, nan, nan]],
[[6.74521750e-04, 1.62954533e-04, nan, ...,
1.75821579e-04, 9.47196336e-06, 1.19420112e-05],
[ nan, nan, 1.19879684e-04, ...,
nan, 2.72826324e-05, nan],
[1.36392184e-05, 4.14167208e-05, 4.26732736e-05, ...,
nan, 1.34894389e-04, 1.08020983e-05],
...
[ nan, nan, nan, ...,
nan, nan, nan],
[ nan, nan, nan, ...,
nan, nan, nan],
[ nan, nan, nan, ...,
nan, nan, nan]],
[[ nan, nan, nan, ...,
nan, nan, nan],
[ nan, nan, nan, ...,
nan, nan, nan],
[ nan, 5.37029196e-06, 2.99769652e-05, ...,
nan, nan, nan],
...,
[ nan, nan, nan, ...,
nan, nan, nan],
[ nan, nan, nan, ...,
nan, nan, nan],
[ nan, nan, nan, ...,
nan, nan, nan]]])
Coordinates:
* lat (lat) float64 75.0 73.5 72.0 70.5 69.0 ... -70.5 -72.0 -73.5 -75.0
* lon (lon) float64 0.0 1.5 3.0 4.5 6.0 ... 354.0 355.5 357.0 358.5 360.0
* z (z) int64 375 750 1500xarray.DataArray
- z: 3
- lat: 101
- lon: 241
- 0.001149 0.001874 nan 3.744e-05 5.495e-05 nan ... nan nan nan nan nan
array([[[1.14926924e-03, 1.87404820e-03, nan, ..., 1.73270825e-03, 1.19684959e-04, 4.04780348e-04], [4.61545906e-05, 3.77968734e-05, 2.20720928e-03, ..., nan, 8.46056775e-05, 2.20150150e-05], [ nan, 3.64251173e-05, 2.34609923e-05, ..., 1.72037751e-05, 1.85861537e-04, 9.51779934e-06], ..., [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], [[6.74521750e-04, 1.62954533e-04, nan, ..., 1.75821579e-04, 9.47196336e-06, 1.19420112e-05], [ nan, nan, 1.19879684e-04, ..., nan, 2.72826324e-05, nan], [1.36392184e-05, 4.14167208e-05, 4.26732736e-05, ..., nan, 1.34894389e-04, 1.08020983e-05], ... [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], [[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, 5.37029196e-06, 2.99769652e-05, ..., nan, nan, nan], ..., [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]]]) - lat(lat)float6475.0 73.5 72.0 ... -73.5 -75.0
- units :
- degrees_north
- standard_name :
- latitude
array([ 75. , 73.5, 72. , 70.5, 69. , 67.5, 66. , 64.5, 63. , 61.5, 60. , 58.5, 57. , 55.5, 54. , 52.5, 51. , 49.5, 48. , 46.5, 45. , 43.5, 42. , 40.5, 39. , 37.5, 36. , 34.5, 33. , 31.5, 30. , 28.5, 27. , 25.5, 24. , 22.5, 21. , 19.5, 18. , 16.5, 15. , 13.5, 12. , 10.5, 9. , 7.5, 6. , 4.5, 3. , 1.5, 0. , -1.5, -3. , -4.5, -6. , -7.5, -9. , -10.5, -12. , -13.5, -15. , -16.5, -18. , -19.5, -21. , -22.5, -24. , -25.5, -27. , -28.5, -30. , -31.5, -33. , -34.5, -36. , -37.5, -39. , -40.5, -42. , -43.5, -45. , -46.5, -48. , -49.5, -51. , -52.5, -54. , -55.5, -57. , -58.5, -60. , -61.5, -63. , -64.5, -66. , -67.5, -69. , -70.5, -72. , -73.5, -75. ]) - lon(lon)float640.0 1.5 3.0 ... 357.0 358.5 360.0
- units :
- degrees_east
- standard_name :
- longitude
array([ 0. , 1.5, 3. , ..., 357. , 358.5, 360. ])
- z(z)int64375 750 1500
- axis :
- Z
- units :
- m
array([ 375, 750, 1500])
K.plot(
row="z",
norm=mpl.colors.LogNorm(),
robust=True,
cbar_kwargs={"orientation": "horizontal"},
)
<xarray.plot.facetgrid.FacetGrid at 0x7fbbc06bbb50>
Kunze#
The remaining lines list
hydrographic section name,
the drop number,
latitude,
longitude,
bounding depths z_i and z_f,
bounding neutral densities,
buoyancy frequency squared N^2,
dissipation rate (W/kg)
diapycnal diffusivity K (m^2/s).
kunze = dcpy.oceans.read_kunze_2017_finestructure()
natre_fs = kunze.query(
"longitude > -31 & longitude < -26.5 & latitude > 23.5 & latitude < 28"
)
import matplotlib.pyplot as plt
import numpy as np
plt.scatter(natre_fs["longitude"], natre_fs["latitude"], c=np.log10(natre_fs["ε"]))
<matplotlib.collections.PathCollection at 0x7fbb0f40dc10>
factorized = pd.cut(
kunze.γ_mean,
bins=[
26.692,
26.876,
27.039,
27.163,
27.288,
27.406,
27.516,
27.605,
27.683,
27.742,
27.794,
27.835,
27.872,
27.898,
27.921,
27.94,
27.958,
],
)
binned = kunze.groupby(factorized).mean()
binned.index = binned["γ_mean"]
binned = binned.to_xarray().set_coords("z_mean")
binned
<xarray.Dataset>
Dimensions: (γ_mean: 16)
Coordinates:
* γ_mean (γ_mean) float64 26.79 26.96 27.1 27.23 ... 27.91 27.93 27.95
z_mean (γ_mean) float64 -399.5 -438.7 -487.1 ... -1.569e+03 -1.728e+03
Data variables:
drop (γ_mean) float64 57.68 58.92 58.71 55.09 ... 50.61 51.6 51.83
latitude (γ_mean) float64 3.025 4.287 6.493 11.97 ... 28.51 28.81 27.91
longitude (γ_mean) float64 -35.37 -31.95 -31.62 ... -33.96 -33.79 -34.44
z_i (γ_mean) float64 -271.9 -311.8 -361.2 ... -1.443e+03 -1.602e+03
z_f (γ_mean) float64 -527.1 -565.6 -613.0 ... -1.696e+03 -1.854e+03
γ_i (γ_mean) float64 26.55 26.75 26.94 27.11 ... 27.89 27.91 27.93
γ_f (γ_mean) float64 27.04 27.18 27.27 27.35 ... 27.93 27.95 27.97
N2 (γ_mean) float64 1.579e-05 1.352e-05 ... 1.104e-06 9.568e-07
ε (γ_mean) float64 2.353e-09 1.943e-09 ... 2.236e-10 1.829e-10
K (γ_mean) float64 3.272e-05 3.275e-05 ... 5.24e-05 4.898e-05xarray.Dataset
- γ_mean: 16
- γ_mean(γ_mean)float6426.79 26.96 27.1 ... 27.93 27.95
array([26.794799, 26.963267, 27.104524, 27.230301, 27.347769, 27.460475, 27.561028, 27.644061, 27.712943, 27.769008, 27.81538 , 27.854683, 27.88573 , 27.909971, 27.930764, 27.94907 ]) - z_mean(γ_mean)float64-399.5 -438.7 ... -1.728e+03
array([ -399.46340812, -438.67054969, -487.12047995, -538.54054884, -638.93982713, -765.28509702, -879.52154921, -970.43937538, -1052.77199721, -1131.23489041, -1185.55168964, -1235.59316714, -1306.43127745, -1440.18143664, -1569.39383333, -1727.61702301])
- drop(γ_mean)float6457.68 58.92 58.71 ... 51.6 51.83
array([57.68108974, 58.92209683, 58.71005917, 55.08867499, 55.45711436, 56.27718898, 56.2760629 , 54.17125944, 55.74697393, 54.03055125, 52.6067141 , 52.1527977 , 51.54227672, 50.61291364, 51.60283333, 51.82976987]) - latitude(γ_mean)float643.025 4.287 6.493 ... 28.81 27.91
array([ 3.02487179, 4.28710229, 6.49260684, 11.96803604, 12.63869681, 12.68184738, 12.74678703, 14.45842009, 15.18289106, 17.1200797 , 19.32222988, 22.7776076 , 26.99033309, 28.51107022, 28.80914667, 27.91079811]) - longitude(γ_mean)float64-35.37 -31.95 ... -33.79 -34.44
array([-35.36675748, -31.94595559, -31.62279421, -28.76287119, -27.76057846, -28.02550628, -28.70725102, -29.2467871 , -29.43500931, -29.89135045, -30.92566919, -32.42251614, -33.76339129, -33.96492171, -33.78955333, -34.43755672]) - z_i(γ_mean)float64-271.9 -311.8 ... -1.602e+03
array([ -271.86057692, -311.78376411, -361.24293228, -410.20991194, -513.07480053, -639.94130116, -753.85497962, -844.73688508, -927.20251397, -1005.16028337, -1060.07959093, -1109.74713056, -1180.68118594, -1314.57255851, -1443.21733333, -1601.72090746]) - z_f(γ_mean)float64-527.1 -565.6 ... -1.854e+03
array([ -527.06623932, -565.55733527, -612.99802761, -666.87118575, -764.80485372, -890.62889287, -1005.18811881, -1096.14186569, -1178.34148045, -1257.30949745, -1311.02378835, -1361.43920373, -1432.18136896, -1565.79031477, -1695.57033333, -1853.51313857]) - γ_i(γ_mean)float6426.55 26.75 26.94 ... 27.91 27.93
array([26.54712261, 26.74707224, 26.93827888, 27.10773886, 27.24261099, 27.35745763, 27.46002274, 27.55291886, 27.63379577, 27.70357843, 27.76393477, 27.81708953, 27.85874337, 27.88902998, 27.91256274, 27.9330448 ]) - γ_f(γ_mean)float6427.04 27.18 27.27 ... 27.95 27.97
array([27.04247611, 27.17946258, 27.27076998, 27.35286364, 27.45292616, 27.56349157, 27.66203368, 27.73520412, 27.79209122, 27.83443762, 27.86682509, 27.8922765 , 27.91271646, 27.93091248, 27.94896453, 27.96509597]) - N2(γ_mean)float641.579e-05 1.352e-05 ... 9.568e-07
array([1.57922756e-05, 1.35186021e-05, 1.04668639e-05, 7.62354290e-06, 6.70892453e-06, 6.71067015e-06, 6.66807416e-06, 6.12244948e-06, 5.32834032e-06, 4.40998450e-06, 3.45990196e-06, 2.50627834e-06, 1.75296083e-06, 1.31190266e-06, 1.10353117e-06, 9.56774441e-07]) - ε(γ_mean)float642.353e-09 1.943e-09 ... 1.829e-10
array([2.35343814e-09, 1.94339944e-09, 1.37632942e-09, 1.13513107e-09, 1.02685629e-09, 1.17518967e-09, 1.17456547e-09, 1.18544444e-09, 1.04453765e-09, 9.29158225e-10, 7.58225919e-10, 5.28349025e-10, 3.76499690e-10, 2.76490327e-10, 2.23627347e-10, 1.82934783e-10]) - K(γ_mean)float643.272e-05 3.275e-05 ... 4.898e-05
array([3.27232158e-05, 3.27505636e-05, 3.03774418e-05, 3.65459255e-05, 3.75259669e-05, 4.04088386e-05, 3.86780692e-05, 4.35229675e-05, 4.47718555e-05, 5.05481370e-05, 5.63268316e-05, 5.18691843e-05, 5.36885790e-05, 5.38784272e-05, 5.24039406e-05, 4.89770192e-05])
This looks encouraging; ε is elevated in the same depth range where χ is elevated
binned.ε.plot(y="z_mean", xscale="log")
[<matplotlib.lines.Line2D at 0x7fbb4a581790>]
kunze.groupby("cruise").count()
| drop | latitude | longitude | z_i | z_f | γ_i | γ_f | N2 | ε | K | z_mean | γ_mean | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| cruise | ||||||||||||
| 06AQ19860627 | 189 | 189 | 128 | 189 | 189 | 189 | 189 | 189 | 189 | 189 | 189 | 189 |
| 06AQ19931212 | 502 | 502 | 446 | 502 | 502 | 502 | 502 | 502 | 502 | 502 | 502 | 502 |
| 317519930704 | 2117 | 2117 | 2117 | 2117 | 2117 | 2117 | 2117 | 2117 | 2117 | 2117 | 2117 | 2117 |
| 32OC20080510 | 270 | 270 | 270 | 270 | 270 | 270 | 270 | 270 | 270 | 270 | 270 | 270 |
| 64PE20050907 | 1163 | 1163 | 1163 | 1163 | 1163 | 1163 | 1163 | 1163 | 1163 | 1163 | 1163 | 1163 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| ar24_b | 1955 | 1955 | 1955 | 1955 | 1955 | 1955 | 1955 | 1955 | 1955 | 1955 | 1955 | 1955 |
| ar25_h | 496 | 496 | 496 | 496 | 496 | 496 | 496 | 496 | 496 | 496 | 496 | 496 |
| atas1 | 85 | 85 | 85 | 85 | 85 | 85 | 85 | 85 | 85 | 85 | 85 | 85 |
| atas2 | 129 | 129 | 129 | 129 | 129 | 129 | 129 | 129 | 129 | 129 | 129 | 129 |
| atas3 | 196 | 196 | 196 | 196 | 196 | 196 | 196 | 196 | 196 | 196 | 196 | 196 |
135 rows × 12 columns