Exemplo n.º 1
0
colors_wERA = colors + ['black']
color_main.append('black')

#############################################################################################
#############################################################################################

mean_field_all = dict()
lowfrvar = dict()
highfrvar = dict()
stat_eddy_all = dict()

file_in = '/data-hobbes/fabiano/OBS/ERA/ERA40+Int_daily_1957-2018_zg500_remap25_meters.nc'

#var, coords, aux_info = ctl.read_iris_nc(file_in, extract_level_hPa = 500)
var, coords, aux_info = ctl.readxDncfield(file_in, extract_level=500)
lat = coords['lat']
lon = coords['lon']
dates = coords['dates']

mean_field_all['ERA'], lowfrvar['ERA'], highfrvar['ERA'], stat_eddy_all[
    'ERA'] = ctl.variability_lowhi(lat,
                                   lon,
                                   var,
                                   dates,
                                   season,
                                   area=area,
                                   dates_range=ctl.range_years(1957, 2014))

cart_in = '/data-hobbes/fabiano/PRIMAVERA/incoming/hist-1950/'
flist = cart_in + 'lista_filez_v7.dat'
Exemplo n.º 2
0
Rearth = 6371.0e3  # mean radius
#####################################

L = 2501000.0
Rearth = 6371.0e3
##

cart_in = '/data-hobbes/fabiano/OBS/ERA/ERAInterim/'
file_list = cart_in + 'ERAInterim_6hrs_1988_vatazgq.nc'
file_ps = cart_in + 'ERAInterim_mon_1988_ps.nc'
cart_out = '/home/fabiano/Research/lavori/SPHINX_for_lisboa/heat_flux/ERA_ref_6hrs/'

# Loading ERA reference
era_fi = 'prova_heatflux_1988_MM.nc'

vars, lat, lon, dates, time_units, var_units, time_cal = ctl.readxDncfield(
    cart_in + era_fi)
print(vars.keys())

fi = 'northward_water_flux.nc'
var2, lat, lon, dates, time_units, var_units, time_cal = ctl.readxDncfield(
    cart_in + fi)
print(var2.keys())
vars[list(var2.keys())[0]] = L * var2[list(var2.keys())[0]]

era_zonal_factor = 2 * np.pi * Rearth * np.cos(np.deg2rad(lat))

era_fluxes_maps = dict()
era_fluxes_zonal = dict()

seasons = ['Feb', 'DJF', 'JJA']
fluxnames = ['tot', 'SH', 'PE', 'LH']
Exemplo n.º 3
0
                         lon_limits=(0., 359.3),
                         lat_limits=(-89.46, 89.46))

periods = [(1900, 2005), (2005, 2050), (2050, 2090), (2090, 2110),
           (2110, 2160)]
allvars = ['tas', 'hcc', 'mcc', 'lcc', 'rlut', 'rsus']

#deg_periods = [(0., 1.), (1.,2.), (2.,3.), (3.,4.), (4., 5.)]

# da fare:
# diff plots hcc, mcc, lcc vs tas con colore dato dall'anno. Qui posso usare gli annual. Separare tropici?
# ovmoller lat/temp ?
# trova warming pattern per grado di temp

varnam = 'tas'
tas, lat, lon, dates, time_units, var_units, time_cal = ctl.readxDncfield(
    cart + filename.format(varnam))

# periodi

# globalT = dict()
# for ens in ens_mem:
#     globalT[ens] = ctl.global_mean(tas[ens], lat)
#
# globalT['base'] = np.mean([globalT[ens] for ens in ens_mem if 'lcb' in ens], axis = 0)
# globalT['stoc'] = np.mean([globalT[ens] for ens in ens_mem if 'lcs' in ens], axis = 0)
# globalT['base_std'] = np.std([globalT[ens] for ens in ens_mem if 'lcb' in ens], axis = 0)
# globalT['stoc_std'] = np.std([globalT[ens] for ens in ens_mem if 'lcs' in ens], axis = 0)
#
# trenddict = dict()
#
# for varnam in allvars:
Exemplo n.º 4
0
filogen = cart + 'out_prima_coup_v7_DJF_EAT_4clus_4pcs_1957-2014_refEOF.p'
results_refEOF, results_ref = pickle.load(open(filogen, 'rb'))
results_refEOF['ERA'] = results_ref

