def time_serie_sea_ice_ext(path, var, lat_min, basin, path_salinity, deg): yr, xr, time = loading.extracting_coord_2D(path) if deg == 'grid': ice = loading.extracting_var(path, 'ileadfra') else: ice = loading.extracting_var(path, var) #S = loading.extracting_var(path_salinity,'sal') if basin == 'undefined': mask = loading.latitudinal_band_mask(yr, lat_min, 90) else: mask = loading.Ocean_mask(xr, yr, basin) if deg == 'grid': path_grid = '/media/fig010/LACIE SHARE/EC_data/CERFACS_cell_area.nc' area = loading.reading_grid(path_grid) * 1E-6 else: area = size_each_bins(xr, yr, deg) print(np.shape(area), np.shape(ice)) ice[np.where(ice < 0.15)] = 0. ice[np.where(ice > 0.15)] = 1. print(np.nanmean(area)) '''nt = np.size(ice[0,0,:]) ice_extent=np.zeros_like((ice[mask])) for i in range(0,nt): ice_extent[:,i] = ice[mask,i]*area[mask] '''# same as # ice_extent = area[mask] * ice[mask].transpose(1, 0) mean_ice_ext = np.nansum(ice_extent, axis=1) return time, mean_ice_ext
def time_serie_Arctic(path, var): yr, xr, time, depth = loading.extracting_coord(path) TorS = loading.extracting_var(path, var) make_plot.points_on_map(xr, yr, var, basin) S = loading.extracting_var(path, 'sal') TorS[np.where(S == 0.)] = np.nan i_zmax = np.max(np.where(depth < simu.zmax)) print(np.shape(TorS)) mean_Arctic = np.mean(np.nanmean(TorS[:, 0:i_zmax, :], axis=0), axis=0) return time, depth, mean_Arctic
def time_serie(path, var, lat_min, basin): yr, xr, time = loading.extracting_coord_2D(path) melted_ice = loading.extracting_var(path, var) S = loading.extracting_var(path, 'sal') if basin == 'undefined': mask = loading.latitudinal_band_mask(yr, lat_min, 90) else: mask = loading.Ocean_mask(xr, yr, basin) area = size_each_bins(xr, yr) FWF = area[mask] * melted_ice[mask].transpose(1, 0) * 1E6 mean_FWF = np.nansum(FWF, axis=1) return time, mean_FWF
def time_serie_Arctic_2D(path, var, lat_min, basin): yr, xr, time = loading.extracting_coord_2D(path) ice = loading.extracting_var(path, var) S = loading.extracting_var(path, 'sal') ice[np.where(S[:, :, 0, :] == 0.)] = np.nan if basin == 'undefined': mask = loading.latitudinal_band_mask(yr, lat_min, 90) else: mask = loading.Ocean_mask(xr, yr, basin) #make_plot.points_on_map(xr[mask],yr[mask],var,basin) arctic = ice[mask, :] mean_Arctic = np.nanmean(arctic, axis=0) return time, mean_Arctic
def time_serie_sea_ice_ext(path, var, lat_min, basin): yr, xr, time = loading.extracting_coord_2D(path) ice = loading.extracting_var(path, var) S = loading.extracting_var(path, 'sal') if basin == 'undefined': mask = loading.latitudinal_band_mask(yr, lat_min, 90) else: mask = loading.Ocean_mask(xr, yr, basin) area = size_each_bins(xr, yr) ice[np.where(ice < 0.15)] = 0. ice[np.where(ice > 0.15)] = 1. ice_extent = area[mask] * ice[mask].transpose(1, 0) mean_ice_ext = np.nansum(ice_extent, axis=1) return time, mean_ice_ext
def time_serie_Arctic(path, var, lat_min, basin): yr, xr, time, depth = loading.extracting_coord(path) TorS = loading.extracting_var(path, var) print(np.shape(TorS)) S = loading.extracting_var(path, 'sal') TorS[np.where(S == 0.)] = np.nan if basin == 'undefined': mask = loading.latitudinal_band_mask(yr, lat_min, 90) else: mask = loading.Ocean_mask(xr, yr, basin) make_plot.points_on_map(xr[mask], yr[mask], var, basin) arctic = TorS[mask, :, :] print(np.nanmax(arctic)) mean_Arctic = np.nanmean(arctic, axis=0) return time, depth, mean_Arctic
def time_serie_Arctic_2D(path, var_name, lat_min, basin): yr, xr, time = loading.extracting_coord_2D(path) VAR = loading.extracting_var(path, var_name) S = loading.extracting_var(path, 'sal') VAR[np.where(S[:, :, 0, :] == 0.)] = 0 #np.nan print(np.max(VAR), np.min(VAR)) VAR[np.where(VAR > 1E10)] = 0 #np.nan print(np.max(VAR), np.min(VAR)) if basin == 'undefined': mask = loading.latitudinal_band_mask(yr, lat_min, 90) else: mask = loading.Ocean_mask(xr, yr, basin) make_plot.points_on_map(xr[mask], yr[mask], var_name, basin) VAR[np.where(VAR == 0)] = np.nan arctic = VAR[mask, :] mean_Arctic = np.nansum(arctic, axis=0) return time, mean_Arctic
def time_serie_Arctic_2D(path, var_name, lat_min, basin): yr, xr, time = loading.extracting_coord_2D(path) VAR = loading.extracting_var(path, var_name) S = loading.extracting_var(path, 'sal') VAR[np.where(S[:, :, 0, :] == 0.)] = 0 #np.nan VAR[np.where(VAR > 1E10)] = 0 #np.nan if basin == 'undefined': mask = loading.latitudinal_band_mask(yr, lat_min, 90) else: mask = loading.Ocean_mask(xr, yr, basin) VAR[np.where(VAR == 0)] = np.nan area = size_each_bins(xr, yr) FWF = area[mask] * VAR[mask, :].transpose(1, 0) * 1E6 mean_FWF = np.nansum(FWF, axis=1) return time, mean_FWF
period) + '/vita.nc' elif var == 'ice_velocity' or var == 'wind_stress': self.path = '/media/fig010/LACIE SHARE/EC_Earth/EC_data/100velocity/' + str( period) + '/tau_Coupled.nc' nb = 10 while y1 <= first_year + 100 - 10: y2 = y1 + 10 simu = From1950to2100(nb, specificity, var, y1, y2, period) yr, xr, time = loading.extracting_coord_2D(simu.path) if var == 'ice_velocity': U = loading.extracting_var(simu.path, 'iicevelu') V = loading.extracting_var(simu.path, 'iicevelv') elif var == 'wind_stress': U = loading.extracting_var(simu.path, 'iocestru') V = loading.extracting_var(simu.path, 'iocestrv') elif var == 'svelocity': U = loading.extracting_var(simu.path, 'sovitua') V = loading.extracting_var(simu.path, 'sovitva') index_y1 = np.min( np.where(first_year + time[:] / (3600 * 24 * 364.5) > simu.y1)) index_y2 = np.min( np.where(first_year + time[:] / (3600 * 24 * 364.5) > simu.y2)) mask = (xr > 85) | (xr < -105) U[mask, :] = -U[mask, :]
else: self.vmin = 0 self.vmax = 0 self.vminC = 0 self.vmaxC = 0 return #// #////////////////////////////////////////////////////////////////////////////////////////// simu = From1950to2100(option, var, y1, y2) yrE, xrE, time, depth, XE = loading.extracting_coord_1D(simu.pathE) yrW, xrW, time, depth, XW = loading.extracting_coord_1D(simu.pathW) VARE = loading.extracting_var(simu.pathE, var) VARW = loading.extracting_var(simu.pathW, var) time = simu.y1 + time[:] / (3600 * 24 * 364.5) index_y1h = np.min(np.where(time > simu.y1h)) index_y1f = np.min(np.where(time > simu.y1f)) print(index_y1h, index_y1f) if var == 'sal': VARE[np.where(VARE < 30.)] = np.nan VARW[np.where(VARW < 30.)] = np.nan elif var == 'density': VARE[np.where(VARE < 24)] = np.nan VARW[np.where(VARW < 24)] = np.nan
+str(scenario)+str(option)+'_'+str(lat_min)+'N' else: output_file = str(var)+str(filtre)+str(ttype)+'_' \ +str(scenario)+str(option)+'_'+str(basin) #\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # STARTING ANALYSIS \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ yr, xr, time = loading.extracting_coord_2D(path) time = first_year+time[:]/(3600*24*364.5) index_y1h = np.min(np.where(time>y1h)) index_y1f = np.min(np.where(time>y1f)) IceF1 = loading.extracting_var(path, var) IceF1[np.where(IceF1>1E10)]=0 if filtre == 'Positif': IceF1[np.where(IceF1<0)] = 0 else: IceF1[np.where(IceF1<-1E10)] = 0 if var == 'Icef': IceF = 1E2*IceF1 # in cm elif var == 'salt': path_grid = '/media/fig010/LACIE SHARE/EC_data/CERFACS_cell_area.nc' area = loading.reading_grid(path_grid) IceF = area*IceF1.transpose(2, 0,1) IceF = IceF.transpose(1,2,0) #IceF = IceF1*np.mean(area) '''
self.output_file = str(var) + '_' + str(month) + str( self.y1) + '_' + str(sufix) self.output_file2 = str(var) + '_' + str(month) + str( self.y1) + '_' + str(self.y2) + '_' + str(sufix) #// return #// #// #////////////////////////////////////////////////////////////////////////////////////////// simu = yearly_LongPeriod(option, var, y1, y2, basin, lat_min, month) yr, xr, time, depth = loading.extracting_coord(simu.path) VarArray_simuRho = loading.extracting_var(simu.path, 'rho') # Practical Salinity index_y1 = np.min( np.where(simu.first_year + time[:] / (3600 * 24 * 364.5) > simu.y1)) index_y2 = np.min( np.where(simu.first_year + time[:] / (3600 * 24 * 364.5) > y2)) if basin == 'undefined': mask = loading.latitudinal_band_mask(yr, lat_min, 90) else: mask = loading.Ocean_mask(xr, yr, basin) make_plot.points_on_map(xr[mask], yr[mask], var, basin) VarArray_simuRho[np.where(VarArray_simuRho == 0)] = np.nan region = VarArray_simuRho[mask, :, :] mean_region = np.nanmean(region, axis=0)
elif var == 'density': #// self.vmin = 20. #// self.vmax = 27.5 #// elif var == 'Uorth': #// self.vmin = -2.4 #// self.vmax = 2.4 #// return #// #////////////////////////////////////////////////////////////////////////////////////////// simu = From1950to2100(option, var, y1, y2, comparison, lat_min, basin) yr, xr, time, depth, X = loading.extracting_coord_1D(simu.path) VAR = loading.extracting_var(simu.path, var) if var == 'sal': VAR[np.where(VAR < 32.)] = np.nan elif var == 'density': VAR[np.where(VAR < 18)] = np.nan else: S = loading.extracting_var(simu.path, 'sal') VAR[S == 0] = np.nan print(np.nanmin(VAR)) make_plot.points_on_map(xr, yr, var, basin) index_y1 = np.min( np.where(simu.first_year + time[:] / (3600 * 24 * 364.5) > simu.y1)) index_y2 = np.min(
for i in range(1, 2): y1 = y1 + 1 ax = plt.subplot(3, 4, 1) ax.set_title(str(y1), color='r') title_plot = str(specificity) + ' ' + str(y1) + ' to ' + str(y1 + 1) simu = From1950to2100(option, specificity, var, y1, y2, comparison) yr, xr, time, depth = loading.extracting_coord(simu.path) x, y = m(xr, yr) m.drawcoastlines(linewidth=0.5) m.fillcontinents(color='0.8') U = loading.extracting_var(simu.path, 'sovitua') '''V = loading.extracting_var(simu.path, 'sovitva') index_y1 = np.min(np.where(simu.first_year+time[:]/(3600*24*364.5)>simu.y1)) yy = np.arange(0, y.shape[0], 4) xx = np.arange(0, x.shape[1], 4) u = U[:,:,0,index_y1] v = V[:,:,0,index_y1] points = np.meshgrid(yy, xx) speed = np.sqrt(u*u + v**2) cs = m.quiver(x[points], y[points],\ u[points], v[points], speed[points],\ cmap=plt.cm.autumn, scale=1) ''' plt.savefig(str(var) + '/' + str(simu.output_file.replace(".", "")) + '.png')
self.vmax = 1E-4 #// return #// #////////////////////////////////////////////////////////////////////////////////////////// simu = From1950to2100(option,specificity,var,y1,y2,comparison) if var == 'ML' or var == 'runoff': yr, xr, time = loading.extracting_coord_2D(simu.path) else: yr, xr, time, depth = loading.extracting_coord(simu.path) VarArray_simu = loading.extracting_var(simu.path, var) #index_y1 = np.min(np.where(simu.first_year+time[:]/(3600*24*364.5)>simu.y1)) #index_y2 = np.min(np.where(simu.first_year+time[:]/(3600*24*364.5)>simu.y2)) if comparison == 'no': array_to_plot = VarArray_simu[:,:,0] array_to_plot[np.where(array_to_plot>1E20)]=0#np.nan array_to_plot[array_to_plot==0] = np.nan array_to_plot = np.ma.masked_invalid(array_to_plot) make_plot.plot_map(xr,yr,array_to_plot ,var,title_plot,simu.output_file,simu.vmin,simu.vmax) elif comparison == 'yes': if control == 'Uncoupled': path2 = '/media/fig010/LACIE SHARE/EC_Earth/EC_data/DR8n01_2090_jan.nc'
plt.gca().invert_yaxis() # rotate and align the tick labels so they look better fig.autofmt_xdate() #plt.xticks(tick_locs,tick_lbls) cbar = plt.colorbar() cbar.ax.get_yaxis().labelpad = 15 cbar.set_label(r'Meridional transport', fontsize=18) plt.title('') plt.savefig(str(variable_name) + '/' + str(option) + '.png') plt.close(fig) return simu = From1950to2100(option, var, y1, y2, comparison) yr, xr, time, depth = loading.extracting_coord(simu.path, 'v') v = loading.extracting_var(simu.path, 'v') print(yr) if basin == 'undefined': mask = loading.latitudinal_band_mask(yr, lat_min, 90) else: mask = loading.Ocean_mask(xr, yr, basin) make_plot.points_on_map(xr, yr, var, basin) ''' index_y = np.min(np.where(1950+time[:]/(3600*24*364.5)>year)) ny = np.size(yr[0,:]) nz = np.size(depth) VT = np.zeros((nz,ny)) for j in range(0,ny):
elif var == 'ML': self.vmin = 0 self.vmax = 300 self.output_file = str(var) + '_ymeans_' + str(option) #// #// return #// #// #////////////////////////////////////////////////////////////////////////////////////////// if comparison == 'no': simu = yearly_LongPeriod(option, 'ML') elif comparison == 'yes': simu = yearlyAnomaly_LongPeriod(option, var) VarArray_ref = loading.extracting_var(simu.path_ref, var) yr, xr, time, depth = loading.extracting_coord(simu.path) VarArray_simuT = loading.extracting_var(simu.path, 'temp') # Practical Salinity VarArray_simuS = loading.extracting_var(simu.path, 'sal') # In situ temperature ni = np.size(VarArray_simuT[:, 0, 0, 0]) nj = np.size(VarArray_simuT[0, :, 0, 0]) nz = np.size(VarArray_simuT[0, 0, :, 0]) SA = np.zeros((ni, nj, nz)) CT = np.zeros((ni, nj, nz)) CT_freezing = np.zeros((ni, nj, nz))
# '2100/icef'+str(month)+'_'+str(y1)+'-2100.nc' self.output_fileH = str(var)+'_'+str(self.y1h)+'-'+str(self.y2h) #// self.output_fileF = str(var)+'_'+str(self.y1f)+'-'+str(self.y2f) #// self.output_fileC = str(var)+'Anomaly_'+str(self.y1h)+'-'+str(self.y1f) #// return #// #////////////////////////////////////////////////////////////////////////////////////////// simu = From1950to2100(option,var,y1p,y2p) yr, xr, time,depth = loading.extracting_coord_moc(simu.path) time = simu.first_year+time[:]/(3600*24*364.5) moc = loading.extracting_var(simu.path, var) moc[np.where(moc==0.000)]=np.nan index_y1h = np.min(np.where(time>simu.y1h)) index_y1f = np.min(np.where(time>simu.y1f)) ''' array_to_plotH = np.nanmean(moc[:,:,0,index_y1h:index_y1h+10],axis=2) array_to_plotH[array_to_plotH==0] = np.nan array_to_plotH = np.ma.masked_invalid(array_to_plotH) array_to_plotF = np.nanmean(moc[:,:,0,index_y1f:index_y1f+10],axis=2) array_to_plotF[array_to_plotF==0] = np.nan array_to_plotF = np.ma.masked_invalid(array_to_plotF) print(np.nanmin(array_to_plotH),np.nanmax(array_to_plotF))
for i in range(1,13): y1 = y1+1 ax = plt.subplot(3, 4, i) ax.set_title(str(y1),color='r') title_plot = str(specificity)+' '+str(y1)+' to '+str(y1+1) simu = From1950to2100(option,specificity,var,y1,y2,comparison,month) yr, xr, time = loading.extracting_coord_2D(simu.path) x,y = m(xr, yr) m.drawcoastlines(linewidth=0.5) m.fillcontinents(color='0.8') VarArray_simu = loading.extracting_var(simu.path, var) index_y1 = np.min(np.where(simu.first_year+time[:]/(3600*24*364.5)>simu.y1)) index_y1c = np.min(np.where(simu.first_year+time[:]/(3600*24*364.5)>simu.y1_compa)) array_to_plot = VarArray_simu[:,:,index_y1c]-VarArray_simu[:,:,index_y1] array_to_plot[array_to_plot==0] = np.nan array_to_plot = np.ma.masked_invalid(array_to_plot) #make_plot.plot_map_with_ice_extent(xr,yr,array_to_plot ,var,VarArray_simu[:,:,index_y1],y1,VarArray_simu[:,:,index_y1c],simu.y1_compa,title_plot,simu.output_file,simu.vmin,simu.vmax) cs = m.pcolor(x,y,array_to_plot,vmin=simu.vmin,vmax=simu.vmax) cs2=m.contour(x, y, VarArray_simu[:,:,index_y1], [0.15],colors='r') cs3=m.contour(x, y, VarArray_simu[:,:,index_y1c], [0.15],colors='b') plt.savefig(str(var)+'/'+str(output_file)+'.png',format='png')
self.vmax = 35 #// elif var == 'density': #// self.vmin = 20. #// self.vmax = 27.5 #// elif var == 'Uorth': #// self.vmin = -7 #// self.vmax = 7 #// return #// #////////////////////////////////////////////////////////////////////////////////////////// simuW = From1950to2100(option,var,y1,y2,comparison,lat_min,period,'W') yr, xr, time, depthW, XW = loading.extracting_coord_1D(simuW.path) VARW = loading.extracting_var(simuW.path, var) S = loading.extracting_var(simuW.path,'sal') VARW[ S==0 ] = np.nan simuE = From1950to2100(option,var,y1,y2,comparison,lat_min,period,'E') yr, xr, time, depthE, XE = loading.extracting_coord_1D(simuE.path) VARE = loading.extracting_var(simuE.path, var) S = loading.extracting_var(simuE.path,'sal') VARE[ S==0 ] = np.nan #make_plot.points_on_map(xr,yr,var,area) index_y1 = np.min(np.where(simuW.first_year+time[:]/(3600*24*364.5)>simuW.y1))
self.output_fileH = str(var) + '_' + str(month) + '_' + str( self.y1h) + '-' + str(self.y2h) + '_' + str(colorbar) #// self.output_fileF = str(var) + '_' + str(month) + '_' + str( self.y1f) + '-' + str(self.y2f) + '_' + str(colorbar) #// return #// #////////////////////////////////////////////////////////////////////////////////////////// simu = From1950to2100(option, var, y1p, y2p, colorbar, basin, month) yr, xr, time = loading.extracting_coord_2D(simu.path) time = simu.first_year + time[:] / (3600 * 24 * 364.5) IceExt = loading.extracting_var(simu.path, var) #IceExt[np.where(IceExt>1E10)]=np.nan #IceExt[np.where(IceExt<0)] = np.nan if basin == 'undefined': mask = loading.latitudinal_band_mask(yr, lat_min, 90) else: mask = loading.Ocean_mask(xr, yr, basin) index_y1h = np.min(np.where(time > simu.y1h)) index_y1f = np.min(np.where(time > simu.y1f)) #array_to_plotH = np.nanmean(IceExt[:,:,index_y1h:index_y1h+10],axis=2) #array_to_plotH[array_to_plotH==np.nan] = 0 #array_to_plotF = np.nanmean(IceExt[:,:,index_y1f:index_y1f+10],axis=2)
self.output_fileH = str(var) + str(month) + '_' + str( self.y1h) + '-' + str(self.y2h) #// self.output_fileF = str(var) + str(month) + '_' + str( self.y1f) + '-' + str(self.y2f) #// return #// #////////////////////////////////////////////////////////////////////////////////////////// simu = From1950to2100(option, var, y1p, y2p, month) yr, xr, time = loading.extracting_coord_2D(simu.path) time = simu.first_year + time[:] / (3600 * 24 * 364.5) IceExt = loading.extracting_var(simu.path, var) index_y1h = np.min(np.where(time > simu.y1h)) index_y1f = np.min(np.where(time > simu.y1f)) array_to_plotH = np.nanmean(IceExt[:, :, index_y1h:index_y1h + 10], axis=2) array_to_plotH[array_to_plotH == 0] = np.nan array_to_plotH = np.ma.masked_invalid(array_to_plotH) array_to_plotF = np.nanmean(IceExt[:, :, index_y1f:index_y1f + 10], axis=2) array_to_plotF[array_to_plotF == 0] = np.nan array_to_plotF = np.ma.masked_invalid(array_to_plotF) IceThick = loading.extracting_var(simu.path_thickness, 'iicethic') IceThick_to_ploth = np.nanmean(IceThick[:, :, index_y1h:index_y1h + 10],
[box.x0 * 1.2, box.y0 + box.height * 0.3, box.width, box.height * 0.7]) h, l = ax.get_legend_handles_labels() ax.legend(h, l, bbox_to_anchor=(-.5, -.05, 2, -0.35), loc=9, ncol=1) plt.savefig( str(variable_name) + '/' + str(name_file.replace(".", "")) + '.png') plt.close(fig) return simu = yearly_LongPeriod(option, var, y1, y2, basin, lat_min) yr, xr, time, depth = loading.extracting_coord(simu.path) VarArray_simuRho = loading.extracting_var(simu.path, var) # Practical Salinity if var == 'temp': S = loading.extracting_var(simu.path, 'sal') # Practical Salinity VarArray_simuRho[np.where(S == 0)] = np.nan else: VarArray_simuRho[np.where(VarArray_simuRho == 0)] = np.nan index_y1 = np.min( np.where(simu.first_year + time[:] / (3600 * 24 * 364.5) > simu.y1h)) index_y2 = np.min( np.where(simu.first_year + time[:] / (3600 * 24 * 364.5) > simu.y1f)) b1 = 'arctic_ocean' b2 = 'Siberian_seas' b3 = 'BS_and_KS' '''