Equatorial plots#

%load_ext autoreload
%autoreload 2
%%capture 
# comment above line to see details about the run(s) displayed
from misc import *
import intake, yaml
%matplotlib inline
# load obs
catalog = intake.open_catalog('/glade/u/home/gmarques/libs/oce-catalogs/reference-datasets.yml')
obs = catalog['woa-2018-tx2_3v2-annual-all'].to_dask()
obs['xh'] = grd[0].xh
obs['yh'] = grd[0].yh
thetao_obs = obs.thetao
salt_obs = obs.so
obs_label = catalog['woa-2018-tx2_3v2-annual-all'].metadata['prefix']+' '+str(catalog['woa-2018-tx2_3v2-annual-all'].metadata['version'])
def plot_comparison(model, var, obs, vmin, vmax, diff, cname):
  fig, ax = plt.subplots(nrows=3, ncols=1,
                       sharex=True,sharey=True,
                       figsize=(12,14))

  ax1 = ax.flatten()

  model[var].plot(ax=ax1[0], ylim=(500,0),
                     y="z_l",vmin=vmin, vmax=vmax,
                     yincrease=False);
      
  obs.sel(yh=0., 
               method="nearest").plot(ax=ax1[1], ylim=(500, 0),
                                      y="z_l",vmin=vmin, vmax=vmax,
                                      yincrease=False);

  (model[var] - obs.sel(yh=0., 
               method="nearest")).plot(ax=ax1[2], ylim=(500, 0),
                                      y="z_l", cmap="bwr", vmin=-diff, vmax=diff, 
                                      yincrease=False);
  # thermocline  
  if var == 'temp_eq':
      model[var].plot.contour(ax=ax1[0], ylim=(500,0),
                     y="z_l",levels=[20.], colors='k',
                     yincrease=False);
      obs.sel(yh=0., method="nearest").plot.contour(ax=ax1[1], ylim=(500, 0),
                    y="z_l",levels=[20.], colors='r',
                    yincrease=False);
      model[var].plot.contour(ax=ax1[2], ylim=(500,0),
                     y="z_l",levels=[20.], colors='k',
                     yincrease=False);
      obs.sel(yh=0., method="nearest").plot.contour(ax=ax1[2], ylim=(500, 0),
                    y="z_l",levels=[20.], colors='r',
                    yincrease=False);

  # halocline
  if var == 'salt_eq':
      model[var].plot.contour(ax=ax1[0], ylim=(500,0),
                     y="z_l",levels=[35.], colors='k',
                     yincrease=False);
      obs.sel(yh=0., method="nearest").plot.contour(ax=ax1[1], ylim=(500, 0),
                    y="z_l",levels=[35.], colors='r',
                    yincrease=False);
      model[var].plot.contour(ax=ax1[2], ylim=(500,0),
                     y="z_l",levels=[35.], colors='k',
                     yincrease=False);
      obs.sel(yh=0., method="nearest").plot.contour(ax=ax1[2], ylim=(500, 0),
                    y="z_l",levels=[35.], colors='r',
                    yincrease=False);
      
  ax[0].set_title('Model, casename = {}'.format(cname)); ax[0].set_xlabel('')
  ax[1].set_title('Obs (WOA18)'); ax[1].set_xlabel('')
  ax[2].set_title('Model - Obs'); ax[2].set_xlabel('Longitude');
  return

Potential temperature#

for path, case, i in zip(ocn_path, casename, range(len(casename))):
  ds_temp = xr.open_dataset(ocn_path[i]+casename[i]+'_temp_eq.nc').rename({'zl':'z_l'})
  plot_comparison(ds_temp,'temp_eq',thetao_obs,10,30,5,label[i])
_images/df971ac39fbfff6c3639e4c8dbf7b05916283b298d9c1a75f56f7273a23807a6.png

Salinity#

for path, case, i in zip(ocn_path, casename, range(len(casename))):
  ds_salt = xr.open_dataset(ocn_path[i]+casename[i]+'_salt_eq.nc').rename({'zl':'z_l'})
  plot_comparison(ds_salt,'salt_eq',salt_obs,33,37,1,label[i])
_images/2104a26c135c59b62afac6c14937a1bcf5accc28388d011cea93cc386bf3028f.png

Pacific#

Zonal velocity#

import glob
from IPython.display import Image, display


fnames = ['Equatorial_Pacific_uo', 'uo_143.0', 'uo_156.0', 'uo_165.0',
           'uo_180.0', 'uo_190.0', 'uo_205.0', 'uo_220.0', 'uo_235.0',
           'uo_250.0', 'uo_265.0']
for f in fnames:
  for i in range(len(casename)):
    # List PNG files in the directory
    png_files = glob.glob(ocn_path[i]+'/../PNG/Equatorial/*_{}.png'.format(f))

    # Display PNG files in the Jupyter notebook
    for png_file in png_files:
      display(Image(filename=png_file))
_images/2932ad7c720bc62afb0cbd72538bae3cfef864c0386304469ef4bf180b40a352.png _images/b8383bcb084d7440ccacd34107087106dd7fac35dcf89ef61321befa6df27131.png _images/5ab6dabea7cf079d72075e543663afebe3a0b2ddf7419666876308d981a1b1fa.png _images/cb185293f4cb26be81125d31e7b65dbc05ec5c45653542c6712b6f94160a159e.png _images/896dfa20f2e052cf8823b90f63c01bac2abf9e3fd49114e31db41e6b4311a9a4.png _images/44e395121edbc6f07fa56d54e092bec1649538e55283870e0d2120bfd124c1ba.png _images/5fb2d0d0f7286e1128f29395517e0dff192d6a6e826c7839e22abbb8dd808eda.png _images/b9c85217904683b166f2d7091ee63c424eab6d855824d4b1fc92c030a9b3243f.png _images/00c064f73a8f1ca29d5978706977fe47f0e775bfd33e73c6e1d13f4c8e6cbc1a.png _images/a87639c42a70766d4809c9c6e179e0762ec1a030b6eff961c6b04f2ae49f0efa.png _images/2dabcfe6d3126a30d265b7a435e1793a75aa3763c8fef5aaef40466e997469db.png

