def readFlux(varnames): """ Read in heat flux data for selected variables and calculate differences between experiments """ for v in range(len(varnames)): ### Call function for surface temperature data from reach run lat,lon,time,lev,varhit = MO.readExperi(directorydata, '%s' % varnames[v],'HIT','surface') lat,lon,time,lev,varfit = MO.readExperi(directorydata, '%s' % varnames[v],'FIT','surface') lat,lon,time,lev,varcit = MO.readExperi(directorydata, '%s' % varnames[v],'CIT','surface') lat,lon,time,lev,varfic = MO.readExperi(directorydata, '%s' % varnames[v],'FIC','surface') lat,lon,time,lev,varfict = MO.readExperi(directorydata, '%s' % varnames[v],'FICT','surface') ### Compare experiments runs = [varhit,varfit,varcit,varfic,varfict] ### Compute comparisons for experiments - take ensemble average diff_FITHIT = np.nanmean(varfit - varhit,axis=0)*-1 diff_FICCIT = np.nanmean(varfic - varcit,axis=0)*-1 diff_FICTHIT = np.nanmean(varfict - varhit,axis=0)*-1 diffruns = [diff_FITHIT,diff_FICCIT,diff_FICTHIT] return diffruns,runs,lat,lon
def calcVarResp(varnames): ### Call function for variable data from each run lat, lon, time, lev, varhit = MO.readExperi(directorydata, '%s' % varnames, 'HIT', 'surface') lat, lon, time, lev, varfit = MO.readExperi(directorydata, '%s' % varnames, 'FIT', 'surface') lat, lon, time, lev, varcit = MO.readExperi(directorydata, '%s' % varnames, 'CIT', 'surface') lat, lon, time, lev, varfic = MO.readExperi(directorydata, '%s' % varnames, 'FIC', 'surface') ### Concatonate runs runs = [varhit, varfit, varcit, varfic] ### Separate per periods (ON,DJ,FM) var_djf = np.empty( (4, varhit.shape[0] - 1, varhit.shape[2], varhit.shape[3])) for i in range(len(runs)): var_djf[i], var_djf[i] = UT.calcDecJanFeb(runs[i], runs[i], lat, lon, 'surface', 1) ### Compute comparisons for FM - taken ensemble average diff_FITHIT = np.nanmean(var_djf[1] - var_djf[0], axis=0) diff_FICCIT = np.nanmean(var_djf[3] - var_djf[2], axis=0) diffruns_djf = [diff_FITHIT, diff_FICCIT] ### Calculate significance for FM stat_FITHIT, pvalue_FITHIT = UT.calc_indttest(var_djf[1], var_djf[0]) stat_FICCIT, pvalue_FICCIT = UT.calc_indttest(var_djf[3], var_djf[2]) pruns_djf = [pvalue_FITHIT, pvalue_FICCIT] return diffruns_djf, pruns_djf, lat, lon
def readTemp(varnames): """ Read in temperature data for selected variables and calculate differences between experiments """ for v in range(len(varnames)): ### Call function for T2M data from reach run lat, lon, time, lev, varhit = MO.readExperi(directorydata, '%s' % varnames[v], 'HIT', 'surface') lat, lon, time, lev, varfit = MO.readExperi(directorydata, '%s' % varnames[v], 'FIT', 'surface') lat, lon, time, lev, varcit = MO.readExperi(directorydata, '%s' % varnames[v], 'CIT', 'surface') lat, lon, time, lev, varfic = MO.readExperi(directorydata, '%s' % varnames[v], 'FIC', 'surface') lat, lon, time, lev, varfict = MO.readExperi(directorydata, '%s' % varnames[v], 'FICT', 'surface') ### Create 2d array of latitude and longitude lon2, lat2 = np.meshgrid(lon, lat) ### Concatonate runs runs = [varhit, varfit, varcit, varfic, varfict] ### Separate per periods (DJF) var_djf = np.empty( (5, varhit.shape[0] - 1, varhit.shape[2], varhit.shape[3])) for i in range(len(runs)): var_djf[i], var_djf[i] = UT.calcDecJanFeb(runs[i], runs[i], lat, lon, 'surface', 1) ### Compute comparisons for FM - taken ensemble average diff_FITHIT = np.nanmean(var_djf[1] - var_djf[0], axis=0) diff_FICCIT = np.nanmean(var_djf[3] - var_djf[2], axis=0) diff_FICTHIT = np.nanmean(var_djf[4] - var_djf[0], axis=0) diffruns_djf = [diff_FITHIT, diff_FICCIT, diff_FICTHIT] ### Calculate significance for FM stat_FITHIT, pvalue_FITHIT = UT.calc_indttest(var_djf[1], var_djf[0]) stat_FICCIT, pvalue_FICCIT = UT.calc_indttest(var_djf[3], var_djf[2]) stat_FICTHIT, pvalue_FICTHIT = UT.calc_indttest(var_djf[4], var_djf[0]) pruns_djf = [pvalue_FITHIT, pvalue_FICCIT, pvalue_FICTHIT] return diffruns_djf, pruns_djf, lat, lon
def readFlux(): """ Read in heat flux data for selected variables and calculate differences between experiments """ ### Call function for latent heat flux lat, lon, time, lev, lhhit = MO.readExperi(directorydata, 'LHFLX', 'HIT', 'surface') lat, lon, time, lev, lhfit = MO.readExperi(directorydata, 'LHFLX', 'FIT', 'surface') lat, lon, time, lev, lhcit = MO.readExperi(directorydata, 'LHFLX', 'CIT', 'surface') lat, lon, time, lev, lhfic = MO.readExperi(directorydata, 'LHFLX', 'FIC', 'surface') lat, lon, time, lev, lhfict = MO.readExperi(directorydata, 'LHFLX', 'FICT', 'surface') ### Call function for sensible heat flux lat, lon, time, lev, shhit = MO.readExperi(directorydata, 'SHFLX', 'HIT', 'surface') lat, lon, time, lev, shfit = MO.readExperi(directorydata, 'SHFLX', 'FIT', 'surface') lat, lon, time, lev, shcit = MO.readExperi(directorydata, 'SHFLX', 'CIT', 'surface') lat, lon, time, lev, shfic = MO.readExperi(directorydata, 'SHFLX', 'FIC', 'surface') lat, lon, time, lev, shfict = MO.readExperi(directorydata, 'SHFLX', 'FICT', 'surface') ### Calculate turbulent heat fluxes varhit = lhhit + shhit varfit = lhfit + shfit varcit = lhcit + shcit varfic = lhfic + shfic varfict = lhfict + shfict ### Compare experiments runs = [varhit, varfit, varcit, varfic, varfict] ### Compute comparisons for experiments - take ensemble average diff_FITHIT = np.nanmean(varfit - varhit, axis=0) diff_FICCIT = np.nanmean(varfic - varcit, axis=0) diff_FICTHIT = np.nanmean(varfict - varhit, axis=0) diffruns = [diff_FITHIT, diff_FICCIT, diff_FICTHIT] return diffruns, runs, lat, lon
def readVariables(varnames,runnames,period,directory): for v in range(len(varnames)): ### Call function for surface temperature data from reach run lat,lon,time,lev,varhit = MO.readExperi(directory,'%s' % varnames[v], '%s' % runnames,'surface') ### Create 2d array of latitude and longitude lon2,lat2 = np.meshgrid(lon,lat) ### Concatonate runs runs = [varhit] ### Separate per periods if period == 'ON': tas_mo = np.empty((varhit.shape[0],varhit.shape[2],varhit.shape[3])) for i in range(len(runs)): tas_mo[:] = np.nanmean(runs[i][:,9:11,:,:],axis=1) elif period == 'DJ': tas_mo = np.empty((3,varhit.shape[0]-1,varhit.shape[2],varhit.shape[3])) for i in range(len(runs)): tas_mo[:],tas_mo[i] = UT.calcDecJan(runs[i],runs[i],lat, lon,'surface',1) elif period == 'FM': tas_mo= np.empty((varhit.shape[0],varhit.shape[2],varhit.shape[3])) for i in range(len(runs)): tas_mo[:] = np.nanmean(runs[i][:,1:3,:,:],axis=1) elif period == 'DJF': tas_mo= np.empty((varhit.shape[0]-1,varhit.shape[2],varhit.shape[3])) for i in range(len(runs)): tas_mo[:],tas_mo[:] = UT.calcDecJanFeb(runs[i],runs[i],lat, lon,'surface',1) elif period == 'M': tas_mo= np.empty((varhit.shape[0],varhit.shape[2],varhit.shape[3])) for i in range(len(runs)): tas_mo[:] = runs[i][:,2,:,:] elif period == 'D': tas_mo= np.empty((varhit.shape[0],varhit.shape[2],varhit.shape[3])) for i in range(len(runs)): tas_mo[:] = runs[i][:,-1,:,:] elif period == 'N': tas_mo= np.empty((varhit.shape[0],varhit.shape[2],varhit.shape[3])) for i in range(len(runs)): tas_mo[:] = runs[i][:,-2,:,:] elif period == 'ND': tas_mo= np.empty((varhit.shape[0],varhit.shape[2],varhit.shape[3])) for i in range(len(runs)): tas_mo[:] = np.nanmean(runs[i][:,-2:,:,:],axis=1) else: ValueError('Wrong period selected! (ON,DJ,FM)') return lat,lon,tas_mo
### Define time now = datetime.datetime.now() currentmn = str(now.month) currentdy = str(now.day) currentyr = str(now.year) currenttime = currentmn + '_' + currentdy + '_' + currentyr titletime = currentmn + '/' + currentdy + '/' + currentyr print('\n' '----Plotting sea level pressure - %s----' % titletime) ### Alott time series year1 = 1900 year2 = 2000 years = np.arange(year1, year2 + 1, 1) ### Call function for SLP data lat, lon, time, lev, slph = MO.readExperi(directorydata, 'SLP', 'HIT', 'surface') lat, lon, time, lev, slpf = MO.readExperi(directorydata, 'SLP', 'FIT', 'surface') ### Separate per periods (ON,DJ,FM) slph_on = np.nanmean(slph[:, 9:11, :, :], axis=1) slpf_on = np.nanmean(slpf[:, 9:11, :, :], axis=1) slph_dj, slpf_dj = UT.calcDecJan(slph, slpf, lat, lon, 'surface', 1) slph_fm = np.nanmean(slph[:, 1:3, :, :], axis=1) slpf_fm = np.nanmean(slpf[:, 1:3, :, :], axis=1) ### Calculate period differenceds diff_on = np.nanmean((slpf_on - slph_on), axis=0) diff_dj = np.nanmean((slpf_dj - slph_dj), axis=0)
### Define time now = datetime.datetime.now() currentmn = str(now.month) currentdy = str(now.day) currentyr = str(now.year) currenttime = currentmn + '_' + currentdy + '_' + currentyr titletime = currentmn + '/' + currentdy + '/' + currentyr print('\n' '----Plotting temperature - %s----' % titletime) ### Alott time series year1 = 1900 year2 = 2000 years = np.arange(year1,year2+1,1) ### Call function for zonal wind data lat,lon,time,lev,uh = MO.readExperi(directorydata,'U','HIT','profile') lat,lon,time,lev,uf = MO.readExperi(directorydata,'U','FIT','profile') #### Separate per periods (ON,DJ,FM) uh_on = np.nanmean(uh[:,9:11,:,:,:],axis=1) uf_on = np.nanmean(uf[:,9:11,:,:,:],axis=1) uh_dj,uf_dj = UT.calcDecJan(uh,uf,lat,lon,'profile',lev.shape[0]) uh_fm = np.nanmean(uh[:,1:3,:,:,:],axis=1) uf_fm = np.nanmean(uf[:,1:3,:,:,:],axis=1) #### Calculate period differenceds diff_on = np.nanmean((uf_on-uh_on),axis=0) diff_dj = np.nanmean((uf_dj-uh_dj),axis=0) diff_fm = np.nanmean((uf_fm-uh_fm),axis=0)
### Define time now = datetime.datetime.now() currentmn = str(now.month) currentdy = str(now.day) currentyr = str(now.year) currenttime = currentmn + '_' + currentdy + '_' + currentyr titletime = currentmn + '/' + currentdy + '/' + currentyr print('\n' '----Plotting temperature - %s----' % titletime) ### Alott time series year1 = 1900 year2 = 2000 years = np.arange(year1, year2 + 1, 1) ### Call function for vertical thickness data lat, lon, time, lev, thickh = MO.readExperi(directorydata, 'THICK', 'HIT', 'surface') lat, lon, time, lev, thickf = MO.readExperi(directorydata, 'THICK', 'FIT', 'surface') ### Separate per periods (ON,DJ,FM) thickh_on = np.nanmean(thickh[:, 9:11, :, :], axis=1) thickf_on = np.nanmean(thickf[:, 9:11, :, :], axis=1) thickh_dj, thickf_dj = UT.calcDecJan(thickh, thickf, lat, lon, 'surface', 1) thickh_fm = np.nanmean(thickh[:, 1:3, :, :], axis=1) thickf_fm = np.nanmean(thickf[:, 1:3, :, :], axis=1) #### Calculate period differenceds diff_on = np.nanmean((thickf_on - thickh_on), axis=0) diff_dj = np.nanmean((thickf_dj - thickh_dj), axis=0)
currentdy = str(now.day) currentyr = str(now.year) currenttime = currentmn + '_' + currentdy + '_' + currentyr titletime = currentmn + '/' + currentdy + '/' + currentyr print('\n' '----Plotting Climo Wave - %s----' % titletime) ### Alott time series year1 = 1900 year2 = 2000 years = np.arange(year1, year2 + 1, 1) varnames = ['Z300'] for v in range(len(varnames)): ### Call function for geopotential height data from reach run lat, lon1, time, lev, varhit = MO.readExperi(directorydata, '%s' % varnames[v], 'HIT', 'surface') lat, lon1, time, lev, varfit = MO.readExperi(directorydata, '%s' % varnames[v], 'FIT', 'surface') lat, lon1, time, lev, varcit = MO.readExperi(directorydata, '%s' % varnames[v], 'CIT', 'surface') lat, lon1, time, lev, varfic = MO.readExperi(directorydata, '%s' % varnames[v], 'FIC', 'surface') lat, lon1, time, lev, varfict = MO.readExperi(directorydata, '%s' % varnames[v], 'FICT', 'surface') ### Create 2d array of latitude and longitude
currentdy = str(now.day) currentyr = str(now.year) currenttime = currentmn + '_' + currentdy + '_' + currentyr titletime = currentmn + '/' + currentdy + '/' + currentyr print('\n' '----Plotting temperature - %s----' % titletime) ### Alott time series year1 = 1900 year2 = 2000 years = np.arange(year1,year2+1,1) varnames = ['U','TEMP','GEOP'] varnames = ['TEMP'] for v in range(len(varnames)): ### Call function for surface temperature data from reach run lat,lon,time,lev,varhit = MO.readExperi(directorydata, '%s' % varnames[v],'HIT','profile') lat,lon,time,lev,varfit = MO.readExperi(directorydata, '%s' % varnames[v],'FIT','profile') lat,lon,time,lev,varcit = MO.readExperi(directorydata, '%s' % varnames[v],'CIT','profile') lat,lon,time,lev,varfic = MO.readExperi(directorydata, '%s' % varnames[v],'FIC','profile') lat,lon,time,lev,varfict = MO.readExperi(directorydata, '%s' % varnames[v],'FICT','profile') ### Create 2d array of latitude and longitude lon2,lat2 = np.meshgrid(lon,lat) ### Concatonate runs runnames = [r'HIT',r'FIT',r'CIT',r'FIC',r'FICT'] experiments = [r'\textbf{FIT--HIT}',r'\textbf{FIT--CIT}',
### Define time now = datetime.datetime.now() currentmn = str(now.month) currentdy = str(now.day) currentyr = str(now.year) currenttime = currentmn + '_' + currentdy + '_' + currentyr titletime = currentmn + '/' + currentdy + '/' + currentyr print('\n' '----Plotting Z50 - %s----' % titletime) ### Alott time series year1 = 1900 year2 = 2000 years = np.arange(year1, year2 + 1, 1) ### Call function for precipitation data lat, lon, time, lev, prh = MO.readExperi(directorydata, 'P', 'HIT', 'surface') lat, lon, time, lev, prf = MO.readExperi(directorydata, 'P', 'FIT', 'surface') ### Separate per periods (ON,DJ,FM) prh_on = np.nanmean(prh[:, 9:11, :, :], axis=1) prf_on = np.nanmean(prf[:, 9:11, :, :], axis=1) prh_dj, prf_dj = UT.calcDecJan(prh, prf, lat, lon, 'surface', 1) prh_fm = np.nanmean(prh[:, 1:3, :, :], axis=1) prf_fm = np.nanmean(prf[:, 1:3, :, :], axis=1) ### Calculate period differenceds diff_on = np.nanmean((prf_on - prh_on), axis=0) diff_dj = np.nanmean((prf_dj - prh_dj), axis=0) diff_fm = np.nanmean((prf_fm - prh_fm), axis=0)
### Call arguments varnames = [ 'Z500', 'Z30', 'SLP', 'T2M', 'U10', 'U300', 'SWE', 'THICK', 'P', 'EGR', 'RNET' ] varnames = ['Z500'] runnames = [r'CIT', r'FPOL', r'FSUB'] experiments = [ r'\textbf{$\Delta$POLAR}', r'\textbf{$\Delta$SUBPOLAR}', r'\textbf{difference}' ] period = 'DJF' for v in range(len(varnames)): ### Call function for surface temperature data from reach run lat, lon, time, lev, tascit = MO.readExperi(directorydata, '%s' % varnames[v], 'CIT', 'surface') lat, lon, time, lev, tasfic = MO.readExperi(directorydata, '%s' % varnames[v], 'FPOL', 'surface') lat, lon, time, lev, tasfict = MO.readExperi(directorydata, '%s' % varnames[v], 'FSUB', 'surface') ### Create 2d array of latitude and longitude lon2, lat2 = np.meshgrid(lon, lat) ### Concatonate runs runs = [tascit, tasfic, tasfict] ### Separate per periods (ON,DJ,FM)
currentdy = str(now.day) currentyr = str(now.year) currenttime = currentmn + '_' + currentdy + '_' + currentyr titletime = currentmn + '/' + currentdy + '/' + currentyr print('\n' '----Plotting temperature - %s----' % titletime) ### Alott time series year1 = 1900 year2 = 2000 years = np.arange(year1,year2+1,1) varnames = ['U','TEMP','GEOP','EGR','V'] varnames = ['U'] for v in range(len(varnames)): ### Call function for surface temperature data from reach run lat,lon,time,lev,varcit = MO.readExperi(directorydata, '%s' % varnames[v],'CIT','profile') lat,lon,time,lev,varFSUB = MO.readExperi(directorydata, '%s' % varnames[v],'FSUB','profile') lat,lon,time,lev,varFPOL = MO.readExperi(directorydata, '%s' % varnames[v],'FPOL','profile') ### Create 2d array of latitude and longitude lon2,lat2 = np.meshgrid(lon,lat) ### Concatonate runs runnames = [r'CIT',r'FSUB',r'FPOL'] experiments = [r'\textbf{FPOL--HIT2}',r'\textbf{FPOL--HIT2}'] runs = [varcit,varFSUB,varFPOL] ### Separate per periods (DJF) var_djf = np.empty((3,varcit.shape[0]-1,varcit.shape[2],varcit.shape[3],
currentyr = str(now.year) currenttime = currentmn + '_' + currentdy + '_' + currentyr titletime = currentmn + '/' + currentdy + '/' + currentyr print('\n' '----Plotting Fig 2 - %s----' % titletime) ### Alott time series year1 = 1900 year2 = 2000 years = np.arange(year1,year2+1,1) ### Define constants runnames = [r'HIT',r'FIT',r'HIT2',r'FICT2',r'FICT'] experiments = ['FIT--HIT','FICT2--HIT2','FICT--HIT'] ### Read in SIC data lat,lon,time,lev,sic = MO.readExperi(directorydata,'SIC','HIT','surface') ### Find where ice is < 15% (values are 0 to 100 in sic array) sicq = sic[5,:,:,:].copy() sicq[np.where(sicq < 10)] = 0.0 sicq[np.where((sicq >= 10) & (sicq <= 100))] = 1. sicn = np.append(sicq[8:],sicq[:3],axis=0) ############################################################################### ############################################################################### ############################################################################### # Function to read surface heat flux data def readFlux(varnames): """ Read in heat flux data for selected variables and calculate differences between experiments
### Define time now = datetime.datetime.now() currentmn = str(now.month) currentdy = str(now.day) currentyr = str(now.year) currenttime = currentmn + '_' + currentdy + '_' + currentyr titletime = currentmn + '/' + currentdy + '/' + currentyr print('\n' '----Plotting net surface energy flux - %s----' % titletime) ### Alott time series year1 = 1900 year2 = 2000 years = np.arange(year1, year2 + 1, 1) ### Call function for energy flux terms lat, lon, time, lev, fsh = MO.readExperi(directorydata, 'RNET', 'HIT', 'surface') lat, lon, time, lev, fsf = MO.readExperi(directorydata, 'RNET', 'FIT', 'surface') ### Separate per periods (ON,DJ,FM) fsh_on = np.nanmean(fsh[:, 9:11, :, :], axis=1) fsf_on = np.nanmean(fsf[:, 9:11, :, :], axis=1) fsh_dj, fsf_dj = UT.calcDecJan(fsh, fsf, lat, lon, 'surface', 1) fsh_fm = np.nanmean(fsh[:, 1:3, :, :], axis=1) fsf_fm = np.nanmean(fsf[:, 1:3, :, :], axis=1) ### Calculate period differenceds diff_on = np.nanmean((fsf_on - fsh_on), axis=0) diff_dj = np.nanmean((fsf_dj - fsh_dj), axis=0)
currentdy = str(now.day) currentyr = str(now.year) currenttime = currentmn + '_' + currentdy + '_' + currentyr titletime = currentmn + '/' + currentdy + '/' + currentyr print('\n' '----Plotting 2-m temperature - %s----' % titletime) ### Alott time series year1 = 1900 year2 = 2000 years = np.arange(year1,year2+1,1) varnames = ['Z500','Z50','Z30','SLP','T2M','U10','RNET','P','THICK','U300', 'Z300','SWE'] for v in range(len(varnames)): ### Call function for variable data from reach run lat,lon,time,lev,tashit = MO.readExperi(directorydata, '%s' % varnames[v],'HIT','surface') lat,lon,time,lev,tasfit = MO.readExperi(directorydata, '%s' % varnames[v],'FIT','surface') lat,lon,time,lev,tascit = MO.readExperi(directorydata, '%s' % varnames[v],'CIT','surface') lat,lon,time,lev,tasfic = MO.readExperi(directorydata, '%s' % varnames[v],'FIC','surface') lat,lon,time,lev,tasfict = MO.readExperi(directorydata, '%s' % varnames[v],'FICT','surface') ### Create 2d array of latitude and longitude lon2,lat2 = np.meshgrid(lon,lat) ### Concatonate runs runnames = [r'HIT',r'FIT',r'CIT',r'FIC',r'FICT'] experiments = [r'\textbf{FIT--HIT}',r'\textbf{FIT--CIT}',
### Define time now = datetime.datetime.now() currentmn = str(now.month) currentdy = str(now.day) currentyr = str(now.year) currenttime = currentmn + '_' + currentdy + '_' + currentyr titletime = currentmn + '/' + currentdy + '/' + currentyr print('\n' '----Plotting temperature - %s----' % titletime) ### Alott time series year1 = 1900 year2 = 2000 years = np.arange(year1, year2 + 1, 1) ### Call function for geopotential height lat, lon, time, lev, zh = MO.readExperi(directorydata, 'GEOP', 'HIT', 'profile') lat, lon, time, lev, zf = MO.readExperi(directorydata, 'GEOP', 'FIT', 'profile') #### Separate per periods (ON,DJ,FM) zh_on = np.nanmean(zh[:, 9:11, :, :, :], axis=1) zf_on = np.nanmean(zf[:, 9:11, :, :, :], axis=1) zh_dj, zf_dj = UT.calcDecJan(zh, zf, lat, lon, 'profile', lev.shape[0]) zh_fm = np.nanmean(zh[:, 1:3, :, :, :], axis=1) zf_fm = np.nanmean(zf[:, 1:3, :, :, :], axis=1) #### Calculate period differenceds diff_on = np.nanmean((zf_on - zh_on), axis=0) diff_dj = np.nanmean((zf_dj - zh_dj), axis=0)
year2 = 2000 years = np.arange(year1, year2 + 1, 1) ### Call arguments varnames = ['U', 'TEMP', 'GEOP', 'V', 'EGR'] runnames = [r'HIT', r'FIT', r'FICT'] experiments = [ r'\textbf{FIT--HIT}', r'\textbf{FIT--HIT}', r'\textbf{FIT--HIT}', r'\textbf{FICT--HIT}', r'\textbf{FICT--HIT}', r'\textbf{FICT--HIT}' ] qbophase = ['pos', 'non', 'neg'] period = 'DJF' for v in range(len(varnames)): ### Call function for surface temperature data from reach run lat, lon, time, lev, tashit = MO.readExperi(directorydata, '%s' % varnames[v], 'HIT', 'profile') lat, lon, time, lev, tasfit = MO.readExperi(directorydata, '%s' % varnames[v], 'FIT', 'profile') lat, lon, time, lev, tasfict = MO.readExperi(directorydata, '%s' % varnames[v], 'FICT', 'profile') ### Create 2d array of latitude and longitude lon2, lat2 = np.meshgrid(lon, lat) ### Read in QBO phases filenamefitp = directorydata + 'FIT/monthly/QBO_%s_FIT.txt' % qbophase[0] filenamefitno = directorydata + 'FIT/monthly/QBO_%s_FIT.txt' % qbophase[1] filenamefitn = directorydata + 'FIT/monthly/QBO_%s_FIT.txt' % qbophase[2]
### Define time now = datetime.datetime.now() currentmn = str(now.month) currentdy = str(now.day) currentyr = str(now.year) currenttime = currentmn + '_' + currentdy + '_' + currentyr titletime = currentmn + '/' + currentdy + '/' + currentyr print('\n' '----Plotting Z50 - %s----' % titletime) ### Alott time series year1 = 1900 year2 = 2000 years = np.arange(year1, year2 + 1, 1) ### Call function for 50 mb height data lat, lon, time, lev, Z50h = MO.readExperi(directorydata, 'Z50', 'HIT', 'surface') lat, lon, time, lev, Z50f = MO.readExperi(directorydata, 'Z50', 'FIT', 'surface') ### Separate per periods (ON,DJ,FM) Z50h_on = np.nanmean(Z50h[:, 9:11, :, :], axis=1) Z50f_on = np.nanmean(Z50f[:, 9:11, :, :], axis=1) Z50h_dj, Z50f_dj = UT.calcDecJan(Z50h, Z50f, lat, lon, 'surface', 1) Z50h_fm = np.nanmean(Z50h[:, 1:3, :, :], axis=1) Z50f_fm = np.nanmean(Z50f[:, 1:3, :, :], axis=1) ### Calculate period differenceds diff_on = np.nanmean((Z50f_on - Z50h_on), axis=0) diff_dj = np.nanmean((Z50f_dj - Z50h_dj), axis=0)
currenttime = currentmn + '_' + currentdy + '_' + currentyr titletime = currentmn + '/' + currentdy + '/' + currentyr print('\n' '----Plotting DJF SIT-SIC ratio - %s----' % titletime) ### Alott time series year1 = 1900 year2 = 2000 years = np.arange(year1,year2+1,1) months = [r'DJF'] varnames = ['U10','Z30','U300','Z500','SLP','T2M','RNET'] ratiovar = [] for v in range(len(varnames)): ### Call function for surface temperature data from reach run lat,lon,time,lev,varhit = MO.readExperi(directorydata, '%s' % varnames[v],'HIT','surface') lat,lon,time,lev,varfit = MO.readExperi(directorydata, '%s' % varnames[v],'FIT','surface') lat,lon,time,lev,varfic = MO.readExperi(directorydata, '%s' % varnames[v],'FICT','surface') lat,lon,time,lev,varcit = MO.readExperi(directorydata, '%s' % varnames[v],'HIT','surface') ### Create 2d array of latitude and longitude lon2,lat2 = np.meshgrid(lon,lat) ### Concatonate runs runnames = [r'HIT',r'FIT',r'FICT',r'HIT'] experiments = [r'\textbf{FIT--HIT}',r'\textbf{FICT--HIT}'] runs = [varhit,varfit,varfic,varcit]
### Alott time series year1 = 1900 year2 = 2000 years = np.arange(year1,year2+1,1) ### Call arguments varnames = ['U','TEMP','GEOP','V','EGR'] runnames = [r'CIT',r'FSUB',r'FPOL'] experiments = [r'\textbf{FSUB--CIT}',r'\textbf{FSUB--CIT}',r'\textbf{FSUB--CIT}', r'\textbf{FPOL--CIT}',r'\textbf{FPOL--CIT}',r'\textbf{FPOL--CIT}'] qbophase = ['pos','non','neg'] period = 'DJF' for v in range(len(varnames)): ### Call function for surface temperature data from reach run lat,lon,time,lev,tascit = MO.readExperi(directorydata2, '%s' % varnames[v],'CIT','profile') lat,lon,time,lev,tasfsub = MO.readExperi(directorydata2, '%s' % varnames[v],'FSUB','profile') lat,lon,time,lev,tasfpol = MO.readExperi(directorydata2, '%s' % varnames[v],'FPOL','profile') ### Create 2d array of latitude and longitude lon2,lat2 = np.meshgrid(lon,lat) ### Read in QBO phases filenamefsubp = directorydata2 + 'FSUB/monthly/QBO_%s_FSUB.txt' % qbophase[0] filenamefsubno = directorydata2 + 'FSUB/monthly/QBO_%s_FSUB.txt' % qbophase[1] filenamefsubn = directorydata2 + 'FSUB/monthly/QBO_%s_FSUB.txt' % qbophase[2] pos_fsub = np.genfromtxt(filenamefsubp,unpack=True,usecols=[0],dtype='int') non_fsub = np.genfromtxt(filenamefsubno,unpack=True,usecols=[0],dtype='int') neg_fsub = np.genfromtxt(filenamefsubn,unpack=True,usecols=[0],dtype='int')
### Define time now = datetime.datetime.now() currentmn = str(now.month) currentdy = str(now.day) currentyr = str(now.year) currenttime = currentmn + '_' + currentdy + '_' + currentyr titletime = currentmn + '/' + currentdy + '/' + currentyr print('\n' '----Plotting temperature - %s----' % titletime) ### Alott time series year1 = 1900 year2 = 2000 years = np.arange(year1, year2 + 1, 1) ### Call function for vertical temperature data lat, lon, time, lev, th = MO.readExperi(directorydata, 'TEMP', 'HIT', 'profile') lat, lon, time, lev, tf = MO.readExperi(directorydata, 'TEMP', 'FIT', 'profile') ### Separate per periods (ON,DJ,FM) th_on = np.nanmean(th[:, 9:11, :, :, :], axis=1) tf_on = np.nanmean(tf[:, 9:11, :, :, :], axis=1) th_dj, tf_dj = UT.calcDecJan(th, tf, lat, lon, 'profile', lev.shape[0]) th_fm = np.nanmean(th[:, 1:3, :, :, :], axis=1) tf_fm = np.nanmean(tf[:, 1:3, :, :, :], axis=1) #### Calculate period differenceds diff_on = np.nanmean((tf_on - th_on), axis=0) diff_dj = np.nanmean((tf_dj - th_dj), axis=0)