#!/usr/bin/env python # Wenchang Yang (wenchang@princeton.edu) # Wed Oct 5 11:09:59 EDT 2022 if __name__ == '__main__': import sys from misc.timer import Timer tt = Timer('start ' + ' '.join(sys.argv)) import sys, os.path, os, glob, datetime import xarray as xr, numpy as np, pandas as pd, matplotlib.pyplot as plt #more imports from modelout import get_modelout_data, update_modelout_data from modelout.getdata import funcs import xfilter nwindow, dimlp = 9, 'year' #lowpass = lambda x: x.filter.lowpass(1/nwindow, dim=dimlp, padtype='odd') lowpass = lambda x: x.rolling(year=nwindow, center=True, min_periods=1).mean() if x.year.size>9 else x import geoxarray # if __name__ == '__main__': tt.check('end import') # #start from here #daname = 't_surf' daname = None #func = lambda x: x.load().geo.fldmean() #funcname = 'glbmean' #func = funcs['nino34'] #funcname = 'nino34' func = funcs['amoc'] funcname = 'amoc' dsname = 'ocean' cleanup = False #remove cache or not das = [] labels = [] model = 'FLOR' #ctl1990_v201905 label = 'FLOR_ctl_1990_v201905' expname = 'CTL1990_v201905_tigercpu_intelmpi_18_576PE' da = get_modelout_data(dsname=dsname, daname=daname, model=model, expname=expname, func=func, funcname=funcname, years=range(1901,2100+1)) labels.append(label) das.append(da) #ctl1990_v201905_FA label = 'FLOR_ctl_1990_v201905_FA' expname = 'CTL1990_v201905_FA_tigercpu_intelmpi_18_576PE' da = update_modelout_data(daname=daname, dsname=dsname, model=model, expname=expname, func=func, funcname=funcname)#, years=range(100,201)) labels.append(label) das.append(da) #ctl1990_v201905_FA05 label = 'FLOR_ctl_1990_v201905_FA05' expname = 'CTL1990_v201905_FA05_tigercpu_intelmpi_18_576PE' da = update_modelout_data(daname=daname,dsname=dsname, model=model, expname=expname, func=func, funcname=funcname)#, years=range(100,201)) labels.append(label) das.append(da) #ctl1990_v201905_FA05trop label = 'FLOR_ctl_1990_v201905_FA05trop' expname = 'CTL1990_v201905_FA05trop_tigercpu_intelmpi_18_576PE' da = update_modelout_data(daname=daname, dsname=dsname, model=model, expname=expname, func=func, funcname=funcname)#, years=range(100,201)) labels.append(label) das.append(da) #ctl1990_v201905_FAtrop label = 'FLOR_ctl_1990_v201905_FAtrop' expname = 'CTL1990_v201905_FAtrop_tigercpu_intelmpi_18_576PE' da = update_modelout_data(daname=daname, dsname=dsname, model=model, expname=expname, func=func, funcname=funcname)#, years=range(100,201)) labels.append(label) das.append(da) #units units = da.attrs['units'] def wyplot(da, label,**kws): #da = da.groupby('time.year').mean('time') da = da.resample(time='AS').mean(keep_attrs=True)#.max(['depth', 'lat'], keep_attrs=True) #da = da.pipe(lowpass) #da = da.sel(year=slice(1900,2000)) da.plot(label=label, **kws) if __name__ == '__main__': from wyconfig import * #my plot settings import cftime year_xlim = [1920, None][-1] fig,ax = plt.subplots(figsize=(11,4)) for da,label in zip(das, labels): wyplot(da, label, ax=ax, alpha=0.6) ax.legend(ncol=2) ax.set_ylabel(f'AMOC [{units}]') #ax.set_xlim(1800, 2000) year_stops = { 'FA': das[1].time.values[-1].year, 'FA05': das[2].time.values[-1].year, 'FA05trop': das[3].time.values[-1].year, 'FAtrop': das[4].time.values[-1].year, } title = f"FA: 1901-{year_stops['FA']}; FA05: 1901-{year_stops['FA05']}; FA05trop: 1901-{year_stops['FA05trop']}; FAtrop: 1901-{year_stops['FAtrop']} " ax.set_title(title) #ax.set_xlim(cftime.datetime(1901,1,1), cftime.datetime(2000,12,31)) ax.set_xlim(cftime.datetime(1901,1,1), cftime.datetime(2100,12,31)) if year_xlim is not None: ax.set_xlim(None, cftime.datetime(year_xlim, 12, 31, calendar='noleap')) ax.set_title('') #savefig if 'savefig' in sys.argv or 's' in sys.argv: figname = __file__.replace('.py', f'.png') if year_xlim is not None: figname = figname.replace('.png', f'__1901-{year_xlim}.png') if 'overwritefig' in sys.argv or 'o' in sys.argv: wysavefig(figname, overwritefig=True) else: wysavefig(figname) tt.check(f'**Done**') print() if 'notshowfig' in sys.argv: pass else: plt.show()