Temperature#

fnames = ['Equatorial_Global_temperature', 'temperature_143.0', 'temperature_156.0', 'temperature_165.0',
           'temperature_180.0', 'temperature_190.0', 'temperature_205.0', 'temperature_220.0', 'temperature_235.0',
           'temperature_250.0', 'temperature_265.0']
for f in fnames:
  for i in range(len(casename)):
    # List PNG files in the directory
    png_files = glob.glob(ocn_path[i]+'/../PNG/Equatorial/*_{}.png'.format(f))

    # Display PNG files in the Jupyter notebook
    for png_file in png_files:
      display(Image(filename=png_file))
_images/cf349358e5fc2d2ccd52b0abbdb2f787dc80c9351b8242d96b73a98b7f511e57.png _images/02070dc8a30a8215b124438b3d9eb22e6cd74fc9c423591f7215adebc860e3de.png _images/6d25dfb57f6bf0b8f15da1172efe8012956d81baea752a4898e1fe168a9e6b12.png _images/641f159cc465c4418fc498f86d7d69d4d18b30d245b785c38f9608e05bd4de34.png _images/aa2c3f138095e3f5b143d26fa60e2c0f70893a5edb873aa6bdca4074ac532c8c.png _images/d079f08efa0d79c5a02919015cebb4f478bfd51c978463c28363673b32172fd9.png _images/cde66ae85b446898a3397bbc010fb1ac9c8b0a51bcfbb23f622e9a235c69f5bc.png _images/46e58644aaecac4590b346371311f9803c2470288aea0d81e4a0d9d715236473.png _images/3f83afb983a69532a3107d4652adfcb8fd19040b534c4ac53ae628b4bd63faa3.png _images/fe0ff44f7c29c36b793b2a17cfa0bb8dff0c4a829909aa89f1cdf45e523422d4.png _images/27be4f8de4eeba590f0718231b9171f7614248cebd2c49e9a605c68bf13b14d1.png

Salinity#

import glob
from IPython.display import Image, display

fnames = ['Equatorial_Global_salinity', 'salinity_143.0', 'salinity_156.0', 'salinity_165.0',
           'salinity_180.0', 'salinity_190.0', 'salinity_205.0', 'salinity_220.0', 'salinity_235.0',
           'salinity_250.0', 'salinity_265.0']
for f in fnames:
  for i in range(len(casename)):
    # List PNG files in the directory
    png_files = glob.glob(ocn_path[i]+'/../PNG/Equatorial/*_{}.png'.format(f))

    # Display PNG files in the Jupyter notebook
    for png_file in png_files:
      display(Image(filename=png_file))
_images/31303a940d2b27d651beae67acbf1256aa79f196257f370b2a771a2ed8c19b70.png _images/016097c02d2dca16d8a03fa4d56748be0cb947944b95ef1767b66461c5cdb7d3.png _images/21445e896af69b99037635700cadd92332741312cac6bdbab949c079ecf50e8c.png _images/18a9d1af1664d656dc75f4a85e942e11a72fd3b1cad6660738cd67017ddb0468.png _images/92157ae3e452c4d66090af6471bff3bf8e07d82021db1be19cbab51676152ea5.png _images/8f7b87b580928fd3b3237f182b202744a80dd9584229f1be2c8812a538562a35.png _images/0d9d6fec57675b3d389b691e960850bb8678a52891ed18beb29faf0c3a69af14.png _images/ae0354aff45ff4cbd87679da85d990e0315030f6b36361072a4cf7b5b0d3aa78.png _images/0d4719d77943149116187c2eecd2d35a68168aa44095f68751d611adff912eab.png _images/ba60f9b93f65144d0ab2d5aeb77d27a7c42ee20dd947cb54756a8299e2833771.png _images/610b2ffc0f9ef44d8883c55930b203516152a04b071fe2eaa67d8989c893dd02.png

Tropical Atmosphere Ocean (TAO) Moorings#

for i in range(len(casename)):
  # List PNG files in the directory
  png_files = glob.glob(ocn_path[i]+'/../PNG/TAOMooring/*.png')
  # Display PNG files in the Jupyter notebook
  for png_file in png_files:
      display(Image(filename=png_file))
_images/a33cd1d3279cec336415fdc5183fbd4502161286e9462ec34d8ef5fbc18270d8.png _images/7aa38db10ce61f43930e8989302684c1104ec737f8214224fdec176d3ca0d5fd.png _images/29e52d913819e42a521aa32aa9f91f484235a6dfe8c90c531e2d2b1e22d3f1ee.png _images/de84a2bef153cf19143819c2cc8886aae5370fb9433028637ee7c8edfdb6699a.png _images/3e138e272506f43e6bb1754eb9a4360ea14a30d855c1f612246fefea0c194633.png _images/83e3f254293bd778050f8ffc91163e01913e2693c550fa2a6890bd0a926fdbed.png _images/91e41debd9b09500bada354c5baf6e3b02ea551b59c819105f7f7218a41f506b.png _images/2b9016ed8bde7a684d0a8a27c8f1fc316b473a8dc65016ac8ade942c7bc26ed2.png _images/f9d79a9570228ca9782c6e32d88ec7549f4da7bf1144a5d051641828505181d3.png _images/d109c3c9721b253c01d8f20340d8bc9094221006e931467e096305b0d3e64dfa.png