{ "cells": [ { "cell_type": "markdown", "id": "d9b0d201", "metadata": {}, "source": [ "# CO2 Flux\n", "\n", "Compare monthly climatologies of the CO2 Flux with observations" ] }, { "cell_type": "markdown", "id": "4e61bcda-4b17-4ff5-88cf-40b690fe623f", "metadata": {}, "source": [ "## Imports" ] }, { "cell_type": "code", "execution_count": 1, "id": "3bc12e7a", "metadata": {}, "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "code", "execution_count": 6, "id": "e103a5fc", "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import os\n", "\n", "from itertools import product\n", "\n", "import pandas as pd\n", "import numpy as np\n", "import xarray as xr\n", "\n", "import matplotlib.pyplot as plt\n", "import matplotlib.gridspec as gridspec\n", "import matplotlib.colors as colors\n", "import cmocean\n", "\n", "import cartopy\n", "import cartopy.crs as ccrs\n", "\n", "import xpersist as xp\n", "cache_dir = '/glade/p/cgd/oce/projects/cesm2-marbl/xpersist_cache/3d_fields'\n", "if (os.path.isdir(cache_dir)):\n", " xp.settings['cache_dir'] = cache_dir\n", "os.makedirs(cache_dir, exist_ok=True)\n", "\n", "import pop_tools\n", "\n", "\n", "import climo_utils as cu\n", "import utils\n", "import discrete_obs \n", "\n", "import plot" ] }, { "cell_type": "markdown", "id": "af7cd57b-f12e-4a40-8ed0-fcad8bcc968d", "metadata": {}, "source": [ "## Spin up a Cluster" ] }, { "cell_type": "code", "execution_count": 3, "id": "66f09305", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/glade/u/home/mgrover/miniconda3/envs/cesm2-marbl/lib/python3.7/site-packages/distributed/node.py:164: UserWarning: Port 8787 is already in use.\n", "Perhaps you already have a cluster running?\n", "Hosting the HTTP server on port 46185 instead\n", " expected, actual\n" ] }, { "data": { "text/html": [ "
\n",
"Client\n", "
| \n",
"\n",
"Cluster\n", "
| \n",
"
<xarray.Dataset>\n", "Dimensions: (nlat: 384, nlon: 320, time: 12, z_t: 60)\n", "Coordinates:\n", " TLONG (nlat, nlon) float64 ...\n", " TLAT (nlat, nlon) float64 ...\n", " ULONG (nlat, nlon) float64 ...\n", " ULAT (nlat, nlon) float64 ...\n", " * time (time) int32 1 2 3 4 5 6 7 8 9 10 11 12\n", " * z_t (z_t) float32 500.0 1.5e+03 2.5e+03 ... 5.125e+05 5.375e+05\n", "Dimensions without coordinates: nlat, nlon\n", "Data variables:\n", " FG_CO2 (time, nlat, nlon) float32 nan nan nan nan ... nan nan nan nan\n", " TAREA (nlat, nlon) float64 ...\n", " dz (z_t) float32 1e+03 1e+03 1e+03 ... 2.499e+04 2.5e+04 2.5e+04\n", " KMT (nlat, nlon) float64 ...\n", " REGION_MASK (nlat, nlon) float64 ...
[122880 values with dtype=float64]
[122880 values with dtype=float64]
[122880 values with dtype=float64]
[122880 values with dtype=float64]
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], dtype=int32)
array([5.000000e+02, 1.500000e+03, 2.500000e+03, 3.500000e+03, 4.500000e+03,\n", " 5.500000e+03, 6.500000e+03, 7.500000e+03, 8.500000e+03, 9.500000e+03,\n", " 1.050000e+04, 1.150000e+04, 1.250000e+04, 1.350000e+04, 1.450000e+04,\n", " 1.550000e+04, 1.650984e+04, 1.754790e+04, 1.862913e+04, 1.976603e+04,\n", " 2.097114e+04, 2.225783e+04, 2.364088e+04, 2.513702e+04, 2.676542e+04,\n", " 2.854837e+04, 3.051192e+04, 3.268680e+04, 3.510935e+04, 3.782276e+04,\n", " 4.087846e+04, 4.433777e+04, 4.827367e+04, 5.277280e+04, 5.793729e+04,\n", " 6.388626e+04, 7.075633e+04, 7.870025e+04, 8.788252e+04, 9.847059e+04,\n", " 1.106204e+05, 1.244567e+05, 1.400497e+05, 1.573946e+05, 1.764003e+05,\n", " 1.968944e+05, 2.186457e+05, 2.413972e+05, 2.649001e+05, 2.889385e+05,\n", " 3.133405e+05, 3.379793e+05, 3.627670e+05, 3.876452e+05, 4.125768e+05,\n", " 4.375392e+05, 4.625190e+05, 4.875083e+05, 5.125028e+05, 5.375000e+05],\n", " dtype=float32)
array([[[ nan, nan, nan, ...,\n", " nan, nan, nan],\n", " [ nan, nan, nan, ...,\n", " nan, nan, nan],\n", " [-4.8583554e-04, -5.7094818e-04, -4.7134905e-04, ...,\n", " nan, nan, nan],\n", " ...,\n", " [ nan, nan, nan, ...,\n", " nan, nan, nan],\n", " [ nan, nan, nan, ...,\n", " nan, nan, nan],\n", " [ nan, nan, nan, ...,\n", " nan, nan, nan]],\n", "\n", " [[ nan, nan, nan, ...,\n", " nan, nan, nan],\n", " [ nan, nan, nan, ...,\n", " nan, nan, nan],\n", " [-3.4481292e-03, -4.1879923e-03, -3.5189423e-03, ...,\n", " nan, nan, nan],\n", "...\n", " [ nan, nan, nan, ...,\n", " nan, nan, nan],\n", " [ nan, nan, nan, ...,\n", " nan, nan, nan],\n", " [ nan, nan, nan, ...,\n", " nan, nan, nan]],\n", "\n", " [[ nan, nan, nan, ...,\n", " nan, nan, nan],\n", " [ nan, nan, nan, ...,\n", " nan, nan, nan],\n", " [-6.2478946e-05, -7.6542361e-05, -6.9390946e-05, ...,\n", " nan, nan, nan],\n", " ...,\n", " [ nan, nan, nan, ...,\n", " nan, nan, nan],\n", " [ nan, nan, nan, ...,\n", " nan, nan, nan],\n", " [ nan, nan, nan, ...,\n", " nan, nan, nan]]], dtype=float32)
[122880 values with dtype=float64]
array([ 1000. , 1000. , 1000. , 1000. , 1000. , 1000. ,\n", " 1000. , 1000. , 1000. , 1000. , 1000. , 1000. ,\n", " 1000. , 1000. , 1000. , 1000. , 1019.6808, 1056.4484,\n", " 1105.9951, 1167.807 , 1242.4133, 1330.9678, 1435.141 , 1557.1259,\n", " 1699.6796, 1866.2124, 2060.9023, 2288.852 , 2556.247 , 2870.575 ,\n", " 3240.8372, 3677.7725, 4194.031 , 4804.2236, 5524.7544, 6373.192 ,\n", " 7366.945 , 8520.893 , 9843.658 , 11332.466 , 12967.199 , 14705.344 ,\n", " 16480.709 , 18209.135 , 19802.234 , 21185.957 , 22316.51 , 23186.494 ,\n", " 23819.45 , 24257.217 , 24546.78 , 24731.014 , 24844.328 , 24911.975 ,\n", " 24951.291 , 24973.594 , 24985.96 , 24992.674 , 24996.244 , 24998.11 ],\n", " dtype=float32)
[122880 values with dtype=float64]
[122880 values with dtype=float64]
<xarray.Dataset>\n", "Dimensions: (region: 1)\n", "Dimensions without coordinates: region\n", "Data variables:\n", " FG_CO2 (region) float64 -2.039
array([-2.03923908])
<xarray.DataArray (region: 1)>\n", "array([-1.4174079])\n", "Dimensions without coordinates: region
array([-1.4174079])
<xarray.Dataset>\n", "Dimensions: (basins: 4, lat_t: 394, lat_t_edges: 395, time: 12)\n", "Coordinates:\n", " * lat_t (lat_t) float32 -79.22 -78.69 -78.15 ... 88.84 89.37 89.9\n", " * lat_t_edges (lat_t_edges) float32 -79.49 -78.95 -78.42 ... 89.1 89.64 90.0\n", " * time (time) int32 1 2 3 4 5 6 7 8 9 10 11 12\n", "Dimensions without coordinates: basins\n", "Data variables:\n", " FG_CO2 (basins, time, lat_t) float32 nan nan -1.236 ... nan nan nan
array([-79.22052 , -78.68631 , -78.15209 , ..., 88.836334, 89.370575,\n", " 89.904816], dtype=float32)
array([-79.48714 , -78.952896, -78.418655, ..., 89.103455, 89.637695,\n", " 90. ], dtype=float32)
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], dtype=int32)
array([[[ nan, nan, ..., -0.00894 , -0.008547],\n", " [ nan, nan, ..., -0.014722, -0.01433 ],\n", " ...,\n", " [ nan, nan, ..., -0.067452, -0.064322],\n", " [ nan, nan, ..., -0.006892, -0.006435]],\n", "\n", " [[ nan, nan, ..., -0.00894 , -0.008547],\n", " [ nan, nan, ..., -0.014722, -0.01433 ],\n", " ...,\n", " [ nan, nan, ..., -0.067452, -0.064322],\n", " [ nan, nan, ..., -0.006892, -0.006435]],\n", "\n", " [[ nan, nan, ..., nan, nan],\n", " [ nan, nan, ..., nan, nan],\n", " ...,\n", " [ nan, nan, ..., nan, nan],\n", " [ nan, nan, ..., nan, nan]],\n", "\n", " [[ nan, nan, ..., nan, nan],\n", " [ nan, nan, ..., nan, nan],\n", " ...,\n", " [ nan, nan, ..., nan, nan],\n", " [ nan, nan, ..., nan, nan]]], dtype=float32)
<xarray.Dataset>\n", "Dimensions: (nlat: 384, nlon: 321, z_t: 60)\n", "Coordinates:\n", " * z_t (z_t) float32 500.0 1.5e+03 2.5e+03 ... 5.125e+05 5.375e+05\n", "Dimensions without coordinates: nlat, nlon\n", "Data variables:\n", " TLAT (nlat, nlon) float64 -79.22 -79.22 -79.22 ... 80.31 80.31 80.31\n", " TLONG (nlat, nlon) float64 -220.6 -219.4 -218.3 ... -39.57 -39.86\n", " fgco2 (nlat, nlon) float32 nan nan nan nan nan ... nan nan nan nan\n", " TAREA (nlat, nlon) float64 8.592e+12 8.592e+12 ... 3.341e+12\n", " dz (z_t) float32 1e+03 1e+03 1e+03 ... 2.499e+04 2.5e+04 2.5e+04\n", " KMT (nlat, nlon) float64 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0\n", " REGION_MASK (nlat, nlon) float64 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0\n", " fgco2_obs (nlat, nlon) float64 nan nan nan nan nan ... nan nan nan nan
array([5.000000e+02, 1.500000e+03, 2.500000e+03, 3.500000e+03, 4.500000e+03,\n", " 5.500000e+03, 6.500000e+03, 7.500000e+03, 8.500000e+03, 9.500000e+03,\n", " 1.050000e+04, 1.150000e+04, 1.250000e+04, 1.350000e+04, 1.450000e+04,\n", " 1.550000e+04, 1.650984e+04, 1.754790e+04, 1.862913e+04, 1.976603e+04,\n", " 2.097114e+04, 2.225783e+04, 2.364088e+04, 2.513702e+04, 2.676542e+04,\n", " 2.854837e+04, 3.051192e+04, 3.268680e+04, 3.510935e+04, 3.782276e+04,\n", " 4.087846e+04, 4.433777e+04, 4.827367e+04, 5.277280e+04, 5.793729e+04,\n", " 6.388626e+04, 7.075633e+04, 7.870025e+04, 8.788252e+04, 9.847059e+04,\n", " 1.106204e+05, 1.244567e+05, 1.400497e+05, 1.573946e+05, 1.764003e+05,\n", " 1.968944e+05, 2.186457e+05, 2.413972e+05, 2.649001e+05, 2.889385e+05,\n", " 3.133405e+05, 3.379793e+05, 3.627670e+05, 3.876452e+05, 4.125768e+05,\n", " 4.375392e+05, 4.625190e+05, 4.875083e+05, 5.125028e+05, 5.375000e+05],\n", " dtype=float32)
array([[-79.22052261, -79.22052261, -79.22052261, ..., -79.22052261,\n", " -79.22052261, -79.22052261],\n", " [-78.68630626, -78.68630626, -78.68630626, ..., -78.68630626,\n", " -78.68630626, -78.68630626],\n", " [-78.15208992, -78.15208992, -78.15208992, ..., -78.15208992,\n", " -78.15208992, -78.15208992],\n", " ...,\n", " [ 81.44584238, 81.44584238, 81.44466079, ..., 81.44229771,\n", " 81.44466079, 81.44584238],\n", " [ 80.87803543, 80.87803543, 80.87705778, ..., 80.87510244,\n", " 80.87705778, 80.87803543],\n", " [ 80.31321311, 80.31321311, 80.31241206, ..., 80.31080987,\n", " 80.31241206, 80.31321311]])
array([[-220.56249613, -219.43749609, -218.31249606, ..., 137.18750382,\n", " 138.31250385, 139.43750388],\n", " [-220.56249613, -219.43749609, -218.31249606, ..., 137.18750382,\n", " 138.31250385, 139.43750388],\n", " [-220.56249613, -219.43749609, -218.31249606, ..., 137.18750382,\n", " 138.31250385, 139.43750388],\n", " ...,\n", " [ -39.7932723 , -40.20670806, -40.62006565, ..., -38.96679888,\n", " -39.37991654, -39.79327229],\n", " [ -39.82753619, -40.17244447, -40.51730173, ..., -39.13798089,\n", " -39.48268046, -39.82753618],\n", " [ -39.85740526, -40.14257567, -40.42771349, ..., -39.28723255,\n", " -39.5722687 , -39.85740525]])
array([[nan, nan, nan, ..., nan, nan, nan],\n", " [nan, nan, nan, ..., nan, nan, nan],\n", " [nan, nan, nan, ..., nan, nan, nan],\n", " ...,\n", " [nan, nan, nan, ..., nan, nan, nan],\n", " [nan, nan, nan, ..., nan, nan, nan],\n", " [nan, nan, nan, ..., nan, nan, nan]], dtype=float32)
array([[8.59217065e+12, 8.59217065e+12, 8.59235345e+12, ...,\n", " 8.59271911e+12, 8.59235345e+12, 8.59217065e+12],\n", " [1.45745047e+13, 1.45745047e+13, 1.45745047e+13, ...,\n", " 1.45745047e+13, 1.45745047e+13, 1.45745047e+13],\n", " [1.52530781e+13, 1.52530781e+13, 1.52530781e+13, ...,\n", " 1.52530781e+13, 1.52530781e+13, 1.52530781e+13],\n", " ...,\n", " [4.32754786e+12, 4.32754786e+12, 4.32799292e+12, ...,\n", " 4.32888316e+12, 4.32799292e+12, 4.32754786e+12],\n", " [3.82798578e+12, 3.82798578e+12, 3.82839189e+12, ...,\n", " 3.82920421e+12, 3.82839189e+12, 3.82798578e+12],\n", " [3.34119240e+12, 3.34119240e+12, 3.34155788e+12, ...,\n", " 3.34228893e+12, 3.34155788e+12, 3.34119240e+12]])
array([ 1000. , 1000. , 1000. , 1000. , 1000. ,\n", " 1000. , 1000. , 1000. , 1000. , 1000. ,\n", " 1000. , 1000. , 1000. , 1000. , 1000. ,\n", " 1000. , 1019.6808, 1056.4484, 1105.9951, 1167.807 ,\n", " 1242.4133, 1330.9678, 1435.141 , 1557.1259, 1699.6796,\n", " 1866.2124, 2060.9023, 2288.852 , 2556.247 , 2870.575 ,\n", " 3240.8372, 3677.7725, 4194.031 , 4804.2236, 5524.7544,\n", " 6373.192 , 7366.945 , 8520.893 , 9843.658 , 11332.466 ,\n", " 12967.199 , 14705.344 , 16480.709 , 18209.135 , 19802.234 ,\n", " 21185.957 , 22316.51 , 23186.494 , 23819.45 , 24257.217 ,\n", " 24546.78 , 24731.014 , 24844.328 , 24911.975 , 24951.291 ,\n", " 24973.594 , 24985.96 , 24992.674 , 24996.244 , 24998.11 ],\n", " dtype=float32)
array([[0., 0., 0., ..., 0., 0., 0.],\n", " [0., 0., 0., ..., 0., 0., 0.],\n", " [0., 0., 0., ..., 0., 0., 0.],\n", " ...,\n", " [0., 0., 0., ..., 0., 0., 0.],\n", " [0., 0., 0., ..., 0., 0., 0.],\n", " [0., 0., 0., ..., 0., 0., 0.]])
array([[0., 0., 0., ..., 0., 0., 0.],\n", " [0., 0., 0., ..., 0., 0., 0.],\n", " [0., 0., 0., ..., 0., 0., 0.],\n", " ...,\n", " [0., 0., 0., ..., 0., 0., 0.],\n", " [0., 0., 0., ..., 0., 0., 0.],\n", " [0., 0., 0., ..., 0., 0., 0.]])
array([[nan, nan, nan, ..., nan, nan, nan],\n", " [nan, nan, nan, ..., nan, nan, nan],\n", " [nan, nan, nan, ..., nan, nan, nan],\n", " ...,\n", " [nan, nan, nan, ..., nan, nan, nan],\n", " [nan, nan, nan, ..., nan, nan, nan],\n", " [nan, nan, nan, ..., nan, nan, nan]])