0.25, dim='dim_0', interpolation='linear')

index_monthly_normal = np.logical_and(
    PV.PV_mon < PV.PV_mon.quantile(0.75, dim='dim_0', interpolation='linear'),
    PV.PV_mon > PV.PV_mon.quantile(0.25, dim='dim_0', interpolation='linear'))

for i in np.arange(0, 4):
    var_neg = np.mean(
        ds.z.values[i, index_monthly_upper.values, :, :], axis=0) - np.mean(
            ds.z.values[i, index_monthly_normal.values, :, :], axis=0)
    var_pos = np.mean(
        ds.z.values[i, index_monthly_lower.values, :, :], axis=0) - np.mean(
            ds.z.values[i, index_monthly_normal.values, :, :], axis=0)
    px_neg, py_neg, lat = plumb_flux.ComputePlumbFluxes(
        winds_clm.u.values[i, :, :], winds_clm.v.values[i, :, :],
        np.mean(ds.z.values[i, index_monthly_upper.values, :, :], axis=0),
        np.mean(ds.z.values[i, index_monthly_normal.values, :, :], axis=0),
        ds.latitude.values, ds.longitude.values)
    px_pos, py_pos, lat = plumb_flux.ComputePlumbFluxes(
        winds_clm.u.values[i, :, :], winds_clm.v.values[i, :, :],
        np.mean(ds.z.values[i, index_monthly_lower.values, :, :], axis=0),
        np.mean(ds.z.values[i, index_monthly_normal.values, :, :], axis=0),
        ds.latitude.values, ds.longitude.values)
    tit = 'Composites S4 Plumb Fluxes 200hPa - ' + month[i]
    filename = './figures/hgt_200_plumb_composites_PV_' + month[i] + '.png'
    plots.PlotCompositesPlumbPV(var_pos, var_neg, px_pos, px_neg, py_pos,
                                py_neg, ds.latitude, ds.longitude, tit,
                                filename)
    var = np.mean(ds.z.values[i, index_monthly_lower.values, :, :],
                  axis=0) - np.mean(
                      ds.z.values[i, index_monthly_upper.values, :, :], axis=0)
Ejemplo n.º 2
0
    0.10, dim='dim_0', interpolation='linear')
index_WPV_LN = PV_index_LN >= PV_index_LN.quantile(
    0.90, dim='dim_0', interpolation='linear')

