예제 #1
0
fluxes = dict()
fluxnames = ['mshf', 'mpef', 'mlhf']
fluxlongnames = ['Sensible Heat', 'Potential Energy', 'Latent Heat']
factors = [cp/g, 1., L/g]

vars = dict()
varnames = ['hus', 'ta', 'va', 'zg']
fils = ['lcs0_day_1988_{}.nc'.format(varna) for varna in varnames]

for varna, fi in zip(varnames, fils):
    var, level, lat, lon, dates, time_units, var_units, time_cal = ctl.read4Dncfield(cart_in+fi)
    var, okda = ctl.sel_season(var, dates, 'Feb')
    vars[varna] = var

press0, latdad, londsad, datespress, time_units, var_units = ctl.read3Dncfield(cart_in+'lcs0_day_1988_ps.nc')
press0, _ = ctl.sel_season(press0, datespress, 'Feb')
press0 = np.mean(press0, axis = 0)

mshf = factors[0]*vars['va']*vars['ta']
mpef = vars['va']*vars['zg']
mlhf = factors[2]*vars['va']*vars['hus']

mshf = np.mean(mshf, axis = 0)
mpef = np.mean(mpef, axis = 0)
mlhf = np.mean(mlhf, axis = 0)

mshfint = np.zeros(mshf.shape[1:])
mpefint = np.zeros(mpef.shape[1:])
mlhfint = np.zeros(mlhf.shape[1:])
print(mshf.shape)
예제 #2
0
                                          axis=0)
    era_fluxes_maps[(flun, 'year')] = np.mean(vars[eraname[flun]], axis=0)

for fu in era_fluxes_maps:
    era_fluxes_zonal[fu] = np.mean(era_fluxes_maps[fu],
                                   axis=1) * era_zonal_factor

######
print('Is it the first level???\n')
tag = 'ERAwith1000'
file_list = cart_in + 'all_vtgq_1988_6hrs.nc'

factors = {'SH': cp / g, 'PE': 1., 'LH': L / g}
#factors['PE'] = 1./g

press0row, latdad, londsad, datespress, time_units, var_units = ctl.read3Dncfield(
    file_ps)
pressok = press0row[1]

flux_levels = dict()
v, level, lat, lon, dates, time_units, var_units, time_cal = ctl.readxDncfield(
    file_list, select_var=['v'])

t, level, lat, lon, dates, time_units, var_units, time_cal = ctl.readxDncfield(
    file_list, select_var=['t'])
mshf = factors['SH'] * v['v'] * t['t']
flux_levels['SH'] = np.mean(mshf, axis=0)
del t, mshf

z, level, lat, lon, dates, time_units, var_units, time_cal = ctl.readxDncfield(
    file_list, select_var=['z'])
mpef = factors['PE'] * v['v'] * z['z']
예제 #3
0
# ensmemsall = ensmems['a']+ensmems['f']
# nunams = ['base_hist', 'stoc_hist', 'base_fut', 'stoc_fut']
# expnams = ['lab', 'las', 'lfb', 'lfs']
#
# for varna in varnames+nuvars:
#     for nunam, expnam in zip(nunams, expnams):
#         radclim[('global', nunam, varna)] = np.mean([radclim[('global', exp, varna)] for exp in ensmemsall if expnam in exp], axis = 0)
#
# for varna in ['heat_flux', 'toa_balance', 'surf_balance']:
#     for nunam, expnam in zip(nunams, expnams):
#         radclim[('zonal', nunam, varna)] = np.mean([radclim[('zonal', exp, varna)] for exp in ensmemsall if expnam in exp], axis = 0)
#
# pickle.dump(radclim, open(cart_out+'radclim_yearly_AMIP.p', 'wb'))

radclim = pickle.load(open(cart_out + 'radclim_yearly_AMIP.p'))
varniuu, lat, lon, dates, time_units, var_units = ctl.read3Dncfield(
    cart_in + namefi.format('lab0', 1988, 'rsut'))
del varniuu

carttemp = '/data-hobbes/fabiano/SPHINX/AMIP/tas_mon/'
# globalme = dict()
# varna = 'tas'
#
# tempnames = dict()
# tempnames['a'] = '{}_mon_1979-2008_tas.nc'
# tempnames['f'] = '{}_mon_2038-2068_tas.nc'
# for lett in ['a','f']:
#     for ens in ensmems[lett]:
#         filena = carttemp+tempnames[lett].format(ens)
#         var, lata, lona, dates, time_units, var_units = ctl.read3Dncfield(filena)
#         varye, _ = ctl.yearly_average(var, dates)
#         global_mean = ctl.global_mean(varye, lata)
예제 #4
0
from matplotlib import cm
import pickle

import matplotlib.animation as animation
from matplotlib.animation import ImageMagickFileWriter

import cartopy.crs as ccrs

#cart = '/home/fabiano/Research/lavori/SPHINX_for_lisboa/'
cart = '/home/fedefab/Scrivania/Research/Post-doc/SPHINX/'

ref_period = ctl.range_years(1850, 1900)

filena = 'lcb0-1850-2100-tas_mon.nc'

var, lat, lon, dates, time_units, var_units = ctl.read3Dncfield(cart + filena)
dates_pdh = pd.to_datetime(dates)

# Global stuff
global_mean = ctl.global_mean(var, lat)
zonal_mean = ctl.zonal_mean(var)

climat_mon, dates_mon, climat_std = ctl.monthly_climatology(
    var, dates, dates_range=ref_period)
