import matplotlib as mpl import matplotlib.pyplot as plt from matplotlib import cm, rcParams, colors from matplotlib import gridspec as gspec from matplotlib.backends.backend_pdf import PdfPages from matplotlib.font_manager import FontProperties import matplotlib.path as mpat import matplotlib.ticker as mticker import matplotlib.patches as mpatches from matplotlib.lines import Line2D #%% # regrid cube regrid_cube = iris.load_cube( '/home/links/rmv203/obs_datasets/Tair_WFDEI_ann.nc') regrid_cube = time_average(regrid_cube) regrid_cube.coord('latitude').guess_bounds() regrid_cube.coord('longitude').guess_bounds() regrid_modelcube = regrid_cube.copy() #%% # Observational datasets # Observational temperature obs_temp_file = iris.load_cube( '/home/links/rmv203/obs_datasets/Tair_WFDEI_ann.nc') obs_temp_file = select_time(obs_temp_file, 2001, 2010) obs_temp_file = time_average(obs_temp_file) obs_temp = obs_temp_file.data obs_temp = np.ma.masked_where(obs_temp > 60, obs_temp) current_temp = obs_temp.copy()
# observational_rh_data = np.load('saved_variables/observational_rh_data.npy') observational_rh_mask = np.load('saved_variables/observational_rh_mask.npy') observational_rh = np.ma.masked_array(observational_rh_data, mask=observational_rh_mask) # loading observational land fraction landfraction_obs = combine_netCDF_variable( '/home/links/rmv203/obs_datasets/luc4c_landmask.nc', 'mask') #%% # Loading regrid cube regrid_cube = iris.load_cube( '/home/links/rmv203/obs_datasets/Tair_WFDEI_ann.nc') regrid_cube = time_average(regrid_cube) regrid_cube.coord('latitude').guess_bounds() regrid_cube.coord('longitude').guess_bounds() regrid_modelcube = regrid_cube.copy() # correct lat and lon dimensions n_lat = regrid_cube.coord('latitude').points n_lon = regrid_cube.coord('longitude').points #%% # inputs lower_historical = 1995 upper_historical = 2005 region_global = [0, 360, -90, 90]
cSoil_historical_cube = open_netCDF(cSoil_historical_cube) # Near Surface Air Temperature (tas) tas_historical_cube = combine_netCDF_cmip5( '/home/rmv203/cmip5_data/tas_Amon_' + model + '_historical*', 'air_temperature', model) tas_historical_cube = open_netCDF(tas_historical_cube) # Select historical time period rh_historical_cube = select_time(rh_historical_cube, lower_historical, upper_historical) cSoil_historical_cube = select_time(cSoil_historical_cube, lower_historical, upper_historical) tas_historical_cube = select_time(tas_historical_cube, lower_historical, upper_historical) # Time average rh_historical_cube = time_average(rh_historical_cube) cSoil_historical_cube = time_average(cSoil_historical_cube) tas_historical_cube = time_average(tas_historical_cube) # Converting from cubes to numpy_arrays rh_historical_data = rh_historical_cube.data cSoil_historical_data = cSoil_historical_cube.data tas_historical_data = tas_historical_cube.data # save to use later historical_tas_save_data = tas_historical_data - 273.15 cSoil_historical_save_cube = cSoil_historical_cube.copy() historical_rh_save_data = rh_historical_data * 86400. * 365. # Calculating Soil Turnover Time (tau_s) tau_s_data_historical = cSoil_historical_data / (rh_historical_data * 86400. * 365.)
from matplotlib import gridspec as gspec from matplotlib.backends.backend_pdf import PdfPages from matplotlib.font_manager import FontProperties import matplotlib.path as mpat import cartopy.crs as ccrs from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER import matplotlib.ticker as mticker import matplotlib.patches as mpatches from matplotlib.lines import Line2D #%% # cube for regridding regrid_cube = iris.load_cube( '/home/links/rmv203/obs_datasets/Tair_WFDEI_ann.nc') regrid_cube = time_average(regrid_cube) regrid_cube.coord('latitude').guess_bounds() regrid_cube.coord('longitude').guess_bounds() regrid_modelcube = regrid_cube.copy() #%% # observational datasets # Observational soil carbon # ncscd ncscd_file = Dataset( '/home/links/rmv203/obs_datasets/NCSCDV22_soilc_0.5x0.5.nc') ncscd_data = ncscd_file.variables['soilc'][:] n_lat_ncscd = ncscd_file.variables['lat'][:] n_lon_ncscd = ncscd_file.variables['lon'][:] # hwsd
print(rcp, model) #%% modelled historical # Soil Carbon (cSoil) cSoil_historical_cube_new = combine_netCDF_cmip5('/home/rmv203/cmip5_data/cSoil_Lmon_'+model+'_historical*', 'soil_carbon_content', model) cSoil_historical_cube_new = open_netCDF(cSoil_historical_cube_new) # Near Surface Air Temperature (tas) tas_historical_cube = combine_netCDF_cmip5('/home/rmv203/cmip5_data/tas_Amon_'+model+'_historical*', 'air_temperature', model) tas_historical_cube = open_netCDF(tas_historical_cube) # Select historical time period cSoil_historical_cube_new = select_time(cSoil_historical_cube_new, lower_historical, upper_historical) tas_historical_cube = select_time(tas_historical_cube, lower_historical, upper_historical) # Time average cSoil_historical_time_av_cube_new = time_average(cSoil_historical_cube_new) tas_historical_cube = time_average(tas_historical_cube) tas_historical_data = tas_historical_cube.data # Converting from cubes to numpy_arrays cSoil_historical_time_av_data_new = cSoil_historical_time_av_cube_new.data #%% Modelled Future # Soil Carbon (cSoil) cSoil_cube = combine_netCDF_cmip5('/home/rmv203/cmip5_data/cSoil_Lmon_'+model+'_'+rcp+'_*', 'soil_carbon_content', model) cSoil_cube = open_netCDF(cSoil_cube) # Near Surface Air Temperature (tas) tas_cube = combine_netCDF_cmip5('/home/rmv203/cmip5_data/tas_Amon_'+model+'_'+rcp+'_*', 'air_temperature', model) tas_cube = open_netCDF(tas_cube)
'soil_carbon_content', model) cSoil_historical_cube = open_netCDF(cSoil_historical_cube) # Near Surface Air Temperature (tas) tas_historical_cube = combine_netCDF_cmip5( '/home/rmv203/cmip5_data/tas_Amon_' + model + '_historical*', 'air_temperature', model) tas_historical_cube = open_netCDF(tas_historical_cube) # Select historical time period rh_historical_cube = select_time(rh_historical_cube, lower_historical, upper_historical) cSoil_historical_cube = select_time(cSoil_historical_cube, lower_historical, upper_historical) tas_historical_cube = select_time(tas_historical_cube, lower_historical, upper_historical) # Time average rh_historical_time_av_cube = time_average(rh_historical_cube) cSoil_historical_time_av_cube = time_average(cSoil_historical_cube) tas_historical_time_av_cube = time_average(tas_historical_cube) # Converting from cubes to numpy_arrays rh_historical_time_av_data = rh_historical_time_av_cube.data cSoil_historical_time_av_data = cSoil_historical_time_av_cube.data tas_historical_time_av_data = tas_historical_time_av_cube.data # Calculating Soil Turnover Time tau_s_data_historical = cSoil_historical_time_av_data / ( rh_historical_time_av_data * 86400. * 365.) tau_s_masked_data_historical = ma.masked_where( np.logical_or(tau_s_data_historical < 1, tau_s_data_historical > 1e4), tau_s_data_historical) #%%