Combining tiles

[8]:
import glob
import distributed
import numpy as np

dirname = "/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF"

Request resources

[2]:
import ncar_jobqueue

cluster = ncar_jobqueue.NCARCluster(
    project="ncgd0011",
    #scheduler_options=dict(dashboard_address=":9797"),
    cores=1,  # The number of cores you want
    memory="12GB",  # Amount of memory
    processes=1,  # How many processes
    queue="casper",  # The type of queue to utilize (/glade/u/apps/dav/opt/usr/bin/execcasper)
    local_directory="$TMPDIR",  # Use your local directory
    resource_spec="select=1:ncpus=1:mem=12GB",  # Specify resources
    walltime="04:00:00",
)
cluster
/glade/u/home/dcherian/miniconda3/envs/pump/lib/python3.10/site-packages/dask_jobqueue/core.py:20: FutureWarning: tmpfile is deprecated and will be removed in a future release. Please use dask.utils.tmpfile instead.
  from distributed.utils import tmpfile
/glade/u/home/dcherian/miniconda3/envs/pump/lib/python3.10/site-packages/distributed/node.py:179: UserWarning: Port 8787 is already in use.
Perhaps you already have a cluster running?
Hosting the HTTP server on port 42221 instead
  warnings.warn(
[15]:
client = distributed.Client(cluster)
client
[15]:

Client

Client-4f4fb284-2301-11ed-ad92-3cecef1acbfa

Connection method: Cluster object Cluster type: dask_jobqueue.PBSCluster
Dashboard: https://jupyterhub.hpc.ucar.edu/stable/user/dcherian/proxy/42221/status

Cluster Info

[16]:
cluster.scale(2)

Note

The files are stored under paths that look like

'/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0118',
'/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0119',
'/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0120',
`/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0121',
...

Test out combining

Here’s what the files for a single day looks like.

[12]:
pattern = "1993_001"
files = sorted(glob.glob(f"{dirname}/*{pattern}*"))[:30]
files
[12]:
['/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0118',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0119',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0120',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0121',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0122',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0123',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0136',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0137',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0138',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0139',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0140',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0141',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0154',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0155',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0156',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0157',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0158',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0159',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0172',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0173',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0174',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0175',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0176',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0177',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0190',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0191',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0192',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0193',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0194',
 '/glade/campaign/cgd/oce/people/bachman/ETP_1_20_tides/SHELF/ocean_shelf__1993_001.nc.0195']

Lets read the raw files using read_raw_files

[ ]:
from mom6_tools.sections import read_raw_files
dsets = read_raw_files(files, parallel=True)

This returns a 1D list of Datasets

[18]:
dsets
[18]:
[<xarray.Dataset>
 Dimensions:        (xq: 51, yh: 35, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 51,
                     yq: 35)
 Coordinates:
   * xq             (xq) float64 263.0 263.1 263.1 263.1 ... 265.4 265.4 265.5
   * yh             (yh) float64 2.975 3.025 3.075 3.125 ... 4.575 4.625 4.675
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 263.0 263.0 263.1 263.1 ... 265.4 265.4 265.5
   * yq             (yq) float64 3.0 3.05 3.1 3.15 3.2 ... 4.5 4.55 4.6 4.65 4.7
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 35, 51), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 35, 51), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 35, 51), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 35, 51), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 35, 51), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 35, 51), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 35, 51), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 35, 51), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 56, yh: 35, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 55,
                     yq: 35)
 Coordinates:
   * xq             (xq) float64 265.5 265.6 265.6 265.6 ... 268.1 268.2 268.2
   * yh             (yh) float64 2.975 3.025 3.075 3.125 ... 4.575 4.625 4.675
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 265.5 265.6 265.6 265.7 ... 268.1 268.2 268.2
   * yq             (yq) float64 3.0 3.05 3.1 3.15 3.2 ... 4.5 4.55 4.6 4.65 4.7
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 35, 56), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 35, 55), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 35, 55), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 35, 55), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 35, 55), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 35, 55), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 35, 56), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 35, 55), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 56, yh: 35, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 55,
                     yq: 35)
 Coordinates:
   * xq             (xq) float64 268.2 268.3 268.4 268.4 ... 270.9 270.9 271.0
   * yh             (yh) float64 2.975 3.025 3.075 3.125 ... 4.575 4.625 4.675
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 268.3 268.3 268.4 268.4 ... 270.9 270.9 271.0
   * yq             (yq) float64 3.0 3.05 3.1 3.15 3.2 ... 4.5 4.55 4.6 4.65 4.7
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 35, 56), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 35, 55), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 35, 55), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 35, 55), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 35, 55), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 35, 55), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 35, 56), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 35, 55), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 57, yh: 35, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 56,
                     yq: 35)
 Coordinates:
   * xq             (xq) float64 271.0 271.1 271.1 271.1 ... 273.7 273.8 273.8
   * yh             (yh) float64 2.975 3.025 3.075 3.125 ... 4.575 4.625 4.675
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 271.0 271.1 271.1 271.2 ... 273.7 273.7 273.8
   * yq             (yq) float64 3.0 3.05 3.1 3.15 3.2 ... 4.5 4.55 4.6 4.65 4.7
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 35, 57), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 35, 56), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 35, 56), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 35, 56), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 35, 56), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 35, 56), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 35, 57), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 35, 56), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 57, yh: 35, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 56,
                     yq: 35)
 Coordinates:
   * xq             (xq) float64 273.8 273.9 273.9 273.9 ... 276.5 276.6 276.6
   * yh             (yh) float64 2.975 3.025 3.075 3.125 ... 4.575 4.625 4.675
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 273.8 273.9 273.9 274.0 ... 276.5 276.5 276.6
   * yq             (yq) float64 3.0 3.05 3.1 3.15 3.2 ... 4.5 4.55 4.6 4.65 4.7
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 35, 57), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 35, 56), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 35, 56), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 35, 56), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 35, 56), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 35, 56), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 35, 57), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 35, 56), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 9, yh: 35, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 8,
                     yq: 35)
 Coordinates:
   * xq             (xq) float64 276.6 276.6 276.7 276.8 ... 276.9 276.9 277.0
   * yh             (yh) float64 2.975 3.025 3.075 3.125 ... 4.575 4.625 4.675
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 276.6 276.7 276.7 276.8 276.8 276.9 276.9 277.0
   * yq             (yq) float64 3.0 3.05 3.1 3.15 3.2 ... 4.5 4.55 4.6 4.65 4.7
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 35, 9), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 35, 8), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 35, 8), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 35, 8), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 35, 8), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 35, 8), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 35, 9), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 35, 8), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 51, yh: 56, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 51,
                     yq: 57)
 Coordinates:
   * xq             (xq) float64 263.0 263.1 263.1 263.1 ... 265.4 265.4 265.5
   * yh             (yh) float64 4.725 4.775 4.825 4.875 ... 7.375 7.425 7.475
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 263.0 263.0 263.1 263.1 ... 265.4 265.4 265.5
   * yq             (yq) float64 4.7 4.75 4.8 4.85 4.9 ... 7.3 7.35 7.4 7.45 7.5
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 51), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 57, 51), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 51), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 51), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 51), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 51), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 51), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 51), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 56, yh: 56, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 55,
                     yq: 57)
 Coordinates:
   * xq             (xq) float64 265.5 265.6 265.6 265.6 ... 268.1 268.2 268.2
   * yh             (yh) float64 4.725 4.775 4.825 4.875 ... 7.375 7.425 7.475
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 265.5 265.6 265.6 265.7 ... 268.1 268.2 268.2
   * yq             (yq) float64 4.7 4.75 4.8 4.85 4.9 ... 7.3 7.35 7.4 7.45 7.5
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 56), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 57, 55), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 55), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 55), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 55), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 55), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 56), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 55), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 56, yh: 56, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 55,
                     yq: 57)
 Coordinates:
   * xq             (xq) float64 268.2 268.3 268.4 268.4 ... 270.9 270.9 271.0
   * yh             (yh) float64 4.725 4.775 4.825 4.875 ... 7.375 7.425 7.475
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 268.3 268.3 268.4 268.4 ... 270.9 270.9 271.0
   * yq             (yq) float64 4.7 4.75 4.8 4.85 4.9 ... 7.3 7.35 7.4 7.45 7.5
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 56), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 57, 55), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 55), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 55), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 55), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 55), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 56), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 55), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 57, yh: 56, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 56,
                     yq: 57)
 Coordinates:
   * xq             (xq) float64 271.0 271.1 271.1 271.1 ... 273.7 273.8 273.8
   * yh             (yh) float64 4.725 4.775 4.825 4.875 ... 7.375 7.425 7.475
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 271.0 271.1 271.1 271.2 ... 273.7 273.7 273.8
   * yq             (yq) float64 4.7 4.75 4.8 4.85 4.9 ... 7.3 7.35 7.4 7.45 7.5
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 57), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 57, 56), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 56), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 56), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 56), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 56), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 57), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 56), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 57, yh: 56, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 56,
                     yq: 57)
 Coordinates:
   * xq             (xq) float64 273.8 273.9 273.9 273.9 ... 276.5 276.6 276.6
   * yh             (yh) float64 4.725 4.775 4.825 4.875 ... 7.375 7.425 7.475
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 273.8 273.9 273.9 274.0 ... 276.5 276.5 276.6
   * yq             (yq) float64 4.7 4.75 4.8 4.85 4.9 ... 7.3 7.35 7.4 7.45 7.5
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 57), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 57, 56), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 56), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 56), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 56), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 56), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 57), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 56), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 9, yh: 56, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 8,
                     yq: 57)
 Coordinates:
   * xq             (xq) float64 276.6 276.6 276.7 276.8 ... 276.9 276.9 277.0
   * yh             (yh) float64 4.725 4.775 4.825 4.875 ... 7.375 7.425 7.475
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 276.6 276.7 276.7 276.8 276.8 276.9 276.9 277.0
   * yq             (yq) float64 4.7 4.75 4.8 4.85 4.9 ... 7.3 7.35 7.4 7.45 7.5
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 9), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 57, 8), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 8), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 8), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 8), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 8), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 9), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 8), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 51, yh: 56, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 51,
                     yq: 57)
 Coordinates:
   * xq             (xq) float64 263.0 263.1 263.1 263.1 ... 265.4 265.4 265.5
   * yh             (yh) float64 7.525 7.575 7.625 7.675 ... 10.18 10.23 10.27
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 263.0 263.0 263.1 263.1 ... 265.4 265.4 265.5
   * yq             (yq) float64 7.5 7.55 7.6 7.65 7.7 ... 10.15 10.2 10.25 10.3
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 51), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 57, 51), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 51), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 51), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 51), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 51), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 51), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 51), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 56, yh: 56, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 55,
                     yq: 57)
 Coordinates:
   * xq             (xq) float64 265.5 265.6 265.6 265.6 ... 268.1 268.2 268.2
   * yh             (yh) float64 7.525 7.575 7.625 7.675 ... 10.18 10.23 10.27
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 265.5 265.6 265.6 265.7 ... 268.1 268.2 268.2
   * yq             (yq) float64 7.5 7.55 7.6 7.65 7.7 ... 10.15 10.2 10.25 10.3
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 56), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 57, 55), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 55), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 55), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 55), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 55), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 56), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 55), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 56, yh: 56, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 55,
                     yq: 57)
 Coordinates:
   * xq             (xq) float64 268.2 268.3 268.4 268.4 ... 270.9 270.9 271.0
   * yh             (yh) float64 7.525 7.575 7.625 7.675 ... 10.18 10.23 10.27
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 268.3 268.3 268.4 268.4 ... 270.9 270.9 271.0
   * yq             (yq) float64 7.5 7.55 7.6 7.65 7.7 ... 10.15 10.2 10.25 10.3
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 56), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 57, 55), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 55), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 55), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 55), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 55), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 56), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 55), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 57, yh: 56, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 56,
                     yq: 57)
 Coordinates:
   * xq             (xq) float64 271.0 271.1 271.1 271.1 ... 273.7 273.8 273.8
   * yh             (yh) float64 7.525 7.575 7.625 7.675 ... 10.18 10.23 10.27
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 271.0 271.1 271.1 271.2 ... 273.7 273.7 273.8
   * yq             (yq) float64 7.5 7.55 7.6 7.65 7.7 ... 10.15 10.2 10.25 10.3
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 57), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 57, 56), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 56), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 56), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 56), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 56), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 57), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 56), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 57, yh: 56, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 56,
                     yq: 57)
 Coordinates:
   * xq             (xq) float64 273.8 273.9 273.9 273.9 ... 276.5 276.6 276.6
   * yh             (yh) float64 7.525 7.575 7.625 7.675 ... 10.18 10.23 10.27
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 273.8 273.9 273.9 274.0 ... 276.5 276.5 276.6
   * yq             (yq) float64 7.5 7.55 7.6 7.65 7.7 ... 10.15 10.2 10.25 10.3
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 57), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 57, 56), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 56), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 56), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 56), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 56), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 57), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 56), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 9, yh: 56, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 8,
                     yq: 57)
 Coordinates:
   * xq             (xq) float64 276.6 276.6 276.7 276.8 ... 276.9 276.9 277.0
   * yh             (yh) float64 7.525 7.575 7.625 7.675 ... 10.18 10.23 10.27
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 276.6 276.7 276.7 276.8 276.8 276.9 276.9 277.0
   * yq             (yq) float64 7.5 7.55 7.6 7.65 7.7 ... 10.15 10.2 10.25 10.3
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 9), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 57, 8), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 8), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 8), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 8), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 8), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 9), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 8), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 51, yh: 56, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 51,
                     yq: 57)
 Coordinates:
   * xq             (xq) float64 263.0 263.1 263.1 263.1 ... 265.4 265.4 265.5
   * yh             (yh) float64 10.32 10.38 10.43 10.48 ... 12.98 13.02 13.07
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 263.0 263.0 263.1 263.1 ... 265.4 265.4 265.5
   * yq             (yq) float64 10.3 10.35 10.4 10.45 ... 12.95 13.0 13.05 13.1
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 51), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 57, 51), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 51), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 51), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 51), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 51), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 51), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 51), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 56, yh: 56, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 55,
                     yq: 57)
 Coordinates:
   * xq             (xq) float64 265.5 265.6 265.6 265.6 ... 268.1 268.2 268.2
   * yh             (yh) float64 10.32 10.38 10.43 10.48 ... 12.98 13.02 13.07
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 265.5 265.6 265.6 265.7 ... 268.1 268.2 268.2
   * yq             (yq) float64 10.3 10.35 10.4 10.45 ... 12.95 13.0 13.05 13.1
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 56), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 57, 55), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 55), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 55), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 55), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 55), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 56), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 55), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 56, yh: 56, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 55,
                     yq: 57)
 Coordinates:
   * xq             (xq) float64 268.2 268.3 268.4 268.4 ... 270.9 270.9 271.0
   * yh             (yh) float64 10.32 10.38 10.43 10.48 ... 12.98 13.02 13.07
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 268.3 268.3 268.4 268.4 ... 270.9 270.9 271.0
   * yq             (yq) float64 10.3 10.35 10.4 10.45 ... 12.95 13.0 13.05 13.1
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 56), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 57, 55), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 55), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 55), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 55), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 55), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 56), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 55), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 57, yh: 56, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 56,
                     yq: 57)
 Coordinates:
   * xq             (xq) float64 271.0 271.1 271.1 271.1 ... 273.7 273.8 273.8
   * yh             (yh) float64 10.32 10.38 10.43 10.48 ... 12.98 13.02 13.07
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 271.0 271.1 271.1 271.2 ... 273.7 273.7 273.8
   * yq             (yq) float64 10.3 10.35 10.4 10.45 ... 12.95 13.0 13.05 13.1
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 57), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 57, 56), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 56), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 56), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 56), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 56), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 57), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 56), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 57, yh: 56, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 56,
                     yq: 57)
 Coordinates:
   * xq             (xq) float64 273.8 273.9 273.9 273.9 ... 276.5 276.6 276.6
   * yh             (yh) float64 10.32 10.38 10.43 10.48 ... 12.98 13.02 13.07
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 273.8 273.9 273.9 274.0 ... 276.5 276.5 276.6
   * yq             (yq) float64 10.3 10.35 10.4 10.45 ... 12.95 13.0 13.05 13.1
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 57), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 57, 56), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 56), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 56), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 56), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 56), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 57), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 56), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 9, yh: 56, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 8,
                     yq: 57)
 Coordinates:
   * xq             (xq) float64 276.6 276.6 276.7 276.8 ... 276.9 276.9 277.0
   * yh             (yh) float64 10.32 10.38 10.43 10.48 ... 12.98 13.02 13.07
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 276.6 276.7 276.7 276.8 276.8 276.9 276.9 277.0
   * yq             (yq) float64 10.3 10.35 10.4 10.45 ... 12.95 13.0 13.05 13.1
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 9), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 57, 8), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 8), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 56, 8), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 8), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 8), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 56, 9), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 56, 8), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 51, yh: 38, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 51,
                     yq: 39)
 Coordinates:
   * xq             (xq) float64 263.0 263.1 263.1 263.1 ... 265.4 265.4 265.5
   * yh             (yh) float64 13.12 13.18 13.23 13.27 ... 14.88 14.93 14.98
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 263.0 263.0 263.1 263.1 ... 265.4 265.4 265.5
   * yq             (yq) float64 13.1 13.15 13.2 13.25 ... 14.85 14.9 14.95 15.0
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 38, 51), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 39, 51), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 38, 51), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 38, 51), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 38, 51), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 38, 51), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 38, 51), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 38, 51), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 56, yh: 38, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 55,
                     yq: 39)
 Coordinates:
   * xq             (xq) float64 265.5 265.6 265.6 265.6 ... 268.1 268.2 268.2
   * yh             (yh) float64 13.12 13.18 13.23 13.27 ... 14.88 14.93 14.98
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 265.5 265.6 265.6 265.7 ... 268.1 268.2 268.2
   * yq             (yq) float64 13.1 13.15 13.2 13.25 ... 14.85 14.9 14.95 15.0
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 38, 56), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 39, 55), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 38, 55), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 38, 55), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 38, 55), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 38, 55), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 38, 56), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 38, 55), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 56, yh: 38, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 55,
                     yq: 39)
 Coordinates:
   * xq             (xq) float64 268.2 268.3 268.4 268.4 ... 270.9 270.9 271.0
   * yh             (yh) float64 13.12 13.18 13.23 13.27 ... 14.88 14.93 14.98
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 268.3 268.3 268.4 268.4 ... 270.9 270.9 271.0
   * yq             (yq) float64 13.1 13.15 13.2 13.25 ... 14.85 14.9 14.95 15.0
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 38, 56), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 39, 55), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 38, 55), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 38, 55), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 38, 55), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 38, 55), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 38, 56), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 38, 55), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 57, yh: 38, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 56,
                     yq: 39)
 Coordinates:
   * xq             (xq) float64 271.0 271.1 271.1 271.1 ... 273.7 273.8 273.8
   * yh             (yh) float64 13.12 13.18 13.23 13.27 ... 14.88 14.93 14.98
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 271.0 271.1 271.1 271.2 ... 273.7 273.7 273.8
   * yq             (yq) float64 13.1 13.15 13.2 13.25 ... 14.85 14.9 14.95 15.0
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 38, 57), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 39, 56), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 38, 56), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 38, 56), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 38, 56), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 38, 56), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 38, 57), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 38, 56), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 57, yh: 38, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 56,
                     yq: 39)
 Coordinates:
   * xq             (xq) float64 273.8 273.9 273.9 273.9 ... 276.5 276.6 276.6
   * yh             (yh) float64 13.12 13.18 13.23 13.27 ... 14.88 14.93 14.98
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 273.8 273.9 273.9 274.0 ... 276.5 276.5 276.6
   * yq             (yq) float64 13.1 13.15 13.2 13.25 ... 14.85 14.9 14.95 15.0
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 38, 57), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 39, 56), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 38, 56), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 38, 56), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 38, 56), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 38, 56), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 38, 57), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 38, 56), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A,
 <xarray.Dataset>
 Dimensions:        (xq: 9, yh: 38, z_l: 140, z_i: 141, time: 8, nv: 2, xh: 8,
                     yq: 39)
 Coordinates:
   * xq             (xq) float64 276.6 276.6 276.7 276.8 ... 276.9 276.9 277.0
   * yh             (yh) float64 13.12 13.18 13.23 13.27 ... 14.88 14.93 14.98
   * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
   * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
   * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
   * nv             (nv) float64 1.0 2.0
   * xh             (xh) float64 276.6 276.7 276.7 276.8 276.8 276.9 276.9 277.0
   * yq             (yq) float64 13.1 13.15 13.2 13.25 ... 14.85 14.9 14.95 15.0
 Data variables: (12/16)
     uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 38, 9), meta=np.ndarray>
     vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 39, 8), meta=np.ndarray>
     thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 38, 8), meta=np.ndarray>
     so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 38, 8), meta=np.ndarray>
     Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 38, 8), meta=np.ndarray>
     Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 38, 8), meta=np.ndarray>
     ...             ...
     Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 38, 9), meta=np.ndarray>
     Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 38, 8), meta=np.ndarray>
     average_T1     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_T2     (time) object dask.array<chunksize=(8,), meta=np.ndarray>
     average_DT     (time) timedelta64[ns] dask.array<chunksize=(8,), meta=np.ndarray>
     time_bnds      (time, nv) timedelta64[ns] dask.array<chunksize=(8, 2), meta=np.ndarray>
 Attributes:
     NumFilesInSet:  0
     title:          MOM6 diagnostic fields table for CESM case: ETP.003
     grid_type:      regular
     grid_tile:      N/A]

Now visualize the bounding boxes for each tile using a single variable

[22]:
from mom6_sections import visualize_tile

for ds in dsets:
    visualize_tile(ds.uo)
../_images/examples_combining-tiles_14_0.png

Now lets combine those tiles into a single Dataset. For that we will first reshape our 1D list of Datasets into 2D tiles matching the figure above (6 along x, 5 along y)

[31]:
from mom6_tools.sections import tile_raw_files

tiled = tile_raw_files(dsets, x=6, y=5)
print(f"ncols={len(tiled)}, nrows={len(tiled[0])}")
ncols=5, nrows=6
[32]:
from mom6_tools.sections import combine_manual
[33]:
combined = combine_manual(tiled)
combined
[33]:
<xarray.Dataset>
Dimensions:        (xq: 281, yh: 241, z_l: 140, time: 8, xh: 281, yq: 241,
                    z_i: 141)
Coordinates:
  * xq             (xq) float64 263.0 263.1 263.1 263.1 ... 276.9 276.9 277.0
  * yh             (yh) float64 2.975 3.025 3.075 3.125 ... 14.88 14.93 14.98
  * z_l            (z_l) float64 1.25 3.75 6.25 ... 6.324e+03 6.574e+03
  * time           (time) object 1992-12-30 01:30:00 ... 1992-12-30 22:30:00
  * xh             (xh) float64 263.0 263.0 263.1 263.1 ... 276.9 276.9 277.0
  * yq             (yq) float64 3.0 3.05 3.1 3.15 3.2 ... 14.85 14.9 14.95 15.0
  * z_i            (z_i) float64 0.0 2.5 5.0 ... 6.199e+03 6.449e+03 6.699e+03
Data variables:
    uo             (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 35, 50), meta=np.ndarray>
    vo             (time, z_l, yq, xh) float32 dask.array<chunksize=(8, 140, 34, 51), meta=np.ndarray>
    thetao         (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 35, 51), meta=np.ndarray>
    so             (time, z_l, yh, xh) float32 dask.array<chunksize=(8, 140, 35, 51), meta=np.ndarray>
    Tflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 35, 51), meta=np.ndarray>
    Sflx_dia_diff  (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 35, 51), meta=np.ndarray>
    Kd_heat        (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 35, 51), meta=np.ndarray>
    Kd_salt        (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 35, 51), meta=np.ndarray>
    Kd_ePBL        (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 35, 51), meta=np.ndarray>
    Kd_shear       (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 35, 51), meta=np.ndarray>
    Kv_u           (time, z_l, yh, xq) float32 dask.array<chunksize=(8, 140, 35, 50), meta=np.ndarray>
    Kd_BBL         (time, z_i, yh, xh) float32 dask.array<chunksize=(8, 141, 35, 51), meta=np.ndarray>

Make sure there are no artifacts

[39]:
import cf_xarray

combined.uo.cf.isel(Z=0, T=0).plot(robust=True)
[39]:
<matplotlib.collections.QuadMesh at 0x2b38bd1e19f0>
../_images/examples_combining-tiles_20_1.png
[40]:
combined.uo.cf.isel(Z=0, T=0).cf.diff("X").plot(robust=True)
[40]:
<matplotlib.collections.QuadMesh at 0x2b38bd607a00>
../_images/examples_combining-tiles_21_1.png

Combine files in parallel

  1. The idea is that we’ll use dask.delayed to execute one task per day i.e. we parallelize across output files

  2. This task will

    • synchronously read in all files for that day using read_raw_files,

    • assemble them to one xarray.Dataset using tile_raw_files and combine_manual

    • write that Dataset to a new file with compression enabled

The following function does all these steps

[6]:
def all_steps(pattern, dirname, scheduler="sync"):
    import glob
    import dask
    from mom_tools.sections import combine_manual, read_raw_files, tile_raw_files

    # compressor = zarr.Blosc(cname="zstd", clevel=3, shuffle=2)
    # encoding = {var: {"compressor": compressor} for var in concat}

    # complevel=4 makes no difference
    compr_dict = dict(zlib=True, complevel=1, _FillValue=None)

    globstr = f"{dirname}/*{pattern}*"
    files = sorted(glob.glob(f"{dirname}/*{pattern}*"))

    with dask.config.set(scheduler=scheduler):
        # only parallelize if not being executed in a delayed task
        raw_files_list = read_raw_files(files, parallel= scheduler != "sync")
        if not raw_files_list:
            raise ValueError(f"bad pattern: {pattern}; reading {globstr}")

        nfiles = len(raw_files_list)
        # make sure number of files is what I expect
        if nfiles != 30:
            raise ValueError(f"wrong number of files {nfiles} for pattern: {pattern}")

        # reshape into 2D list of lists
        # then concatenate along rows, then columns
        combined1 = combine_manual(tile_raw_files(raw_files_list[:30], 6, 5))

        # write to file
        name = f"{dirname}/compressed/ocean_shelf_{pattern}.nc"
        combined1.to_netcdf(
            name,
            unlimited_dims=["time"],
            encoding=dict.fromkeys(combined1.variables, compr_dict),
        )
    return pattern

Test

[ ]:
ds = all_steps("1993_001", dirname)

Combine

Now determine all unique year_day files

[41]:
allfiles = sorted(glob.glob(f"{dirname}/*_*.nc.*"))
patterns = np.unique([file[-16:-8] for file in allfiles])
patterns
[41]:
array(['1993_001', '1993_002', '1993_003', ..., '2018_363', '2018_364',
       '2018_365'], dtype='<U8')

Now construct a list of delayed tasks

[40]:
tasks = [dask.delayed(all_steps)(pattern, dirname) for pattern in patterns]

And execute!

[40]:
results = dask.compute(*tasks, scheduler=client);