#!/usr/bin/env python # Wenchang Yang (wenchang@princeton.edu) # Tue Feb 18 04:26:56 PM EST 2025 if __name__ == '__main__': import sys,os try: from misc.timer import Timer tt = Timer(f'[{os.getcwd()}] start ' + ' '.join(sys.argv)) except: pass import sys, os.path, os, glob, datetime import xarray as xr, numpy as np, pandas as pd, matplotlib.pyplot as plt #more imports wython = '/tigress/wenchang/wython' if wython not in sys.path: sys.path.append(wython); print('added to python path:', wython) #from misc import get_kws_from_argv # if __name__ == '__main__': try: tt.check('end import') except: pass # #start from here print('u200...') ifiles = '/projects/w/wenchang/data/era5/analysis_wy/plevels/u200/daily/era5.u200.daily.*.nc' u200 = xr.open_mfdataset(ifiles)['u'] print('u850...') ifiles = '/projects/w/wenchang/data/era5/analysis_wy/plevels/u850/daily/era5.u850.daily.*.nc' u850 = xr.open_mfdataset(ifiles)['u'] print('v200...') ifiles = '/projects/w/wenchang/data/era5/analysis_wy/plevels/v200/daily/era5.v200.daily.*.nc' v200 = xr.open_mfdataset(ifiles)['v'] print('v850...') ifiles = '/projects/w/wenchang/data/era5/analysis_wy/plevels/v850/daily/era5.v850.daily.*.nc' v850 = xr.open_mfdataset(ifiles)['v'] #time-mean ofile = f'era5.wind_shear.daily.1979-2020.dayofyear.nc' if os.path.exists(ofile): print('[exists]:', ofile) else: print('wind_shear...') wind_shear = ((u200-u850)**2 + (v200 - v850)**2)**0.5 print('wind_shear_mean...') wind_shear_mean = wind_shear.groupby('time.dayofyear').mean('time') print('wind_shear_mean save...') wind_shear_mean.to_dataset(name='wind_shear_mean').to_netcdf(ofile) print('[saved]:', ofile) if __name__ == '__main__': #from wyconfig import * #my plot settings #savefig if 'savefig' in sys.argv or 's' in sys.argv: figname = __file__.replace('.py', f'.png') if 'overwritefig' in sys.argv or 'o' in sys.argv: wysavefig(figname, overwritefig=True) else: wysavefig(figname) try: tt.check(f'**Done**') except: pass print() if 'notshowfig' in sys.argv or 'n' in sys.argv: pass else: if 'plt' in globals(): plt.show()