month = ['Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'Jan', 'Feb']
seas = ['ASO', 'SON', 'OND', 'NDJ', 'DJF']

for i in np.arange(0, 7):
    var_WPV_EN = np.mean(hgt_EN.z.values[i, index_WPV_EN.values, :, :], axis=0)
    var_WPV_LN = np.mean(hgt_LN.z.values[i, index_WPV_LN.values, :, :], axis=0)
    var_SPV_EN = np.mean(hgt_EN.z.values[i, index_SPV_EN.values, :, :], axis=0)
    var_SPV_LN = np.mean(hgt_LN.z.values[i, index_SPV_LN.values, :, :], axis=0)
    var_WPV_all = np.mean(hgt.z.values[i, index_WPV_all.values, :, :], axis=0)
    var_SPV_all = np.mean(hgt.z.values[i, index_SPV_all.values, :, :], axis=0)
    px_EN, py_EN, lat = plumb_flux.ComputePlumbFluxes(
        winds_clm.u.values[i, :, :],
        winds_clm.v.values[i, :, :], var_SPV_EN - var_WPV_EN,
        np.zeros_like(var_WPV_EN), hgt.latitude.values, hgt.longitude.values)
    px_LN, py_LN, lat = plumb_flux.ComputePlumbFluxes(
        winds_clm.u.values[i, :, :],
        winds_clm.v.values[i, :, :], var_SPV_LN - var_WPV_LN,
        np.zeros_like(var_WPV_LN), hgt.latitude.values, hgt.longitude.values)
    px_all, py_all, lat = plumb_flux.ComputePlumbFluxes(
        winds_clm.u.values[i, :, :],
        winds_clm.v.values[i, :, :], var_SPV_all - var_WPV_all,
        np.zeros_like(var_WPV_all), hgt.latitude.values, hgt.longitude.values)
    var = {
        'z1': var_SPV_all - var_WPV_all,
        'px1': px_all,
        'py1': py_all,
        'z2': var_SPV_EN - var_WPV_EN,
        'px2': px_EN,
    ninio34.ninio34_mon.quantile(0.25, dim='dim_0', interpolation='linear'))
# compute PV composites conditioned on non-EN anomalies
PV_index_EN = PV_index.sel(dim_0=~index_monthly_normal.values)
ds_EN = ds.sel(realiz=~index_monthly_normal.values)

index_monthly_upper = PV_index_EN.PV_mon >= PV_index_EN.PV_mon.quantile(
    0.75, dim='dim_0', interpolation='linear')
index_monthly_lower = PV_index_EN.PV_mon <= PV_index_EN.PV_mon.quantile(
    0.25, dim='dim_0', interpolation='linear')

for i in np.arange(0, 4):
    var = np.mean(
        ds_EN.z.values[i, index_monthly_lower.values, :, :], axis=0) - np.mean(
            ds_EN.z.values[i, index_monthly_upper.values, :, :], axis=0)
    px_c, py_c, lat = plumb_flux.ComputePlumbFluxes(
        winds_clm.u.values[i, :, :], winds_clm.v.values[i, :, :], var,
        np.zeros_like(var), ds.latitude.values, ds.longitude.values)
    tit = 'Composites differences SPV-WPV Years - ' + month[i] + '. No ENSO'
    filename = './figures/z200_plumb_composites_diff_PV_' + month[
        i] + '_NoENSO.png'
    plots.PlotCompPlumbDiff(var, px_c, py_c, ds.latitude, ds.longitude, tit,
                            filename)

for i in np.arange(0, 2):
    var = ds_EN.isel(month=range(i, i + 3)).mean(dim='month')
    var_wnd = winds_clm.isel(month=range(i, i + 3)).mean(dim='month')
    var = np.mean(var.z.values[index_monthly_lower.values, :, :],
                  axis=0) - np.mean(
                      var.z.values[index_monthly_upper.values, :, :], axis=0)
    px_c, py_c, lat = plumb_flux.ComputePlumbFluxes(var_wnd.u.values[:, :],
                                                    var_wnd.v.values[:, :],
Ejemplo n.º 4
0
winds.coords['year'] = np.arange(1981, 2017)
winds = winds.stack(realiz=['year', 'number'])
winds = winds.transpose('month', 'realiz', 'latitude', 'longitude')
hgt = xr.open_dataset(RUTA + 'hgt200.nc')
hgt.coords['year'] = np.arange(1981, 2017)
hgt = hgt.stack(realiz=['year', 'number'])
hgt = hgt.transpose('month', 'realiz', 'latitude', 'longitude')
hgt.z.values = hgt.z.values / 9.8
month = ['Aug', 'Sep', 'Oct', 'Nov']
seas = ['ASO', 'SON']
px = []
py = []
for i in np.arange(0, 4):
    pfx, pfy, lat = plumb_flux.ComputePlumbFluxes(winds.u.values[i, :, :, :],
                                                  winds.v.values[i, :, :, :],
                                                  hgt.z.values[i, :, :, :],
                                                  hgt.latitude.values,
                                                  hgt.longitude.values)
    pfx = xr.DataArray(pfx,
                       coords=[np.arange(51 * 36), lat, hgt.longitude.values],
                       dims=['realiz', 'latitude', 'logitude'])
    pfy = xr.DataArray(pfy,
                       coords=[np.arange(51 * 36), lat, hgt.longitude.values],
                       dims=['realiz', 'latitude', 'logitude'])
    px.append(pfx)
    py.append(pfy)

px = xr.concat(px, dim='month')
px['month'] = np.array([8, 9, 10, 11])
py = xr.concat(py, dim='month')
py['month'] = np.array([8, 9, 10, 11])
Ejemplo n.º 5
0
month = ['Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'Jan', 'Feb']
seas = ['ASO', 'SON', 'OND', 'NDJ', 'DJF']

hgt = xr.open_dataset(PATH_DATA + FILE_HGT_S4)
hgt = hgt - hgt.mean(dim='longitude')
winds = xr.open_dataset(PATH_DATA + FILE_WINDS, chunks={'latitude': 10})
winds = winds.transpose('month', 'realiz', 'latitude', 'longitude')
winds_clm = winds.mean(dim='realiz')

for i in np.arange(0, 7):
    var_normal = np.mean(hgt.z.values[i, :, :, :], axis=0)
    var_ninio_WPV = np.mean(hgt.z.values[i, index_ninio_WPV, :, :], axis=0)
    px_ninio_WPV, py_ninio_WPV, lat = plumb_flux.ComputePlumbFluxes(
        winds_clm.u.values[i, :, :],
        winds_clm.v.values[i, :, :], var_ninio_WPV - var_normal,
        np.zeros_like(var_ninio_WPV), hgt.latitude.values,
        hgt.longitude.values)
    #dx, dy = calc.lat_lon_grid_deltas(hgt.longitude.values, lat)
    #div_ninio_WPV = calc.divergence(px_ninio_WPV, py_ninio_WPV, dx, dy)

    var_ninia_WPV = np.mean(hgt.z.values[i, index_ninia_WPV, :, :], axis=0)
    px_ninia_WPV, py_ninia_WPV, lat = plumb_flux.ComputePlumbFluxes(
        winds_clm.u.values[i, :, :],
        winds_clm.v.values[i, :, :], var_ninia_WPV - var_normal,
        np.zeros_like(var_ninio_WPV), hgt.latitude.values,
        hgt.longitude.values)
    #div_ninia_WPV = calc.divergence(px_ninia_WPV, py_ninia_WPV, dx, dy)

    var_ninio_SPV = np.mean(hgt.z.values[i, index_ninio_SPV, :, :], axis=0)
    px_ninio_SPV, py_ninio_SPV, lat = plumb_flux.ComputePlumbFluxes(
Ejemplo n.º 6
0
index_monthly_upper = ninio34.ninio34_mon >= ninio34.ninio34_mon.quantile(
    0.90, dim='dim_0', interpolation='linear')
index_monthly_lower = ninio34.ninio34_mon <= ninio34.ninio34_mon.quantile(
    0.10, dim='dim_0', interpolation='linear')
index_monthly_normal = np.logical_and(
    ninio34.ninio34_mon < ninio34.ninio34_mon.quantile(
        0.90, dim='dim_0', interpolation='linear'), ninio34.ninio34_mon >
    ninio34.ninio34_mon.quantile(0.10, dim='dim_0', interpolation='linear'))

for i in np.arange(0, 7):
    var_pos = np.mean(
        ds.z.values[i, index_monthly_upper.values, :, :], axis=0) - np.mean(
            ds.z.values[i, index_monthly_normal.values, :, :], axis=0)
    px_pos, py_pos, lat = plumb_flux.ComputePlumbFluxes(
        winds_clm.u.values[i, :, :], winds_clm.v.values[i, :, :], var_pos,
        np.zeros_like(var_pos), ds.latitude.values, ds.longitude.values)
    var_neg = np.mean(
        ds.z.values[i, index_monthly_lower.values, :, :], axis=0) - np.mean(
            ds.z.values[i, index_monthly_normal.values, :, :], axis=0)
    px_neg, py_neg, lat = plumb_flux.ComputePlumbFluxes(
        winds_clm.u.values[i, :, :], winds_clm.v.values[i, :, :], var_neg,
        np.zeros_like(var_neg), ds.latitude.values, ds.longitude.values)
    tit = 'Composites S4 Z* Plumb 200hPa - ' + month[i]
    filename = './new_figures_decile/z200_plumb_composites_NINIO_' + month[
        i] + '.png'
    plots.PlotCompositesPlumb(var_pos, var_neg, px_pos, px_neg, py_pos, py_neg,
                              ds.latitude, ds.longitude, tit, filename)

for i in np.arange(0, 5):
    var = ds.isel(month=range(i, i + 3)).mean(dim='month')
Ejemplo n.º 7
0
index_ninia_SPV = np.logical_and(index_ninia_all.values, index_SPV_lower.values)

index_normal = np.logical_and(index_SPV_normal, index_normal_all)

month = ['Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'Jan', 'Feb']
seas = ['ASO', 'SON', 'OND', 'NDJ', 'DJF']

hgt = xr.open_dataset(PATH_DATA + FILE_HGT_S4)
hgt = hgt - hgt.mean(dim='longitude')
winds = xr.open_dataset(PATH_DATA + FILE_WINDS, chunks={'latitude':10})
winds = winds.transpose('month', 'realiz', 'latitude', 'longitude')
winds_clm = winds.mean(dim='realiz')

for i in np.arange(0, 7):
	var_normal = np.mean(hgt.z.values[i, :, :, :], axis=0)
	px, py, lat = plumb_flux.ComputePlumbFluxes(winds_clm.u.values[i, :, :], winds_clm.v.values[i, :, :], hgt.z.values[i, :, :, :], var_normal, hgt.latitude.values, hgt.longitude.values, 20000)
	dx, dy = calc.lat_lon_grid_deltas(hgt.longitude.values, lat)
	#div = calc.divergence(px, py, dx, dy)
	px_normal, py_normal = np.mean(px, axis=0), np.mean(py, axis=0)
	var_ninio_WPV = np.mean(hgt.z.values[i, index_ninio_WPV, :, :], axis=0)
	px_ninio_WPV, py_ninio_WPV = np.mean(px[index_ninio_WPV, :, :], axis=0) - px_normal, np.mean(py[index_ninio_WPV, :, :], axis=0) - py_normal
	div_ninio_WPV = calc.divergence(px_ninio_WPV, py_ninio_WPV, dx, dy)

	var_ninia_WPV = np.mean(hgt.z.values[i, index_ninia_WPV, :, :], axis=0)	
	px_ninia_WPV, py_ninia_WPV = np.mean(px[index_ninia_WPV, :, :], axis=0) - px_normal, np.mean(py[index_ninia_WPV, :, :], axis=0)  - py_normal

	div_ninia_WPV = calc.divergence(px_ninia_WPV, py_ninia_WPV, dx, dy)

	var_ninio_SPV = np.mean(hgt.z.values[i, index_ninio_SPV, :, :], axis=0)
	px_ninio_SPV, py_ninio_SPV = np.mean(px[index_ninio_SPV, :, :], axis=0) - px_normal, np.mean(py[index_ninio_SPV, :, :], axis=0)  - py_normal
hgt = hgt - hgt.mean(dim='longitude')
hgt = hgt.sel(latitude=slice(20, -90)).compute()
winds = xr.open_dataset(PATH_DATA + FILE_WINDS, chunks={'latitude':10})
winds = winds.sel(latitude=slice(20, -90)).compute()
winds = winds.transpose('month', 'realiz', 'latitude', 'longitude')
winds_clm = winds.mean(dim='realiz')

for i in np.arange(7):
	var_WPV_EN = np.mean(hgt.z.values[i, index_WPV_EN, :, :], axis=0)
	var_WPV_LN = np.mean(hgt.z.values[i, index_WPV_LN, :, :], axis=0)
	var_normal = np.mean(hgt.z.values[i, :, :, :], axis=0)
	var_SPV_EN = np.mean(hgt.z.values[i, index_SPV_EN, :, :], axis=0)
	var_SPV_LN = np.mean(hgt.z.values[i, index_SPV_LN, :, :], axis=0)	
	var_WPV_all = np.mean(hgt.z.values[i, index_WPV_all.values, :, :], axis=0)
	var_SPV_all = np.mean(hgt.z.values[i, index_SPV_all.values, :, :], axis=0)
	px_WPV, py_WPV, lat = plumb_flux.ComputePlumbFluxes(winds_clm.u.values[i, :, :], winds_clm.v.values[i, :, :], var_WPV_all - var_normal, np.zeros_like(var_WPV_EN), hgt.latitude.values, hgt.longitude.values, 5000)
	px_SPV, py_SPV, lat = plumb_flux.ComputePlumbFluxes(winds_clm.u.values[i, :, :], winds_clm.v.values[i, :, :], var_SPV_all - var_normal, np.zeros_like(var_WPV_EN), hgt.latitude.values, hgt.longitude.values, 5000)
	px_WPV_EN, py_WPV_EN, lat = plumb_flux.ComputePlumbFluxes(winds_clm.u.values[i, :, :], winds_clm.v.values[i, :, :], var_WPV_EN - var_normal, np.zeros_like(var_WPV_EN), hgt.latitude.values, hgt.longitude.values, 5000)
	px_SPV_EN, py_SPV_EN, lat = plumb_flux.ComputePlumbFluxes(winds_clm.u.values[i, :, :], winds_clm.v.values[i, :, :], var_SPV_EN - var_normal, np.zeros_like(var_WPV_EN), hgt.latitude.values, hgt.longitude.values, 5000)
	px_WPV_LN, py_WPV_LN, lat = plumb_flux.ComputePlumbFluxes(winds_clm.u.values[i, :, :], winds_clm.v.values[i, :, :], var_WPV_LN - var_normal, np.zeros_like(var_WPV_EN), hgt.latitude.values, hgt.longitude.values, 5000)
	px_SPV_LN, py_SPV_LN, lat = plumb_flux.ComputePlumbFluxes(winds_clm.u.values[i, :, :], winds_clm.v.values[i, :, :], var_SPV_LN - var_normal, np.zeros_like(var_WPV_EN), hgt.latitude.values, hgt.longitude.values, 5000)
	var ={'z1': var_SPV_all - var_normal, 'px1': px_SPV, 'py1': py_SPV,
	      'z2': var_SPV_EN - var_normal, 'px2': px_SPV_EN, 'py2': py_SPV_EN,
	      'z3': var_SPV_LN - var_normal, 'px3': px_SPV_LN, 'py3': py_SPV_LN,
	      'z4': var_WPV_all - var_normal, 'px4': px_WPV, 'py4': py_WPV,
	      'z5': var_WPV_EN - var_normal, 'px5': px_WPV_EN, 'py5': py_WPV_EN,
	      'z6': var_WPV_LN - var_normal, 'px6': px_WPV_LN, 'py6': py_WPV_LN}
	tit = 'Composites S4 Z* and Plumb Fluxes 50hPa SPoV Conditioned - ENSO - ' + month[i]
	filename = FIG_PATH + 'z50_pf_composites_SPoV_' + month[i] +'_ENSO_q.png'

	plots.PlotPoVCompositesENSOZPF(var, hgt.latitude, hgt.longitude, tit, filename)