def readVar(varnames): ### Call function to read in ERA-Interim lat, lon, time, lev, era = MOR.readDataR('SNC', 'surface', False, True) ### Select October-November for index eraq = np.nanmean(era[:, 9:11, :, :], axis=1) # eraq = era[:,9:10,:,:].squeeze() # Octobers return eraq, lat, lon, lev
def readVar(varnames,monthperiod): ### Call function to read in ERA-Interim lat,lon,time,lev,era = MOR.readDataR(varnames,'surface',False,True) ### Call functions to read in WACCM data models = np.empty((len(runnamesm),ensembles,era.shape[0],era.shape[1], era.shape[2],era.shape[3])) for i in range(len(runnamesm)): lat,lon,time,lev,models[i] = MOM.readDataM(varnames,runnamesm[i], 'surface',False,True) ### Retrieve time period of interest if monthperiod == 'DJF': modq = np.empty((len(runnamesm),ensembles,era.shape[0]-1,era.shape[2], era.shape[3])) for i in range(len(runnamesm)): for j in range(ensembles): modq[i,j,:,:,:] = UT.calcDecJanFeb(models[i,j,:,:,:], lat,lon,'surface',1) eraq = UT.calcDecJanFeb(era,lat,lon,'surface',1) elif monthperiod == 'Annual': modq = np.nanmean(models[:,:,:,:,:,:],axis=3) eraq = np.nanmean(era[:,:,:,:],axis=1) ### Take ensemble mean modmean = np.nanmean(modq,axis=1) ### Slice over Arctic polar cap latslicemin = 40 latslicemax = 65 lonslicemin = 50 lonslicemax = 130 latq = np.where((lat >= latslicemin) & (lat <= latslicemax))[0] lat = lat[latq] lonq = np.where((lon >= lonslicemin) & (lon <= lonslicemax))[0] lon = lon[lonq] eraq = eraq[:,latq,:] eraq = eraq[:,:,lonq] modmean = modmean[:,:,latq,:] modmean = modmean[:,:,:,lonq] ### Meshgrid for lat/lon lon2,lat2 = np.meshgrid(lon,lat) eramean = UT.calc_weightedAve(eraq,lat2) mmean = UT.calc_weightedAve(modmean,lat2) ### Create climo over time series eraiave = np.nanmean(eramean) modelave = np.nanmean(mmean,axis=1) ### Calculate anomalies eraanom = eramean - eraiave modelanom = (mmean.transpose() - modelave).transpose() return eraanom, modelanom
def readVar(varnames, runnamesm, period): ### Call function to read in ERA-Interim (detrended) lat, lon, time, lev, era = MOR.readDataR(varnames, 'surface', True, True) ### Call functions to read in WACCM data (detrended) models = np.empty((len(runnamesm), ensembles, era.shape[0], era.shape[1], era.shape[2], era.shape[3])) for i in range(len(runnamesm)): lat, lon, time, lev, models[i] = MOM.readDataM(varnames, runnamesm[i], 'surface', True, True) ### Retrieve time period of interest if period == 'ON': modq = np.nanmean(models[:, :, :, 9:11, :, :], axis=3) eraq = np.nanmean(era[:, 9:11, :, :], axis=1) elif period == 'OND': modq = np.nanmean(models[:, :, :, -3:, :, :], axis=3) eraq = np.nanmean(era[:, -3:, :, :], axis=1) elif period == 'ND': modq = np.nanmean(models[:, :, :, -2:, :, :], axis=3) eraq = np.nanmean(era[:, -2:, :, :], axis=1) elif period == 'N': modq = models[:, :, :, -2, :, :].squeeze() eraq = era[:, -2, :, :].squeeze() elif period == 'D': modq = models[:, :, :, -1:, :, :].squeeze() eraq = era[:, -1:, :, :].squeeze() elif period == 'JJA': modq = np.nanmean(models[:, :, :, 5:8, :, :], axis=3) eraq = np.nanmean(era[:, 5:8, :, :], axis=1) elif period == 'Annual': modq = np.nanmean(models[:, :, :, :, :, :], axis=3) eraq = np.nanmean(era[:, :, :, :], axis=1) elif period == 'DJF': modq = np.empty((len(runnamesm), ensembles, era.shape[0] - 1, era.shape[2], era.shape[3])) for i in range(len(runnamesm)): for j in range(ensembles): modq[i, j, :, :, :] = UT.calcDecJanFeb(models[i, j, :, :, :, :], lat, lon, 'surface', 1) eraq = UT.calcDecJanFeb(era, lat, lon, 'surface', 1) ### Slice U10 at 65N latq = np.where((lat >= 64.5) & (lat <= 65.5))[0] lat = lat[latq].squeeze() eraq = eraq[:, latq, :].squeeze() modq = modq[:, :, :, latq, :].squeeze() ### Take zonal mean eraq = np.nanmean(eraq, axis=1) modq = np.nanmean(modq, axis=3) return modq, eraq, lat, lon
def readVar(varnames, runnamesm, period): if varnames == 'SST': world = False else: world = True ### Call function to read in ERA-Interim (detrended) lat, lon, time, lev, era = MOR.readDataR(varnames, 'surface', True, world) ### Call functions to read in WACCM data (detrended) models = np.empty((len(runnamesm), ensembles, era.shape[0], era.shape[1], era.shape[2], era.shape[3])) for i in range(len(runnamesm)): lat, lon, time, lev, models[i] = MOM.readDataM(varnames, runnamesm[i], 'surface', True, world) return models, era, lat, lon
def readVar(varnames,runnamesm): ### Call function to read in ERA-Interim lat,lon,time,lev,era = MOR.readDataR('T2M','surface',False,True) ### Call functions to read in WACCM data models = np.empty((len(runnamesm),ensembles,era.shape[0],era.shape[1], era.shape[2],era.shape[3])) for i in range(len(runnamesm)): lat,lon,time,lev,models[i] = MOM.readDataM(varnames,runnamesm[i], 'surface',False,True) ### Select October-November for index modq = np.nanmean(models[:,:,:,9:11,:,:],axis=3) ### Calculate ensemble mean modmean = np.nanmean(modq[:,:,:,:,:],axis=1) return modmean,lat,lon,lev
def readVar(varnames): ### Call function to read in ERA-Interim (detrended) lat, lon, time, lev, era = MOR.readDataR(varnames, 'surface', True, True) ### Call functions to read in WACCM data (detrended) models = np.empty((len(runnamesm), ensembles, era.shape[0], era.shape[1], era.shape[2], era.shape[3])) for i in range(len(runnamesm)): lat, lon, time, lev, models[i] = MOM.readDataM(varnames, runnamesm[i], 'surface', True, True) ### Retrieve time period of interest modq = np.empty((len(runnamesm), ensembles, era.shape[0] - 1, era.shape[2], era.shape[3])) for i in range(len(runnamesm)): for j in range(ensembles): modq[i, j, :, :, :] = UT.calcDecJanFeb(models[i, j, :, :, :], lat, lon, 'surface', 1) eraq = UT.calcDecJanFeb(era, lat, lon, 'surface', 1) return modq, eraq, lat, lon
def readDataTrends(varnames, month, years, yearmn, yearmx, region): ### Call function to read in ERA-Interim lat, lon, time, lev, era = MOR.readDataR(varnames, 'surface', False, True) ### Call functions to read in WACCM data models = np.empty((len(runnamesm), ensembles, era.shape[0], era.shape[1], era.shape[2], era.shape[3])) for i in range(len(runnamesm)): lat, lon, time, lev, models[i] = MOM.readDataM(varnames, runnamesm[i], 'surface', False, True) ### Retrieve time period of interest if month == 'DJF': modq = np.empty((len(runnamesm), ensembles, era.shape[0] - 1, era.shape[2], era.shape[3])) for i in range(len(runnamesm)): for j in range(ensembles): modq[i, j, :, :, :] = UT.calcDecJanFeb(models[i, j, :, :, :], lat, lon, 'surface', 1) eraq = UT.calcDecJanFeb(era, lat, lon, 'surface', 1) if region == 'Siberia': latslicemin = 40 latslicemax = 65 lonslicemin = 50 lonslicemax = 130 latq = np.where((lat >= latslicemin) & (lat <= latslicemax))[0] lat = lat[latq] lonq = np.where((lon >= lonslicemin) & (lon <= lonslicemax))[0] lon = lon[lonq] eraq = eraq[:, latq, :] eraq = eraq[:, :, lonq] modq = modq[:, :, :, latq, :] modq = modq[:, :, :, :, lonq] elif region == 'NA': latslicemin = 35 latslicemax = 50 lonslicemin = 260 lonslicemax = 290 latq = np.where((lat >= latslicemin) & (lat <= latslicemax))[0] lat = lat[latq] lonq = np.where((lon >= lonslicemin) & (lon <= lonslicemax))[0] lon = lon[lonq] eraq = eraq[:, latq, :] eraq = eraq[:, :, lonq] modq = modq[:, :, :, latq, :] modq = modq[:, :, :, :, lonq] elif region == 'Arctic': latq = np.where(lat >= 65)[0] lat = lat[latq] eraq = eraq[:, latq, :] modq = modq[:, :, :, latq, :] elif region == 'NH': eraq = eraq modmean = modq ### Calculate the trend for WACCM modtrend = np.empty( (len(runnamesm), ensembles, modq.shape[3], modq.shape[4])) for i in range(len(runnamesm)): modtrend[i, :, :, :] = UT.detrendData(modq[i], years, 'surface', yearmn, yearmx) print('Completed: Simulation --> %s!' % runnamesm[i]) ### Calculate decadal trend dectrend = modtrend * 10. ### Calculate the trend for ERA-Interim retrend, std_err = UT.detrendDataR(eraq, years, 'surface', yearmn, yearmx) #### Calculate decadal trend redectrend = retrend * 10. std_err = std_err * 10. return lat, lon, dectrend, redectrend, std_err
years = np.arange(year1, year2 + 1, 1) ### Add parameters ensembles = 10 su = [0, 1, 2, 3, 5, 6, 7] period = 'JFM' varnames = ['T2M', 'SLP', 'Z500', 'Z50', 'U200', 'U10', 'THICK'] runnames = [r'ERA-I', r'CSST', r'CSIC', r'AMIP', r'AMQ', r'AMS', r'AMQS'] runnamesm = [r'CSST', r'CSIC', r'AMIP', r'AMQ', r'AMS', r'AMQS'] ### Define directories directoryfigure = '/home/zlabe/Desktop/SNR/%s/' % period for v in range(len(varnames)): ### Call function to read in ERA-Interim lat, lon, time, lev, era = MOR.readDataR(varnames[v], 'surface', False, True) ### Call functions to read in WACCM data models = np.empty((len(runnamesm), ensembles, era.shape[0], era.shape[1], era.shape[2], era.shape[3])) for i in range(len(runnamesm)): lat, lon, time, lev, models[i] = MOM.readDataM(varnames[v], runnamesm[i], 'surface', False, True) ### Retrieve time period of interest if period == 'DJF': modq = np.empty((len(runnamesm), ensembles, era.shape[0] - 1, era.shape[2], era.shape[3])) for i in range(len(runnamesm)): for j in range(ensembles):
currenttime = currentmn + '_' + currentdy + '_' + currentyr titletime = currentmn + '/' + currentdy + '/' + currentyr print('\n' '----Plotting WACC T2M Trends - %s----' % titletime) #### Alott time series year1 = 1978 year2 = 2016 years = np.arange(year1, year2 + 1, 1) ### Add parameters ensembles = 10 varnames = ['T2M'] runnames = [r'CSST', r'CSIC', r'AMIP', r'AMQ', r'AMS', r'AMQS'] ### Call function to read in ERA-Interim lat, lon, time, lev, era = MOR.readDataR('T2M', 'surface', False, True) ### Call functions to read in WACCM data models = np.empty((len(runnames), ensembles, era.shape[0], era.shape[1], era.shape[2], era.shape[3])) for i in range(len(runnames)): lat, lon, time, lev, models[i] = MOM.readDataM('T2M', runnames[i], 'surface', False, True) ### Retrieve time period of interest modq = np.empty( (len(runnames), ensembles, era.shape[0] - 1, era.shape[2], era.shape[3])) for i in range(len(runnames)): for j in range(ensembles): modq[i, j, :, :, :] = UT.calcDecJanFeb(models[i, j, :, :, :], lat, lon, 'surface', 1)