results_refEOF.pop('HadGEM3-GC31-LL_r1i1p2f1')
results_refEOF.pop('EC-Earth3P_r1i1p1f1')
results_refEOF.pop('EC-Earth3P-HR_r1i1p1f1')
allresmembers = list(results_refEOF.keys())

# mod = model_names[5]
# mem = ens_mems[5]
# print(mod, mem)
mod = 'ERA'
filok = 'bf.5day.daily.daily_mean.ERA.ERA.1958-2017.nc'

blocked_days, datacoords, aux_info = ctl.readxDncfield(cart_bloc + filok)
dates_block = datacoords['dates']
lat = datacoords['lat']
lon = datacoords['lon']

WR_index = results_refEOF[mod]['labels']
WR_dates = results_refEOF[mod]['dates']

blok, wri, datcom = ctl.extract_common_dates(dates_block, WR_dates,
                                             blocked_days, WR_index)
ERA_map_full = np.mean(blok, axis=0)
ctl.plot_map_contour(ERA_map_full,
                     lat,
                     lon,
                     visualization='Nstereo',
                     plot_anomalies=False,
Exemplo n.º 5
0
            wind_low[:, ila, ilo] = np.convolve(lanc20,
                                                wind_area[:, ila, ilo],
                                                mode='same')
    #wind_low = ctl.running_mean(wind_area, 10)

    wind_low_djf, dates = ctl.sel_season(wind_low, coords['dates'], 'DJF')

    return wind_low_djf, dates


area = [-60., 0., 20., 70.]
cart_out = '/home/fabiano/Research/lavori/Jet_latitude/'

#orogfi = '/data-hobbes/reference/ERAInterim/geopot_vegcover_25.nc'
orogfi = '/data-hobbes/reference/ERAInterim/geopot_vegcover.nc'
orog, coords, aux_info = ctl.readxDncfield(orogfi, select_var='z')
#orog = orog/9.80665
orogmask = orog > 1300.0
orogarea, _, _ = ctl.sel_area(coords['lat'], coords['lon'], orogmask, area)
orogarea = orogarea[0]
#ctl.plot_map_contour(orogmask, plot_type = 'pcolormesh')

cart_in = '/nas/reference/ERA40/daily/u/'
file_in = 'u_Aday_ERA40_{}01_{}12.nc'
yea = 1957
file_in_57 = 'u_Aday_ERA40_195709_195712.nc'

winds = []
alldates = []

wind, coords, aux_info = ctl.readxDncfield(cart_in + file_in_57,
Exemplo n.º 6
0
#filename = '1850-2160-{}-monthly.nc'
filename = '1850-2160-{}-monthly_remap25_rechunk.nc'

ens_mem = ['lcb0', 'lcs0', 'lcb1', 'lcs1', 'lcb2', 'lcs2']

figures = []
lat, lon = ctl.genlatlon(73, 144)

fields = dict()

for varnam in varlist:
    print(varnam)
    ifile = cart + filename.format(varnam)
    if varnam == 'tas':
        ifile = cart + '1950-2160-tas-monthly_remap25_rechunk.nc'
    var, lat, lon, dates, time_units, var_units, time_cal = ctl.readxDncfield(
        ifile)
    print(var.keys())
    weights = abs(np.cos(np.deg2rad(lat)))
    # var, coords, aux_info = ctl.read_iris_nc(ifile)
    # lat = coords['lat']
    # lon = coords['lon']
    # dates = coords['dates']

    for ens in ens_mem:
        # zonal mean
        for season in ['year', 'DJF', 'JJA']:
            var_pre, dates_pre = ctl.sel_time_range(
                var[ens], dates, ctl.range_years(2085, 2095))

            var_pre_seas, _ = ctl.seasonal_climatology(var_pre, dates_pre,
                                                       season)
Exemplo n.º 7
0
listafils.append(
    '/data-hobbes/fabiano/OBS/ERA/ERA40+Int_daily_1957-2018_zg500_remap25_meters.nc'
)
model_names.append('ERA')

nya = 30  # number of years for running mean
clm_fullperiod = dict()
datesall = dict()
climate_mean_dict = dict()

allnums = [5, 10, 20]

for ifile, name in zip(listafils, model_names):
    print(name)
    var, lat, lon, dates, time_units, var_units, time_cal = ctl.readxDncfield(
        ifile, extract_level=500)
    # var, coords, aux_info = ctl.read_iris_nc(ifile)
    # lat = coords['lat']
    # lon = coords['lon']
    # dates = coords['dates']

    var, dates = ctl.sel_time_range(var, dates, ctl.range_years(1957, 2014))

    for num in allnums:
        clm, dtclm, _ = ctl.daily_climatology(var, dates, num)
        clmarea, lat_area, lon_area = ctl.sel_area(lat, lon, clm, 'EAT')
        clm_fullperiod[(name, num)] = clmarea
    dtclmpd = pd.to_datetime(dtclm)
    datesall[name] = dtclmpd

    climate_mean, dates_climate_mean = ctl.trend_daily_climat(var,
Exemplo n.º 8
0
filogen = cart + 'out_panosjet_DJF_EAT_4clus_4pcs_1957-2014_refCLUS.p'
results_refCLUS, results_ref = pickle.load(open(filogen, 'rb'))
results_refCLUS['ERA'] = results_ref

cart = '/home/fabiano/Research/lavori/WeatherRegimes/panosjet/'
filogen = cart + 'out_panosjet_DJF_EAT_4clus_4pcs_1957-2014_refEOF.p'
results_refEOF, results_ref = pickle.load(open(filogen, 'rb'))
results_refEOF['ERA'] = results_ref

##################################################################
cart_sst = '/data-woodstock/PRIMAVERA/stream1/merged/tos/'
filsst = 'tos-{}-1950-2014-{}-remap.nc'

#cart_sst = '/nas/PRIMAVERA/Stream1/hist-1950/{}/{}/tos/'
filera = '/nas/reference/ERA40+Int/sst_Amon_ERA40_195701-201812_1deg.nc'
sstera, datacoords, _ = ctl.readxDncfield(filera)
datesera = datacoords['dates']
lat = datacoords['lat']
lon = datacoords['lon']

sstera = sstera - 273.15
sstera_mean, sstera_sd = ctl.seasonal_climatology(sstera, datesera, 'DJF', dates_range = ctl.range_years(1957, 2014))

area_box = (-80, 10, 20, 80)

sstera_mean_area, latsel, lonsel = ctl.sel_area(lat, lon, sstera_mean, area_box)
okpoera = (sstera_mean_area < -100) | (sstera_mean_area > 500)

allcose = dict()
allrms = dict()
allpatcor = dict()
Exemplo n.º 9
0
import climtools_lib as ctl

import cartopy.crs as ccrs
import cartopy.util as cartopy_util
import cartopy.feature as cfeature
from matplotlib.colors import LightSource

import seaborn as sns

##############################################
############ INPUTS #########

elev_file = '/home/fabiano/Research/temp/elev.0.25-deg.nc'

elev, lat, lon, var_units = ctl.readxDncfield(elev_file)

elev = elev.squeeze()
# map = ctl.plot_map_contour(elev, lat, lon, visualization = 'Robinson')

### Trying hillshades

proj = ccrs.Robinson(central_longitude=0.)

# Plotting figure
fig = plt.figure(figsize=(32, 24))
ax = plt.subplot(projection=proj)

cmappa = cm.get_cmap('gist_earth')
cbar_range = None
clevels = [
Exemplo n.º 10
0
        daynum = np.arange(len(results_ssp['EC-Earth3_r1i1p1f1']['dates']))
        m, c, err_m, err_c = ctl.linear_regre_witherr(
            daynum, results_ssp['EC-Earth3_r1i1p1f1']['pcs'])

cartmon_hist = '/data-hobbes/fabiano/CMIP6/historical_mon_zg/'
cartmon_ssp = '/data-hobbes/fabiano/CMIP6/ssp585_mon_zg/'

filssp = 'zg_Amon_ssp585_{}_{}_2015-2100.nc'
filhist = 'zg_{}_mon.nc'

season = 'NDJFM'

cose = dict()
for modmem in okmods:
    mod, mem = modmem.split('_')
    zgssp, coords, _ = ctl.readxDncfield(cartmon_ssp + filssp.format(mod, mem))
    lat = coords['lat']
    lon = coords['lon']
    dates = coords['dates']
    #trendssp, errtrendssp = ctl.local_lineartrend_climate(lat, lon, zgssp, dates, season)
    zg_noglob, coeffs, var_regional, dates_seas = ctl.remove_global_polytrend(
        lat, lon, zgssp, dates, season, deg=3, area='NML')

    trend, errtrend, _, _ = ctl.local_lineartrend_climate(
        lat, lon, zg_noglob, dates, None)
    zontrend = ctl.zonal_mean(trend)
    zonerrtrend = ctl.zonal_mean(errtrend)

    zg_noglob_zonme = ctl.zonal_mean(zg_noglob)
    zg_se = zg_noglob - zg_noglob_zonme[..., np.newaxis]
    se_trend, se_errtrend, _, _ = ctl.local_lineartrend_climate(
Exemplo n.º 11
0
from matplotlib.colors import LogNorm
from datetime import datetime

from scipy import stats
import pandas as pd

#############################

cart_in = '/nas/reference/ERAInterim/daily/'
filnam = cart_in + '{}/{}_Aday_ERAInterim_201801_201812.nc'

cart_out = '/home/fabiano/Research/lavori/dynamics_exe/'

# 29 Dec 2018
u, ucoords, _ = ctl.readxDncfield(filnam.format('u', 'u'))
v, vcoords, _ = ctl.readxDncfield(filnam.format('v', 'v'))
ta, tacoords, _ = ctl.readxDncfield(filnam.format('ta', 'ta'))
zg, zgcoords, _ = ctl.readxDncfield(filnam.format('zg', 'zg'))
zg = 9.80665 * zg
pv, pvcoords, _ = ctl.readxDncfield(filnam.format('pv', 'pv'))

#u.shape (365, 5, 241, 480)
lat_orig = ucoords['lat']
lon_orig = ucoords['lon']

levs = np.array([850, 500, 200, 50, 30])
area = (-180, 180, 10, 85)

#for da in np.arange(365):
da = -3
Exemplo n.º 12
0
###############################################
L = 2501000.0
Rearth = 6371.0e3
##

cart_in = '/data-hobbes/fabiano/SPHINX/heat_flux/fluxes_row/'
cart_in_ref = '/data-hobbes/fabiano/OBS/ERA/ERAInterim/'

file_list = cart_in_ref+'ERAInterim_6hrs_1988_vatazgq.nc'
file_ps = cart_in_ref+'ERAInterim_mon_1988_ps.nc'
cart_out = '/home/fabiano/Research/lavori/SPHINX_for_lisboa/heat_flux/'

# Loading ERA reference
era_fi = 'prova_heatflux_1988_MM.nc'

vars, lat, lon, dates, time_units, var_units, time_cal = ctl.readxDncfield(cart_in_ref+era_fi)
print(vars.keys())

fi = 'northward_water_flux.nc'
var2, lat, lon, dates, time_units, var_units, time_cal = ctl.readxDncfield(cart_in_ref+fi)
print(var2.keys())
vars[list(var2.keys())[0]] = L*var2[list(var2.keys())[0]]

era_zonal_factor = 2*np.pi*Rearth*np.cos(np.deg2rad(lat))

era_fluxes_maps = dict()
era_fluxes_zonal = dict()

seasons = ['Feb','DJF', 'JJA']
fluxnames = ['tot', 'SH', 'PE', 'LH']
eraname = {'tot': 'p76.162', 'SH': 'p70.162', 'PE': 'p74.162', 'LH': 'p72.162'}
for mod in okmods_mo:
    print(mod)
    if mod not in all_mods:
        print('NO data for {}'.format(mod))
        continue

    climmeans = dict()
    climmeans['EAT'] = []
    climmeans['PNA'] = []

    for mem in all_mems[mod]:
        okfil = [fi for fi in filli if mod in fi and mem in fi][0]
        try:
            #var, coords, aux_info = ctl.read_cmip6_data(fieldnam, 'day', 'historical', mod, sel_member = mem, extract_level_hPa = levok, regrid_to_reference_file = ref_file, sel_yr_range = (1964, 2014), select_season_first = True, season = 'ONDJFMA', select_area_first = True, area = 'NML')
            var, coords, aux_info = ctl.readxDncfield(cart_data + okfil)
        except Exception as exp:
            print('Unable to read data for {}, going on with next model..'.format(mod + '_' + mem))
            print(exp)
            continue

        lat = coords['lat']
        lon = coords['lon']
        dates = coords['dates']

        var, dates = ctl.sel_time_range(var, dates, ctl.range_years(1964, 2014))

        zg_dtr, coeffs, var_regional, dates_seas = ctl.remove_global_polytrend(lat, lon, var, dates, 'NDJFM', deg = 1, area = 'NML', print_trend = True)

        for area in ['EAT', 'PNA']:
            zg_ok, _, _ = ctl.sel_area(lat, lon, zg_dtr, area)