climat_year = np.mean(climat_mon, axis=0)

yearly_anom, years = ctl.yearly_average(var, dates)
yearly_anom = yearly_anom - climat_year

zonal_anom = ctl.zonal_mean(yearly_anom)
global_anom = ctl.global_mean(yearly_anom, lat)
예제 #5
0
figures_all = []

zonal_margins = dict()
zonal_margins['tot'] = (-3.5e16, 4.5e16)
zonal_margins['mshf'] = (-3.5e16, 4.5e16)
zonal_margins['mpef'] = (-3.5e16, 4.5e16)
zonal_margins['mlhf'] = (-7e15, 9.e15)
map_margins = dict()
map_margins['mshf'] = (-1.5e10, 1.5e10)
map_margins['mpef'] = (-4.e9, 4.e9)
map_margins['mlhf'] = (-7.e8, 7.e8)
map_margins['tot'] = (-2.e10, 2.e10)

# Loading reference pressure file
pressurefile = '/data-hobbes/fabiano/SPHINX/heat_flux/1988_daily/lcs0_day_1988_ps.nc'
press0row, lat, lon, datespress, time_units, var_units = ctl.read3Dncfield(
    pressurefile)
press0 = dict()
press0['DJF'] = np.mean(ctl.sel_season(press0row, datespress, 'DJF',
                                       cut=False)[0],
                        axis=0)
press0['JJA'] = np.mean(ctl.sel_season(press0row, datespress, 'JJA',
                                       cut=False)[0],
                        axis=0)
press0['year'] = np.mean(press0row, axis=0)

# Loading ERA reference
cart_era = '/data-hobbes/fabiano/OBS/ERA/ERAInterim/'
era_fi = 'prova_heatflux_1988_MM.nc'
cpc = nc.Dataset(cart_era + era_fi)
era_lat = cpc.variables['latitude'][:]
era_lon = cpc.variables['longitude'][:]
예제 #6
0
#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
import netCDF4 as nc
import climtools_lib as ctl
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt

plt.ion()

sys.exit()

filename = '/data-hobbes/fabiano/SPHINX/zg_daily/ridottone.nc'
var_day, lat_day, lon_day, dates_day, time_units, var_units = ctl.read3Dncfield(
    filename)

dates_pdh_day = pd.to_datetime(dates_day)

filename = '/data-hobbes/fabiano/SPHINX/tas_mon/ridotto.nc'
var_mon, lat_mon, lon_mon, dates_mon, time_units, var_units = ctl.read3Dncfield(
    filename)

dates_pdh_mon = pd.to_datetime(dates_mon)
예제 #7
0
varnames = ['hcc', 'lcc', 'mcc', 'tcw']
namefi = '{}_mon_{}_{}.nc'

ann = np.arange(1979, 2008, 6)
annme = [(a1 + a2) // 2 for a1, a2 in zip(ann[:-1], ann[1:])]
print(annme)

radclim = dict()
ensmems = ['labm', 'lasm']
for exp in ensmems:
    for a1, a2 in zip(ann[:-1], ann[1:]):
        am = (a2 + a1) / 2
        vardict = dict()
        for year in range(a1 + 1, a2 + 1):
            for varna in varnames:
                varniuu, lat, lon, dates, time_units, var_units = ctl.read3Dncfield(
                    cart_in + namefi.format(exp, year, varna))
                if year == a1 + 1:
                    vardict[varna] = [np.mean(varniuu, axis=0)]
                else:
                    vardict[varna].append(np.mean(varniuu, axis=0))

        for varna in varnames:
            vardict[varna] = np.stack(vardict[varna])

        for key in vardict:
            print(vardict[key].shape)
            radclim[(exp, 'map', key, am)] = np.mean(vardict[key], axis=0)
            radclim[(exp, 'map_std', key, am)] = np.std(vardict[key], axis=0)
            radclim[(exp, 'zonal', key, am)] = np.mean(radclim[(exp, 'map',
                                                                key, am)],
                                                       axis=-1)
예제 #8
0
expnames = ['lcb0', 'lcb1', 'lcb2', 'lcs0', 'lcs1', 'lcs2']
varnames = ['mshf', 'mpef', 'mlhf']
fluxnames = ['Sensible Heat', 'Potential Energy', 'Latent Heat']
factors = [-cp / g, -1., -L / g]

yearsall = np.arange(1950, 2101)
all_fluxes_yrl = dict()
monthly_clim_hist = dict()
monthly_clim_fut = dict()
for exp in expnames:
    for varna, flun, fac in zip(varnames, fluxnames, factors):
        # leggi da file e salva in dict
        fil = cart_in + '{}_{}_1950-2100.nc'.format(exp, varna)
        print(fil)
        var, lat, lon, dates, time_units, var_units = ctl.read3Dncfield(fil)
        yearsok = np.unique(pd.to_datetime(dates).year)
        for y in yearsall:
            if y not in yearsok:
                print('{} {} - {} missing\n'.format(exp, varna, y))
        varfac = var * fac
        all_fluxes_yrl[(exp,
                        varna)], yrl_dates = ctl.yearly_average(varfac, dates)
        monthly_clim_hist[(exp,
                           varna)], mon_dates, _ = ctl.monthly_climatology(
                               varfac,
                               dates,
                               dates_range=ctl.range_years(1950, 2025))
        monthly_clim_fut[(exp, varna)], mon_dates, _ = ctl.monthly_climatology(
            varfac, dates, dates_range=ctl.range_years(2026, 2100))