cube = cube[:,0,:,:] return cube cmip5_max_strmfun = [] cmip5_year = [] for model in models_unique: print model files = np.array(glob.glob(directory+'msftmyz/piControl/*'+model+'*.nc')) cubes = iris.load(files,'ocean_meridional_overturning_mass_streamfunction',callback = remove_anonymous) max_strmfun = [] year = [] month = [] for cube_tmp in cubes: cube = cube_tmp.copy() cube = m2yr.monthly_to_yearly(cube) for i,sub_cube in enumerate(cube.slices(['latitude', 'depth'])): max_strmfun.append(np.max(sub_cube.data)) coord = sub_cube.coord('time') year.append(np.array([coord.units.num2date(value).year for value in coord.points])[0]) cmip5_max_strmfun.append(np.array(max_strmfun)) cmip5_year.append(np.array(year)) cmip5_max_strmfun = np.array(cmip5_max_strmfun) cmip5_year = np.array(cmip5_year) b, a = scipy.signal.butter(3, 0.01, 'high') #here we are generating a high-pass filter to allow us to remove all the really low-period stuff - 200 year typw variability - this will hopefully mean that we're not picking up any signal from drift etc. #an argument coudl be made to also filter out all of the really high frequenfy stuff - have a play with this...
import cartopy import cartopy.crs as ccrs import numpy as np import matplotlib.pyplot as plt import iris.quickplot as qplt import iris.analysis.cartography import monthly_to_yearly as my import scipy from scipy import signal import iris.plot as iplt import iris.quickplot as qplt import iris.analysis.cartography import iris.analysis.stats file_name = '/home/ph290/data1/observations/hadisst/HadISST_sst.nc' cube_in = my.monthly_to_yearly(iris.load_cube(file_name)) cube = cube_in.copy() cube.coord('latitude').guess_bounds() cube.coord('longitude').guess_bounds() cube2 = cube.copy() cube_data = cube.data cube_data_detrended = scipy.signal.detrend(cube_data, axis=0) cube.data = np.ma.array(cube_data_detrended) cube.data.mask = cube_in.data.mask lon_west = -75.0 lon_east = -7.5 lat_south = 0.0
directory = '/data/data0/ph290/cmip5_data/' files1 = np.array(glob.glob(directory+'hadgem2es/sea_surface_height/*.nc')) files2 = np.array(glob.glob(directory+'hadgem2_cc/sea_surface_height/*.nc')) #files1 = np.array(glob.glob(directory+'hadgem2es/psl/*.nc')) #files2 = np.array(glob.glob(directory+'hadgem2_cc/psl/*.nc')) es_cubes = iris.load(files1,'sea_surface_height_above_geoid',callback = my_callback) cc_cubes = iris.load(files2,'sea_surface_height_above_geoid',callback = my_callback) #es_cubes = iris.load(files1,'air_pressure_at_sea_level',callback = my_callback) #cc_cubes = iris.load(files2,'air_pressure_at_sea_level',callback = my_callback) es_cube = iris.experimental.concatenate.concatenate(es_cubes) cc_cube = iris.experimental.concatenate.concatenate(cc_cubes) es_cube_ann = monthly_to_yearly.monthly_to_yearly(es_cube[0]) cc_cube_ann = monthly_to_yearly.monthly_to_yearly(cc_cube[0]) es_cube_ann.data = scipy.signal.detrend(es_cube_ann.data, axis=0) cc_cube_ann.data = scipy.signal.detrend(cc_cube_ann.data, axis=0) coord = cc_cube_ann.coord('time') cc_year = np.array([coord.units.num2date(value).year for value in coord.points]) coord = es_cube_ann.coord('time') es_year = np.array([coord.units.num2date(value).year for value in coord.points]) tsi_file = '/home/ph290/data0/cmip5_data/hadgem2_forcing_data/scvary_l09a.dat' tsi = np.genfromtxt(tsi_file) # plt.plot(tsi[:,0],tsi[:,1])
".mon*.nc")) == 0: print("Volume Transport NOT provided, will computed by Velocity!") missing_file = missing_file + 1 if missing_file == 2: print( " No transport or velocity provided. transport_onto_TS will NOT be executed!" ) exit() #============================================================ # Call NCL code here #============================================================ recover_vmo_by_vo(model, DIR_in, DIR_out) os.environ["which_mean"] = "occur_times" monthly_to_yearly(model, DIR_in, DIR_out, "vmo", "vmo") yearly_to_climate(model, DIR_in, DIR_out, "vmo", "vmo") AMOC_T2B_from_climate(model, DIR_in, DIR_out) interp_vit_to_viv_monthly(model, DIR_in, DIR_out) monthly_to_yearly(model, DIR_in, DIR_out, "thetao_viv", "thetao") yearly_to_climate(model, DIR_in, DIR_out, "thetao_viv", "thetao") monthly_to_yearly(model, DIR_in, DIR_out, "so_viv", "so") yearly_to_climate(model, DIR_in, DIR_out, "so_viv", "so") trans_lats_monthly(model, DIR_in, DIR_out) os.environ["which_mean"] = "total_times" monthly_to_yearly(model, DIR_in, DIR_out, "trans", "trans") yearly_to_climate(model, DIR_in, DIR_out, "trans", "trans") script = os.environ["SRCDIR"] + "sigma0_on_theta-salt_plane.ncl" execute_ncl_calculate(script) script = os.environ["SRCDIR"] + "sigma2_on_theta-salt_plane.ncl"