Skip to content

Commit d2b01ec

Browse files
committed
new steric
1 parent 25263b3 commit d2b01ec

File tree

1 file changed

+52
-7
lines changed

1 file changed

+52
-7
lines changed

notebooks/wp5/steric_sea_level_ora5.ipynb

Lines changed: 52 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,9 @@
2424
"outputs": [],
2525
"source": [
2626
"import gsw_xarray as gsw\n",
27+
"import matplotlib.pyplot as plt\n",
2728
"import xarray as xr\n",
28-
"from c3s_eqc_automatic_quality_control import download"
29+
"from c3s_eqc_automatic_quality_control import diagnostics, download"
2930
]
3031
},
3132
{
@@ -44,7 +45,7 @@
4445
"outputs": [],
4546
"source": [
4647
"year_start = 2004\n",
47-
"year_stop = 2004 # 2023"
48+
"year_stop = 2023"
4849
]
4950
},
5051
{
@@ -102,12 +103,31 @@
102103
"metadata": {},
103104
"outputs": [],
104105
"source": [
105-
"def compute_insitu_density(ds):\n",
106+
"def compute_densities(ds):\n",
106107
" p = gsw.p_from_z(-ds[\"deptht\"], ds[\"latitude\"])\n",
107108
" SA = gsw.SA_from_SP(ds[\"vosaline\"], p, ds[\"longitude\"], ds[\"latitude\"])\n",
108109
" CT = gsw.CT_from_pt(SA, ds[\"votemper\"])\n",
109-
" rho = gsw.rho(SA, CT, p)\n",
110-
" return xr.merge([p, SA, CT, rho])"
110+
" rho = gsw.rho(SA, CT, p).rename(\"rho\")\n",
111+
" trho = gsw.rho(SA.mean(\"time\"), CT, p).rename(\"trho\")\n",
112+
" srho = gsw.rho(SA, CT.mean(\"time\"), p).rename(\"hrho\")\n",
113+
" return diagnostics.spatial_weighted_mean(xr.merge([rho, trho, srho]))\n",
114+
"\n",
115+
"\n",
116+
"def compute_ssl(rho, rho0=1025):\n",
117+
" grouped_rho = rho.groupby(\"time.month\")\n",
118+
" delta_rho = grouped_rho - grouped_rho.mean()\n",
119+
" ssl = -(delta_rho.fillna(0) / rho0).integrate(\"deptht\")\n",
120+
" match rho.name:\n",
121+
" case \"rho\":\n",
122+
" prefix = \"\"\n",
123+
" case \"trho\":\n",
124+
" prefix = \"thermo\"\n",
125+
" case \"hrho\":\n",
126+
" prefix = \"halo\"\n",
127+
" case _:\n",
128+
" raise NotImplementedError(f\"{rho.name=}\")\n",
129+
" ssl.attrs = {\"long_name\": f\"{prefix}steric sea level\".title(), \"units\": \"m\"}\n",
130+
" return ssl.rename(rho.name.replace(\"rho\", \"ssl\"))"
111131
]
112132
},
113133
{
@@ -127,7 +147,7 @@
127147
"source": [
128148
"ds_reanalysis = download.download_and_transform(\n",
129149
" *request_reanalysis,\n",
130-
" transform_func=compute_insitu_density,\n",
150+
" transform_func=compute_densities,\n",
131151
" **download_kwargs,\n",
132152
")"
133153
]
@@ -137,7 +157,7 @@
137157
"id": "11",
138158
"metadata": {},
139159
"source": [
140-
"## Download and transform satellite"
160+
"## Quick and dirty plot"
141161
]
142162
},
143163
{
@@ -146,6 +166,31 @@
146166
"id": "12",
147167
"metadata": {},
148168
"outputs": [],
169+
"source": [
170+
"fig, ax = plt.subplots(1, 1, figsize=(12, 5))\n",
171+
"for rho in ds_reanalysis.values():\n",
172+
" da = compute_ssl(rho, rho0=1025)\n",
173+
" da.plot(label=da.long_name)\n",
174+
"ax.set_ylabel(\"[m]\")\n",
175+
"ax.legend()\n",
176+
"ax.grid()\n",
177+
"plt.show()"
178+
]
179+
},
180+
{
181+
"cell_type": "markdown",
182+
"id": "13",
183+
"metadata": {},
184+
"source": [
185+
"## Download and transform satellite"
186+
]
187+
},
188+
{
189+
"cell_type": "code",
190+
"execution_count": null,
191+
"id": "14",
192+
"metadata": {},
193+
"outputs": [],
149194
"source": [
150195
"ds_satellite = download.download_and_transform(*request_satellite, **download_kwargs)"
151196
]

0 commit comments

Comments
 (0)