{ "cells": [ { "cell_type": "markdown", "id": "cf65e37e-0742-474a-a0b9-3f64e019171b", "metadata": {}, "source": [ "# Neutral density\n", "## (MOM6)\n", "\n", "This notebook calculates neutral density ($\\gamma$) in MOM6 using the algorithm developed by [Jackett and McDougall 1997](https://doi.org/10.1175/1520-0485(1997)027<0237:ANDVFT>2.0.CO;2).\n", "\n", "Before using neutral density, be aware that this is a calculation that uses as a reference a climatology from the World Atlas, Levitus 1980. Therefore, **it shouldn't be used for simulations or datasets with climates/ocean states different to the 1980s (i.e. future projection simulations)**.\n", "\n", "We use a python wrapper called `pygamma_n`, developed by Eric Firing and Filipe Fernandes; see https://currents.soest.hawaii.edu/hgstage/pygamma/ .\n", "\n", "`pygamma_n` is available from `conda/analysis3-25.06`\n", "\n", "## Information needed to adapt to MOM5:\n", "\n", "Diagnostics needed:\n", " - `temp`: conservative temperature\n", " - `salt`: salinity\n", " - `ht`: depth at t-cells\n", "\n", "Note that temperature in MOM5 is given as a conservative temperature in Kelvin, so you will need to (a) convert to Celsius and (b) go straight into calculating insitu temperature. All these diagnostics are in the t-cells, with `xt_ocean` and `yt_ocean` as longitude and latitude." ] }, { "cell_type": "code", "execution_count": 1, "id": "104c7e5d-2da8-42bc-a7d9-3fbfc0e0a5e5", "metadata": { "tags": [] }, "outputs": [], "source": [ "import intake\n", "\n", "import numpy as np\n", "import xarray as xr\n", "from joblib import Parallel, delayed\n", "\n", "import gsw\n", "import pygamma_n\n", "\n", "import matplotlib.pyplot as plt\n", "import cartopy.crs as ccrs\n", "import cmocean\n", "\n", "import dask.distributed as dask\n", "import warnings\n", "warnings.filterwarnings(\"ignore\", category = FutureWarning)\n", "warnings.filterwarnings(\"ignore\", category = UserWarning)\n", "warnings.filterwarnings(\"ignore\", category = RuntimeWarning)" ] }, { "cell_type": "markdown", "id": "74b90cdd-b3af-435a-a693-a67f6af87dcc", "metadata": {}, "source": [ "Initialize a dask client." ] }, { "cell_type": "code", "execution_count": 2, "id": "7ed9fb53-0dd5-4436-8eca-cd26cbafbb26", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "
\n", "
\n", "

Client

\n", "

Client-0715f5ac-8dfb-11f0-9eab-00000187fe80

\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "
Connection method: Cluster objectCluster type: distributed.LocalCluster
\n", " Dashboard: /proxy/42849/status\n", "
\n", "\n", " \n", " \n", " \n", "\n", " \n", "
\n", "

Cluster Info

\n", "
\n", "
\n", "
\n", "
\n", "

LocalCluster

\n", "

b6aad7d8

\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", " \n", "
\n", " Dashboard: /proxy/42849/status\n", " \n", " Workers: 48\n", "
\n", " Total threads: 48\n", " \n", " Total memory: 188.56 GiB\n", "
Status: runningUsing processes: True
\n", "\n", "
\n", " \n", "

Scheduler Info

\n", "
\n", "\n", "
\n", "
\n", "
\n", "
\n", "

Scheduler

\n", "

Scheduler-8c7c1bac-7f15-4118-9578-7ec5241fdd46

\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", " Comm: tcp://127.0.0.1:46211\n", " \n", " Workers: 0 \n", "
\n", " Dashboard: /proxy/42849/status\n", " \n", " Total threads: 0\n", "
\n", " Started: Just now\n", " \n", " Total memory: 0 B\n", "
\n", "
\n", "
\n", "\n", "
\n", " \n", "

Workers

\n", "
\n", "\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 0

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:37525\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/42035/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:39937\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-qemk1acp\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 1

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:35689\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/39605/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:37741\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-696x2w3l\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 2

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:46613\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/43891/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:36593\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-_xqk482a\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 3

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:35283\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/38363/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:39261\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-eqf8lb3k\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 4

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:33123\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/39125/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:44499\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-z3rv6pi_\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 5

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:34571\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/41947/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:39691\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-snu7qj_3\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 6

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:35931\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/44863/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:39169\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-dipmvya7\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 7

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:39117\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/37643/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:44231\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-2o77yh64\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 8

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:44955\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/40791/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:41751\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-2l10xwgn\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 9

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:43823\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/37943/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:38829\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-qk5kf643\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 10

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:34521\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/32781/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:38181\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-sc1e_bqs\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 11

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:33871\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/43735/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:35715\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-kg2tq6mw\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 12

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:33425\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/46391/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:35301\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-fua4ve75\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 13

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:46167\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/38315/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:46239\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-8gyfkbj8\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 14

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:42089\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/36309/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:44539\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-ot7lgmoj\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 15

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:33349\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/33633/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:41089\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-jhzogdua\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 16

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:42505\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/32971/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:33677\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-hzq28sp7\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 17

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:44163\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/40179/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:46183\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-orzbpaat\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 18

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:39095\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/43923/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:38735\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-ly3c2qsy\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 19

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:35011\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/38453/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:41743\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-v9h6iirw\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 20

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:35171\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/38249/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:45459\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-03eefpua\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 21

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:33485\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/37897/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:43727\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-t947ww4p\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 22

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:35887\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/40073/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:42991\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-lxjbhe67\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 23

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:46393\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/45991/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:33023\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-g7klwqbi\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 24

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:38799\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/34251/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:46111\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-7x19j9sl\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 25

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:45307\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/45513/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:41093\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-k890u3_s\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 26

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:35099\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/35763/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:38821\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-43899v10\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 27

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:33823\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/41981/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:43805\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-3ap971rw\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 28

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:44319\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/36739/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:40921\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-2xmh9wa1\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 29

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:35391\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/44751/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:36573\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-u7iz5lqw\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 30

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:34943\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/46169/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:37711\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-2cqakf9j\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 31

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:36585\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/44875/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:32867\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-au2onc7b\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 32

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:34337\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/46347/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:36693\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-swyr88ji\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 33

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:46015\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/40261/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:39233\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-a_orxmq6\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 34

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:45929\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/40579/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:45993\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-oyec1a3i\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 35

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:36189\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/45109/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:35699\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-8xbfvg0j\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 36

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:45447\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/45759/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:34495\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-7k_x5j6o\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 37

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:39609\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/40961/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:42329\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-c38k6g9p\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 38

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:46421\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/38319/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:34387\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-q5bdyi12\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 39

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:36675\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/45317/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:41369\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-c5b703ig\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 40

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:33289\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/40693/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:42361\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-2pznuuar\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 41

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:33717\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/42671/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:40937\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-4l8taql7\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 42

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:38657\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/44115/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:34025\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-v_v9a4e9\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 43

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:40581\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/42323/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:45957\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-xtx9ep1x\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 44

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:34341\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/37079/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:45009\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-tk_jf2v7\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 45

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:36795\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/43989/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:36389\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-kxw3e624\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 46

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:42443\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/33909/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:44381\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-r1qh7jxg\n", "
\n", "
\n", "
\n", "
\n", " \n", "
\n", "
\n", "
\n", "
\n", " \n", "

Worker: 47

\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", " \n", "\n", " \n", "\n", "
\n", " Comm: tcp://127.0.0.1:40861\n", " \n", " Total threads: 1\n", "
\n", " Dashboard: /proxy/45717/status\n", " \n", " Memory: 3.93 GiB\n", "
\n", " Nanny: tcp://127.0.0.1:43749\n", "
\n", " Local directory: /jobfs/149304494.gadi-pbs/dask-scratch-space/worker-8i1_glo2\n", "
\n", "
\n", "
\n", "
\n", " \n", "\n", "
\n", "
\n", "\n", "
\n", "
\n", "
\n", "
\n", " \n", "\n", "
\n", "
" ], "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "client = dask.Client(threads_per_worker=1)\n", "client" ] }, { "cell_type": "markdown", "id": "c6c8cf06-75e9-4fa3-a07e-a021c6e784a1", "metadata": { "tags": [] }, "source": [ "Load ACCESS-NRI default catalog:" ] }, { "cell_type": "code", "execution_count": 3, "id": "e65dd344-2fcc-4b9a-b740-925427581b4b", "metadata": { "tags": [] }, "outputs": [], "source": [ "catalog = intake.cat.access_nri" ] }, { "cell_type": "markdown", "id": "23379ca3-6c3a-4c8e-ab77-fa0c3d199e61", "metadata": {}, "source": [ "Define arguments needed to load data from a MOM6 experiment:" ] }, { "cell_type": "code", "execution_count": 4, "id": "5650a666-731f-4c6e-82f0-19eef66c735f", "metadata": { "tags": [] }, "outputs": [], "source": [ "experiment = 'panant-01-zstar-ACCESSyr2'\n", "start_time = '2000-01-01'\n", "end_time = '2001-01-01'\n", "frequency = '1mon'" ] }, { "cell_type": "markdown", "id": "f911c6cf-506a-41ec-be31-809ca2fd16b4", "metadata": {}, "source": [ "Define the region to work with:" ] }, { "cell_type": "code", "execution_count": 5, "id": "6e44eae7-3cac-47da-8f13-52307a95069a", "metadata": { "tags": [] }, "outputs": [], "source": [ "latitude_slice = slice(-70, -60)\n", "longitude_slice = slice(-70, -40)\n", "time_slice = slice(start_time, end_time)" ] }, { "cell_type": "markdown", "id": "c2bc402e-c32a-41cd-8c31-8a841d3dc1e6", "metadata": {}, "source": [ "Let's load the data - we will need temperature, salinity and depth - and select our region of interest. This recipe the `pygamma` function that only takes in 2D fields, so there is a parallelisation involved in calculating it for a time-varying 3D field. Be mindful of not making your region too big." ] }, { "cell_type": "code", "execution_count": 6, "id": "593696ed-10a0-42be-b6aa-1b860f3e3a37", "metadata": {}, "outputs": [], "source": [ "potential_temperature = catalog[experiment].search(variable = 'thetao', frequency = '1mon').to_dask(xarray_open_kwargs={\"decode_timedelta\": True})\n", "practical_salinity = catalog[experiment].search(variable = 'so', frequency = '1mon').to_dask(xarray_open_kwargs={\"decode_timedelta\": True})\n", "depth = catalog[experiment].search(variable = 'deptho', frequency = 'fx').to_dask()" ] }, { "cell_type": "code", "execution_count": 7, "id": "58c85b0f-edb0-4f64-8106-f2e689fdfe75", "metadata": {}, "outputs": [], "source": [ "potential_temperature = potential_temperature['thetao'].sel(time=time_slice, xh=longitude_slice, yh=latitude_slice)\n", "practical_salinity = practical_salinity['so'].sel(time=time_slice, xh=longitude_slice, yh=latitude_slice)\n", "depth = depth['deptho'].sel(xh=longitude_slice, yh=latitude_slice)" ] }, { "cell_type": "markdown", "id": "486d9795-cd7f-4c01-9088-16b02033d742", "metadata": {}, "source": [ "Load the data before doing any calculations. We are opening potential temperature (`thetao`) and practical salinity (`so`). " ] }, { "cell_type": "code", "execution_count": 8, "id": "6846ce83-24ab-45ac-9af8-398507eb0b42", "metadata": { "scrolled": true }, "outputs": [], "source": [ "potential_temperature = potential_temperature.load()\n", "practical_salinity = practical_salinity.load()" ] }, { "cell_type": "markdown", "id": "233c96ef-976f-4713-bcee-fb3d414b9d0a", "metadata": {}, "source": [ "`pygamma_n` takes in in-situ temperature and absolute salinity, so we will use `gsw` to convert. This involves calculating pressure as well! And annoyingly to go from MOM6's potential temperature to in situ temperature, we have to calculate conservative temperature as an intermediate step." ] }, { "cell_type": "code", "execution_count": 9, "id": "fb0c38f1-8c20-47f7-92ba-859bee8953ed", "metadata": {}, "outputs": [], "source": [ "# Get values of coordinates\n", "depth_coordinate = potential_temperature['z_l']\n", "longitudes = potential_temperature['xh']\n", "latitudes = potential_temperature['yh']\n", "\n", "# Calculate pressure to use as a coordinate\n", "pressure_coordinate = gsw.p_from_z(-depth_coordinate, latitudes)\n", "\n", "# Calculate absolute salinity\n", "absolute_salinity = gsw.SA_from_SP(practical_salinity, pressure_coordinate, longitudes, latitudes).rename('SA')\n", "\n", "# Calculate conservative temperature (needed to calculate in situ temperatures)\n", "conservative_temperature = gsw.CT_from_pt(absolute_salinity, potential_temperature)\n", "\n", "# Calculate insitu temperature \n", "insitu_temperature = gsw.t_from_CT(absolute_salinity, conservative_temperature, pressure_coordinate).rename('t')" ] }, { "cell_type": "code", "execution_count": 10, "id": "fec4471e-b3db-4b8e-bd93-ddd5856eb8e2", "metadata": {}, "outputs": [], "source": [ "insitu_temperature = insitu_temperature.load()" ] }, { "cell_type": "markdown", "id": "149c96a0-9122-4d02-839a-57d24b74c4d8", "metadata": {}, "source": [ "The `pygamma_n` function to calculate neutral densities takes 2D fields (cross sections with depth and lat/lon). So for our time-varying, 3D fields we are going to need to \"iterate\" twice, once through time and once through longitudes. We will define a function that calculates $\\gamma$ for a certain time step and longitude, and then use the Parallel function from `joblib` to calculate each cross section in parallel." ] }, { "cell_type": "code", "execution_count": 11, "id": "72df8f06-a78c-4901-9607-f852e6af5d53", "metadata": { "tags": [] }, "outputs": [], "source": [ "def neutral_density(t, s, time_index, longitude_index):\n", " \"\"\"\n", " Calculates neutral density (gamma) for a given longitude and time \n", " of in-situ temperature and practical salinity datasets.\n", " \"\"\"\n", " pressure = gsw.p_from_z(-t['z_l'], t['yh'])\n", " \n", " gamma, dg_lo, dg_hi = pygamma_n.gamma_n(s.isel(time=time_index, xh=longitude_index).transpose(), \n", " t.isel(time=time_index, xh=longitude_index).transpose(), \n", " pressure.transpose(), \n", " (t['xh'][longitude_index].item()*(t['yh']*0+1)), \n", " (t['yh']))\n", " gamma = gamma.T\n", " \n", " return gamma" ] }, { "cell_type": "markdown", "id": "8dbbd158-9b85-4606-baca-083a9fc0138f", "metadata": {}, "source": [ "Now that we have our function, we need to make a list of arguments we want to feed it (every combination possible of time and longitude indexes):" ] }, { "cell_type": "code", "execution_count": 12, "id": "e7a745a3-6455-4e32-98bd-1615770b3158", "metadata": {}, "outputs": [], "source": [ "# Create a list of pairs that have a unique time, lon index\n", "Nt = len(insitu_temperature['time'])\n", "Nx = len(insitu_temperature['xh'])\n", "args_list = [[i, j] for i in range(Nt) for j in range(Nx)]" ] }, { "cell_type": "markdown", "id": "4fb455ec-9795-4a7b-95fe-73bf34378417", "metadata": {}, "source": [ "The cell below uses `Parallel` to run the neutral density function for each cross section in parallel, where the results are arranged as a list:" ] }, { "cell_type": "code", "execution_count": 13, "id": "aff37e1a-06bd-4ee8-9037-efb663a2972a", "metadata": { "scrolled": true }, "outputs": [], "source": [ "# Run the neutral_density function in parallel\n", "results = Parallel(n_jobs=-1)(delayed(neutral_density)(insitu_temperature, practical_salinity, arg1, arg2) for arg1, arg2 in args_list)" ] }, { "cell_type": "markdown", "id": "fe326433-9e6d-487e-ad05-8bd362505836", "metadata": {}, "source": [ "We need to reshape that list onto a DataArray with appropriate dimensions:" ] }, { "cell_type": "code", "execution_count": 14, "id": "9f67103e-a1d3-45b8-ae9c-b69364c8709c", "metadata": {}, "outputs": [], "source": [ "# Reshape into the original dataset shape\n", "gamma = np.nan * np.zeros(np.shape(insitu_temperature))\n", "for idx, result in enumerate(results):\n", " i, j = divmod(idx, Nx)\n", " gamma[i, :, :, j] = result" ] }, { "cell_type": "markdown", "id": "3959c011-9a89-420d-9c37-90a3b0fdc196", "metadata": {}, "source": [ "Convert `gamma` into a dataarray with dimensions and attributes." ] }, { "cell_type": "code", "execution_count": 15, "id": "05b4831e-66ff-474e-8118-b80f78ba974e", "metadata": {}, "outputs": [], "source": [ "gamma = xr.DataArray(gamma, dims = insitu_temperature.dims, coords = insitu_temperature.coords, name = 'gamma')\n", "gamma.attrs['long_name'] = 'neutral density'\n", "gamma.attrs['units'] = 'kg/m3'" ] }, { "cell_type": "code", "execution_count": 16, "id": "be4170c1-5ee7-43fa-a403-d0a27884ab26", "metadata": {}, "outputs": [], "source": [ "# Put the nans back in land (pygamma has a fillvalue of zero)\n", "gamma = xr.where(np.isnan(insitu_temperature), np.nan, gamma)" ] }, { "cell_type": "markdown", "id": "480b8298-4a9b-4fdb-a21e-59d70ee65c81", "metadata": {}, "source": [ "# Plotting" ] }, { "cell_type": "markdown", "id": "7fb7a31b-2b6b-4a8f-8fa3-0100caf1b5a6", "metadata": {}, "source": [ "Let's create a land mask and do a map of the time mean neutral density at the surface:" ] }, { "cell_type": "code", "execution_count": 17, "id": "ef151b35-54f3-4c8b-8f23-d89fc0c19b60", "metadata": {}, "outputs": [], "source": [ "# Create a land mask\n", "land_mask = xr.where(np.isnan(depth), 1, np.nan)" ] }, { "cell_type": "code", "execution_count": 18, "id": "1b0303f3-3571-424d-a6fa-c6cf91470256", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjwAAAF+CAYAAACGd8BgAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjUsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvWftoOwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAtwdJREFUeJzsnXd4U9Ufh98k3W3aUtrSslr2KntDWcqUKaKCyFAUlYIKKiJDEBUQxIUCioD4QwRRliIgyBYURDbIhrJKWd0rTe7vj5rQtEmanbQ97/Pkgd6ce865t2nyyXfKJEmSEAgEAoFAICjByF29AYFAIBAIBAJHIwSPQCAQCASCEo8QPAKBQCAQCEo8QvAIBAKBQCAo8QjBIxAIBAKBoMQjBI9AIBAIBIISjxA8AoFAIBAISjxC8AgEAoFAICjxCMEjEAgEAoGgxCMEjxvwzTffIJPJ8PHx4cqVK4We79ixIzExMQ7dw40bN5g2bRpHjhxxyPzaa7x8+bJV50+bNg2ZTGbfTVmBoetYsWIFn3zyicv2ZOn68+fP55tvvil0fOfOnchkMn788Uf7bc7FXL58mZ49exISEoJMJuPVV1919ZYEAoGLEILHjcjOzmby5MkuWfvGjRu88847DhM8JYWePXuyf/9+IiMjdcdKiuApiYwdO5a//vqLJUuWsH//fsaOHevqLQkEAhchBI8b0b17d1asWMHRo0ddvZUiycjIcPUWXEJYWBitWrXC29vb1VsRGEGSJDIzMwE4ceIELVq0oF+/frRq1YqoqCgX704gELgKIXjciPHjx1O2bFnefPPNIsdKksT8+fNp1KgRvr6+lClThgEDBnDx4kW9cdHR0QwfPrzQ+R07dqRjx45AniujefPmADzzzDPIZDJkMhnTpk0DYPjw4QQEBHD8+HG6du2KUqnk4YcfBmDr1q307duXihUr4uPjQ/Xq1XnhhRe4c+eO1fdh48aNNGrUCG9vb6pUqcKHH35o0z3QugQPHjxIu3bt8PPzo2rVqsyaNQuNRqMbp9FoeO+996hVqxa+vr4EBwfToEEDPv30U92Ygi6tjh07snHjRq5cuaK7bzKZDEmSqFGjBt26dSu077S0NIKCgoiLizN5H7744gvat29PeHg4/v7+1K9fn9mzZ6NSqfSuzdD6xoiOjubkyZPs2rVLNzY6OlpvjEqlYtKkSZQvX57AwEA6d+7MmTNnCs21bds2Hn74YQIDA/Hz86Nt27b8/vvvJq8JzLvPw4cPL7QvMOzalMlkjB49moULF1KnTh28vb1ZtmwZMpmM8+fPs2nTJt21Xr58maysLF577TUaNWpEUFAQISEhtG7dmvXr1xvc67x583SvseDgYFq1asWGDRv0xq1atYrWrVvj7+9PQEAA3bp14/Dhw0XeC4FA4DyE4HEjlEolkydPZsuWLWzfvt3k2BdeeIFXX32Vzp07s27dOubPn8/Jkydp06YNt27dsmjdJk2asHTpUgAmT57M/v372b9/P88995xuTE5ODn369OGhhx5i/fr1vPPOOwBcuHCB1q1bs2DBAn777Tfefvtt/vrrL2JjY/U+mM3l999/p2/fviiVSlauXMmcOXP44YcfdPuz9h4kJCQwePBgnn76aTZs2ECPHj146623WL58uW7M7NmzmTZtGoMGDWLjxo2sWrWKESNGkJSUZHS/8+fPp23btkREROju2/79+5HJZIwZM4atW7dy7tw5vXO+/fZbUlJSihQ8Fy5c4KmnnuJ///sfv/zyCyNGjGDOnDm88MILRa5vjLVr11K1alUaN26sG7t27Vq9MRMnTuTKlSt8/fXXfPXVV5w7d47evXujVqt1Y5YvX07Xrl0JDAxk2bJl/PDDD4SEhNCtW7ciRY8197ko1q1bx4IFC3j77bfZsmULrVu3Zv/+/URERNC2bVvdtUZGRpKdnc29e/d4/fXXWbduHd9//z2xsbH079+fb7/9Vm/e4cOH88orr9C8eXNWrVrFypUr6dOnj14M14wZMxg0aBB169blhx9+4H//+x+pqam0a9eOU6dOWX1NAoHAzkgCl7N06VIJkA4ePChlZ2dLVatWlZo1ayZpNBpJkiSpQ4cOUr169XTj9+/fLwHS3Llz9ea5evWq5OvrK40fP153LCoqSho2bFihNTt06CB16NBB9/PBgwclQFq6dGmhscOGDZMAacmSJSavQ6PRSCqVSrpy5YoESOvXry90jZcuXTI5R8uWLaXy5ctLmZmZumMpKSlSSEiIlP/lask96NChgwRIf/31l97YunXrSt26ddP93KtXL6lRo0Ym92foOnr27ClFRUUVGpuSkiIplUrplVdeKbRup06dTK5TELVaLalUKunbb7+VFAqFdO/evSLXN0a9evX0fvdaduzYIQHSI488onf8hx9+kABp//79kiRJUnp6uhQSEiL17t270B4bNmwotWjRwuT65tznYcOGGbymqVOnSgXftgApKChI755oiYqKknr27GlyrdzcXEmlUkkjRoyQGjdurDu+e/duCZAmTZpk9Nz4+HjJw8NDGjNmjN7x1NRUKSIiQnriiSdMri0QCJyHsPC4GV5eXrz33nv8/fff/PDDDwbH/PLLL8hkMp5++mlyc3N1j4iICBo2bMjOnTsdsrfHHnus0LHExERefPFFKlWqhIeHB56enro4idOnT1s0f3p6OgcPHqR///74+PjojiuVSnr37q031tJ7EBERQYsWLfSONWjQQC8rrkWLFhw9epRRo0axZcsWUlJSLNp/QZRKJc888wzffPMN6enpAGzfvp1Tp04xevToIs8/fPgwffr0oWzZsigUCjw9PRk6dChqtZqzZ8/atDdT9OnTR+/nBg0aAOju1b59+7h37x7Dhg3Tu/cajYbu3btz8OBB3fUawt73GeChhx6iTJkyZo9fvXo1bdu2JSAgQPe6Xbx4sd5rdtOmTQAmLXFbtmwhNzeXoUOH6t0LHx8fOnTo4LC/RYFAYDlC8LghAwcOpEmTJkyaNMmgW+jWrVtIkkS5cuXw9PTUe/z55582xc8Yw8/Pj8DAQL1jGo2Grl27smbNGsaPH8/vv//OgQMH+PPPPwF0gaPmcv/+fTQaDREREYWeK3jM0ntQtmzZQnN6e3vr7fGtt97iww8/5M8//6RHjx6ULVuWhx9+mL///tui68jPmDFjSE1N5bvvvgPg888/p2LFivTt29fkefHx8bRr147r16/z6aefsmfPHg4ePMgXX3wBWH5vLaHgvdIGaGvX1LoLBwwYUOjef/DBB0iSxL1794zO74j7nD9rrijWrFnDE088QYUKFVi+fDn79+/n4MGDPPvss2RlZenG3b59G4VCYfD1qEV7L5o3b17oXqxatcohf4sCgcA6PFy9AUFhZDIZH3zwAV26dOGrr74q9HxoaCgymYw9e/YYzBbKf8zHx4fs7OxCY+7cuUNoaKhFeyrIiRMnOHr0KN988w3Dhg3THT9//rzZ8+anTJkyyGQyEhISCj1X8Jgl98BcPDw8GDduHOPGjSMpKYlt27YxceJEunXrxtWrV/Hz87N4zurVq9OjRw+++OILevTowYYNG3jnnXdQKBQm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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize = (15, 15))\n", "\n", "projection = ccrs.Mercator(central_longitude = -55)\n", "axs = fig.add_subplot(121, projection = projection)\n", "\n", "# Set the region\n", "axs.set_extent([-70, -40, -70, -60], crs = ccrs.PlateCarree())\n", "\n", "# Add model land mask\n", "land_mask.plot.contourf(ax=axs, colors='lightgrey', transform=ccrs.PlateCarree(), add_colorbar=False, zorder=2)\n", "\n", "# Add model coastline\n", "land_mask.fillna(0).plot.contour(ax=axs, colors='k', levels=[0, 1], \n", " transform=ccrs.PlateCarree(), add_colorbar=False, linewidths=0.5, zorder=3)\n", "\n", "# Plot time-mean neutral density at the surface\n", "gamma.mean('time').isel(z_l = 0).plot.pcolormesh(ax=axs, cmap = cmocean.cm.dense, transform=ccrs.PlateCarree(),\n", " vmin = 26.5, vmax = 28, levels = 25,\n", " cbar_kwargs = {'label': '$\\\\gamma$ (kg/m$^{3}$)',\n", " 'shrink':.3})\n", "axs.set_title('Neutral density at the surface');" ] }, { "cell_type": "code", "execution_count": 19, "id": "033c085c-ca6f-460f-b8bd-0ac34b0c46f2", "metadata": { "tags": [] }, "outputs": [ { "data": { "image/png": "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pHYjW00SEhLUXl+9elVS+4GBgVr7YGFhgf3790uqp76otyNQj26k9fgoUWZmpjgq5eTkhKKiImRlZVUac/PmzQr137p1q8LoVnlyubzChXlERERERNS01dsEysPDA05OToiPjxfLioqKkJiYiF69egEAvL29YWpqqhaTkZGBc+fOiTG+vr7IycnBr7/+Ksb88ssvyMnJEWOIiIiIiIikMOgpfPn5+fjjjz/E11euXEFqaipsbW3RunVrhIeHIzIyEu3atUO7du0QGRmJZs2aYdy4cQAAhUKBKVOm4O2330bLli1ha2uLOXPmoHPnzuKsfB07dkRQUBCmTp2KL7/8EgAwbdo0DB48WOcZ+IiodnA2OqpN+nh/cSY/w1l/abmhu0BEpMagCdSpU6fQp08f8fWja44mTZqETZs2Ye7cuSgoKEBISAiysrLg4+ODAwcOqF1QtmLFCpiYmODll19GQUEBXnjhBWzatAnGxsZizDfffIM333xTnK1v6NChWu89RUREREREpI1BE6iAgIBKL2qTyWSIiIhARESE1hhzc3OsXr0aq1ev1hpja2uL2NjYmnSViIiIiIio/l4DRUREREREVN8wgSIiIiIiIpKICRQREREREZFE9f5GukREREREjYHcvAXMjZvVuB4jmSmUSiUWLlwIAAgNDUVoaGiN6yVpmEARkU445Tg1Rbq87znlORHVhaCgIERHRxu6G00ST+EjIiIiIiKSiAkUERERERGRREygiIiIiIiIJGICRUREREREJBETKCIiIiIiIomYQBEREREREUnEacyJ6hlOE07UsOnzM8wp0YmI6h+OQBEREREREUnEBIqIiIiIiEgiJlBEREREREQSMYEiIiIiIiKSiAkUERERERGRRJyFj4iIiIioDpjKFTA1saxxPTIjYyiVSixcuBAAEBoaitDQ0BrXS9IwgSIiIiIiamCCgoIQHR1t6G40SUygiCrBezIRkSHxbxA1BusvLRefv9Futvi8Nt7fRWVFeq+T6HG8BoqIiIiIiEgiJlBEREREREQSMYEiIiIiIiKSiAkUERERERGRREygiIiIiIiIJGICRUREREREJBETKCIiIiIiIol4HygdPXhwF2VGZobuBlGT96A429BdoEbI3LS5obtA1Kjx3mbUGHAEioiIiIioEYuKikKPHj1gbW0NBwcHDB8+HGlpaWox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hbu7Oz799FPMmDFDjE9PT1cbperVqxe2bduG999/Hx988AHatm2L7du3w8fHR3LbxsbGOHv2LLZs2YLs7Gw4OzujT58+2L59O6yt9TBjYS1gAkVERERE1IgJglBljJOTE2JiYiqNSUhIqFD20ksv4aWXXqp22xYWFti/f3+V/atPeA0UERERERGRREygiIiIiIiIJGICRUREREREJJFO10ClpaVh69atOHbsGK5evYr79+/D3t4e3bp1w4ABAzBq1Kh6ebdgovrkfkm2obtARLWotj7jzUya10q9D4qzxefmptVrI+avzeLz19wm1bBHRET1m6QRqNOnT6N///7o2rUrjh49ih49eiA8PBwff/wxXn31VQiCgAULFsDFxQWLFy9GYWFhbfebiIiIiIiozkkagRo+fDjeeecdbN++Hba2tlrjTp48iRUrVmDZsmV477339NZJIiIiIiKi+kBSAnXp0iWYmZlVGefr6wtfX18UFRXVuGNERERERES6KC4uhkqlEi81qmzwp7okncInJXmqSTwRERERUaNnaQlYWdX8YWwMpVIJT09PeHp6Yu3atYbeMoPKz8/Hl19+iYCAACgUCrRp0waenp6wt7eHu7s7pk6diuTkZL21V60b6f76669ISEhAZmYmysrK1JYtX75cLx0jIiIiIiLNgoKCEB0dbehuGNyKFSvw6aefok2bNhg6dCjmzZuHVq1awcLCAnfv3sW5c+dw7Ngx9O/fHz179sTq1avRrl27GrWpcwIVGRmJ999/Hx06dICjoyNkMpm4rPxzIiIiIiKi2nTixAkcOXIEnTt31rj82WefxeTJk/Gvf/0L0dHRSExMrPsE6osvvsDGjRsRHBxco4aJiIiIiIhq4rvvvpMUJ5fLERISopc2db6RrpGREZ577jm9NE5ERERERFQdWVlZuHv3LgDg1q1b+OGHH3Du3Llab1fnBGrWrFlN/kI1IiIiIiIynK+//hrdu3eHt7c31q9fjxEjRuDQoUN45ZVX8NVXX9Vq2zqfwjdnzhwMGjQIbdu2haenJ0xNTdWW79ixQ2+dIyIiIiIietzq1atx/vx53L9/H61bt8aVK1dgb2+P3Nxc9O7dG9OmTau1tnVOoGbOnIkjR46gT58+aNmyJSeOoHrvfkm2obtARFRjmv6WNTNprtc2HhT/08ZW1e4a16GL6rZHDVd13ytEAGBsbAxzc3OYm5vjySefhL29PQDAxsam1vMTnROoLVu24IcffsCgQYNqoz9ERERERESVMjExwYMHD2Bubo7ExESxPC8vr9bb1vkaKFtbW7Rt27Y2+kJERERERFSlw4cPQy6XAwAUCoVYXlBQUOv3x9I5gYqIiMDChQtx//792ugPERERERFRpaysrDSequfg4IBnnnmmVtvW+RS+VatW4c8//4SjoyPatGlTYRKJ3377TW+dIyIiIiIikurBgwc4c+YMMjMzUVZWprZs6NChemlD5wRq+PDhemmYiIiIiIhIX5RKJSZOnIjbt29XWCaTyVBaWqqXdnROoBYuXKiXhomIiIiIiPQlLCwMo0ePxocffghHR8daa0fna6CkEAShNqolIiIiIiLSKDMzE7Nnz67V5AmQmEB17NgRcXFxKCoqqjTu0qVLeOONN7B48WK9dI6IiIiIqLEQmllAsGxW4weMjKBUKuHp6QlPT0+sXbvW0JtWL7z00ktISEio9XYkncK3du1avPvuuwgNDUVgYCC6d+8OFxcXmJubIysrCxcuXMDx48dx4cIFhIWFISQkpLb7TURERETUZAUFBdX6dN0NzZo1azB69GgcO3YMnTt3rjDZ3ZtvvqmXdiQlUH379kVycjJOnDiB7du3Iy4uDlevXkVBQQHs7OzQrVs3TJw4Ea+++iqaN2+ul44RERERERFJFRcXh/3798PCwgIJCQlq05zLZLK6TaAe6dWrF3r16qWXhomIiIiIiPTl/fffx6JFizBv3jwYGdXKVA8AqjELX1N3vyQHpkbcbUSkX/lluYbuQqNlZWRj6C7Umvsl2eLzZibNDdaP8raqdhu6C0TURBUVFWHMmDG1mjwBtTQLHxERERERUV2aNGkStm/fXuvtcCiFiIiIiIgavNLSUixZsgT79+9Hly5dKkwisXz5cr20wwSKiIiIiIgavLNnz6Jbt24AgHPnzqktKz+hRE0xgSIiIiIiogbvyJEjddJOtRKosrIy/PHHH8jMzERZWZnast69e+ulY0RERERERFV57733MHz4cDz77LN10p7Ok0gkJSXhySefRMeOHdG7d28EBASIjz59+tRGH4mIiIiIqJqioqLQo0cPWFtbw8HBAcOHD0daWppajEwm0/hYunSp1nqLi4uxaNEitG3bFubm5ujatSuUSmWFuHXr1sHD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iIiIJGICRUREREREJBETKCIiIiIiIomYQBEREREREUnEBIqIiIiIiEgiJlBEREREREQS8T5QRFTrOB204fko2hm6Cw0C36tERFQVjkAREREREdUBK3MB1hY1fxgbAUqlEp6envD09MTatWsNvWlNCkegiIiIiIgamKCgIERHRxu6G00SR6CIiIiIiIgkYgJFREREREQkERMoIiIiIiIiiZhAERERERERScQEioiIiIiISCImUERERERERBIxgSIiIiIiIpKICRQREREREZFETKCIiIiIiIgkYgJFREREREQkkYmhO0BERLXvl5xLhu4CERFRo8ARKCIiIiIiIomYQBEREREREUnEBIqIiIiIqA7YWACKZjV/GBsBSqUSnp6e8PT0xNq1aw29aU0Kr4EiIiIiImpggoKCEB0dbehuNEkcgSIiIiIiIpKICRQREREREZFETKCIiIiIiIgkYgJFREREREQkERMoIiIiIiIiiZhAERERERERScQEioiIiIiISCImUERERERERBLxRrpERERE1ODkl+VWKCsRSg3QE2pqOAJFRERERNSIRUVFoUePHrC2toaDgwOGDx+OtLQ0tRiZTKbxsXTpUq31btq0SeM6Dx480Knt4ODgCnX07NlTvztBj5hAERERERE1YomJiQgNDUVSUhLi4+NRUlKCwMBA3Lt3T4zJyMhQe2zcuBEymQyjRo2qtG4bG5sK65qbm+vUNgAEBQWp1bFv3z797gQ94il8REREREQNTHFxMXJz1U9jlMvlkMvlFWKVSqXa65iYGDg4OCAlJQW9e/cGADg5OanF7N69G3369METTzxRaT9kMlmFdXVt+1HfK6unPuEIFBERERFRHbCxMIJCDw9jI2Dnzp1QKBRqj6ioKEn9yMnJAQDY2tpqXH7z5k3s3bsXU6ZMqbKu/Px8uLu7w9XVFYMHD8bp06er1XZCQgIcHBzQvn17TJ06FZmZmVI2xSA4AkVERERE1MCMGDEC0dHRamWaRp8eJwgCZs+eDT8/P3h5eWmM2bx5M6ytrTFy5MhK63rqqaewadMmdO7cGbm5ufjiiy/w3HPP4b///S/atWsnue2BAwdi9OjRcHd3x5UrV/DBBx+gb9++SElJkbRNdY0JFBERERFRA2NqagobGxud1wsLC8OZM2dw/PhxrTEbN27E+PHj1a5l0qRnz55qkz0899xzeOaZZ7B69WqsWrVKcttjxowRn3t5eaF79+5wd3fH3r17q0ziDIEJFBERERFREzBz5kzs2bMHR48ehaurq8aYY8eOIS0tDdu3b9e5fiMjI/To0QOXLl2qVtuPODs7w93dXWM99YFBr4GKiIioMGVh+YvHBEFAREQEXFxcYGFhgYCAAJw/f16tjsLCQsycORN2dnawtLTE0KFDcf36dbWYrKwsTJgwQTw/dMKECcjOzq6LTSQiIiIiMihBEBAWFoYdO3bg8OHD8PDw0BobHR0Nb29vdO3atVrtpKamwtnZuVptP3Lnzh389ddfavXUJwafRKJTp05qUxaePXtWXLZkyRIsX74ca9asQXJyMpycnNC/f3/k5eWJMeHh4di5cye2bduG48ePIz8/H4MHD0Zp6T83Uhs3bhxSU1OhVCqhVCqRmpqKCRMm1Ol2EhEREREZQmhoKGJjYxEXFwdra2uoVCqoVCoUFBSoxeXm5uK7777D66+/rrGeiRMnYv78+eLrjz76CPv378fly5eRmpqKKVOmIDU1FTNmzJDcdn5+PubMmYOTJ0/i6tWrSEhIwJAhQ2BnZ4cRI0bUwt6oOYOfwmdiYqJxykJBELBy5UosWLBAPPdx8+bNcHR0RFxcHKZPn46cnBxER0fj3//+N/r16wcAiI2NhZubGw4ePIgBAwbg4sWLUCqVSEpKgo+PDwBgw4YN8PX1RVpaGjp06FB3G0tEREREVMfWr18PAAgICFArj4mJQXBwsPh627ZtEAQBY8eO1VhPeno6jIz+GX/Jzs7GtGnToFKpoFAo0K1bNxw9ehTPPvus5LaNjY1x9uxZbNmyBdnZ2XB2dkafPn2wfft2WFtb12Cra4/BE6hLly7BxcUFcrkcPj4+iIyMxBNPPIErV65ApVIhMDBQjJXL5fD398eJEycwffp0pKSkoLi4WC3GxcUFXl5eOHHiBAYMGICTJ09CoVCIyRPw8II3hUKBEydOaE2gCgsLUVhYKL5+fJ59IiIiIqKGQBAESXHTpk3DtGnTtC5PSEhQe71ixQqsWLGiRm1bWFhg//79kvpXXxj0FD4fHx9s2bIF+/fvx4YNG6BSqdCrVy/cuXMHKpUKAODo6Ki2jqOjo7hMpVLBzMwMLVq0qDTGwcGhQtsODg5ijCZRUVFq8+q7ubnVaFuJiIiIiKjhM+gI1MCBA8XnnTt3hq+vL9q2bYvNmzeLUyLKZDK1dQRBqFD2uMdjNMVXVc/8+fMxe/Zs8XVubi6TKCIiIiIDyi/jGUFkeAafRKI8S0tLdO7cGZcuXRKvi3p8lCgzM1MclXJyckJRURGysrIqjbl582aFtm7dulVhdKs8uVwOGxsbtQcRERERETVt9SqBKiwsxMWLF+Hs7AwPDw84OTkhPj5eXF5UVITExET06tULAODt7Q1TU1O1mIyMDJw7d06M8fX1RU5ODn799Vcx5pdffkFOTo4YQ0REREREJIVBT+GbM2cOhgwZgtatWyMzMxOffPIJcnNzMWnSJMhkMoSHhyMyMhLt2rVDu3btEBkZiWbNmmHcuHEAAIVCgSlTpuDtt99Gy5YtYWtrizlz5qBz587irHwdO3ZEUFAQpk6dii+//BLAwwvkBg8ezBn4iIiIiIhIJwZNoK5fv46xY8fi9u3bsLe3R8+ePZGUlAR3d3cAwNy5c1FQUICQkBBkZWXBx8cHBw4cUJvScMWKFTAxMcHLL7+MgoICvPDCC9i0aROMjY3FmG+++QZvvvmmOFvf0KFDsWbNmrrdWCIiIiIiavBkgtR5DZu43NxcKBQK5OTk8HooIiIiojowzM5f7XVVk0iUCKU4mn223n1fKywshLm5Ob458V8obFvWuL63xwzFxwvmYfTo0XroHemqXl0DRURERETUWNnIjdDcvOYPEyMZlEolPD094enpibVr1xp605oUg99Il4iIiIiIdBMUFITo6GhDd6NJ4ggUERERERGRREygiIiIiIiIJGICRUREREREJBETKCIiIiIiIomYQBEREREREUnEWfiIiIiIqF7afTtR7fULtt0M1BOif3AEioiIiIiISCImUERERERERBIxgSIiIiIiIpKICRQREREREZFETKCIiIiIiIgkYgJFREREREQkERMoIiIiIiIiiXgfKCIiIiKiOtDc3AQtLExrXI+JkQxKpRILFy4EAISGhiI0NLTG9ZI0TKCIiIiIiBqYoKAgREdHG7obTRJP4SMiIiIiIpKICRQREREREZFETKCIiIiIiIgk4jVQRERERNQgHLp7utLlubm5UCgUddQbaqo4AkVERERERCQREygiIiIiIiKJmEARERERERFJxASKiIiIiIhIIiZQRERERESNWFRUFHr06AFra2s4ODhg+PDhSEtLU4uRyWQa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/w5/f38AQLdu3VBaWorMzEw8//zz1dtQIiKieo6TSBAR1TM5OTlITU1Ve9jb26OkpASrV6/G5cuX8e9//xv/+te/1NZr06YN8vPzcejQIdy+fRv379/XWH+bNm1w6NAhqFQqZGVlAQD69u2LU6dOYcuWLbh06RIWLlyollBZWVlhypQpeOedd3Do0CGcO3cOwcHBYjIHAO3bt8f48eMxceJE7NixA1euXEFycjIWL16Mffv21cKeIiIiqntMoIiI6pmEhAR069ZN7bFx40YsX74cixcvhpeXF7755htERUWprderVy/MmDEDY8aMgb29PZYsWaKx/mXLliE+Ph5ubm7o1q0bAGDAgAH44IMPMHfuXPTo0QN5eXmYOHGi2npLly5F7969MXToUPTr1w9+fn7w9vZWi4mJicHEiRPx9ttvo0OHDhg6dCh++eUXuLm56XEPERERGY5MkHJiOxEREREREXEEioiIiIiISComUERERERERBIxgSIiIiIiIpKICRQREREREZFETKCIiIiIiIgkYgJFREREREQkERMoIiIiIiIiiZhAERERERERScQEioiIiIiISCImUERERERERBIxgSIiIiIiIpLo/wBzomfsFyB7/QAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, axs = plt.subplots(figsize = (10, 5))\n", "\n", "gamma.mean('time').sel(xh = -45, method = 'nearest').plot.pcolormesh(ax=axs, cmap=cmocean.cm.dense,\n", " vmin = 27.4, vmax = 28.4, levels = 25,\n", " cbar_kwargs={'label': '$\\\\gamma$ (kg/m$^{3}$)'})\n", "axs.invert_yaxis()\n", "axs.set_ylabel('Depth (m)')\n", "axs.set_xlabel('Latitude')\n", "axs.set_title('Neutral density at 45$^{\\circ}$W');" ] } ], "metadata": { "kernelspec": { "display_name": "Python [conda env:analysis3-25.08] *", "language": "python", "name": "conda-env-analysis3-25.08-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.13" } }, "nbformat": 4, "nbformat_minor": 5 }