Example #1
0
#cov_thfRnet = st2.cov(-thf,Q_net_surf)
#cov_QrRnet = st2.cov(Qr, Q_net_surf)
#
#cov_thfthf = st2.cov(-thf,-thf)
#cov_Qrthf = st2.cov(Qr,-thf)
#
#cov_QrQr = st2.cov(Qr,Qr)

#cov_QrRnet = st2.cov(Qr,Q_net_surf)
#cov_QsRnet = st2.cov(Q_s,Q_net_surf)
#cov_QrQs = st2.cov(Qr,Q_s)

#cov_ssttend = st2.cov(tendsst,tendsst)

# Compute lagged sst autocorrelations
r1corrs = st2.cor(sst, sst, lagx=1)
r2corrs = st2.cor(sst, sst, lagx=2)

# Scaling factor (to convert from units of W*K/(s*m^2) to K^2)
fac = (2 * dt**2 / (Cbar * (1 - r2corrs)))

#fac=(dt**2)/(2*Cbar*(1-r1corrs))

G = fac / Cbar

# Compute observed SST variance
T_var = sst.var(dim='time')

H_var = (Cbar * tendsst).var(dim='time')

# Compute contributions to SST variance
Example #2
0
#timeslice = slice(0,nt)
#timeslice = slice(int(Tn),nt-int(Tn))

# Q_s = Q_s.isel(time=timeslice)
# Q_r = Q_r.isel(time=timeslice)
# tendsst = tendsst.isel(time=timeslice)
# sst = sst.isel(time=timeslice)

order = 5
fs = 1  # sample rate, (cycles per month)
Tn = 4. * 12.
cutoff = 1 / Tn  # desired cutoff frequency of the filter (cycles per month)

if lowpass:
    sst_lp = st.butter_lowpass_filter_xr(sst, cutoff, fs, order)
    r2corrs = st2.cor(sst_lp, sst_lp, lagx=2)
else:
    r2corrs = st2.cor(sst, sst, lagx=2)

#Niño 3.4 (5N-5S, 170W-120W

order = 5
fs = 1  # sample rate, (cycles per month)
Tn_enso = 6.
cutoff_enso = 1 / Tn  # desired cutoff frequency of the filter (cycles per month)
enso = st2.spatial_ave_xr(sst.sel(lon=slice(190, 240)),
                          lats=lats.sel(lat=slice(-5, 5)))

enso = st.butter_lowpass_filter_xr(enso, cutoff_enso, fs, order)

if not (lowpass):
Example #3
0
field = Q_s
fieldname = 'Qs'
fieldtitle = r'$Q_s$'
if corr:
    units = ''
else:
    units = r'W/m$^2$'

for ll, lag in enumerate(lags):
    
    print('lag',lag)
    
    print 
    
    if corr:
       lagcorrs[ll,:] = st2.cor(field,sst,lagx=lag)
    else:
       # Standardize SST
       sst = (sst - sst.mean(dim='time'))/sst.std(dim='time')
       lagcorrs[ll,:], intercept = st2.reg(field,sst,lagx=lag)
    

# Plotting
bnds = [np.round(lonbounds[0]-359), np.round(lonbounds[1]-361), latbounds[0], latbounds[1]]

cent = (bnds[0]+bnds[1])/2.
prj = cart.crs.PlateCarree(central_longitude=cent)

pardiff = 30.
merdiff = 60.
if lonbounds[1] - lonbounds[0] <= 180:
Example #4
0
x1 = lonbounds[0]
x2 = lonbounds[1]
y1 = latbounds[0]
y2 = latbounds[1]

#Q_s = a1*Q_o + residual
#Q_s = a1*Q_o + Q_{s,r}
a1, b = st2.reg(Qr, Q_s)

Q_s_o = a1 * Qr

Q_s_r = Q_s - Q_s_o

Q_s_o = Q_s_o.transpose('time', 'lat', 'lon')

a1_test = st2.cor(Q_s_o, Q_s_r)

lats_ave = lats.sel(lat=slice(latbounds[0], latbounds[1]))

Qs_sa = st2.spatial_ave_xr(
    Q_s.sel(lat=slice(latbounds[0], latbounds[1]),
            lon=slice(lonbounds[0], lonbounds[1])), lats_ave)
Qo_sa = st2.spatial_ave_xr(
    Qr.sel(lat=slice(latbounds[0], latbounds[1]),
           lon=slice(lonbounds[0], lonbounds[1])), lats_ave)
tendsst_sa = st2.spatial_ave_xr(
    tendsst.sel(lat=slice(latbounds[0], latbounds[1]),
                lon=slice(lonbounds[0], lonbounds[1])), lats_ave)
Cbar_sa = st2.spatial_ave_xr(
    Cbar.sel(lat=slice(latbounds[0], latbounds[1]),
             lon=slice(lonbounds[0], lonbounds[1])), lats_ave)
Example #5
0
    fieldname = 'Qs'
    fieldtitle = r'$Q_s$'
    color='C0'
    if corr:
        units = ''
    else:
        units = r'W/m$^2$'
    
    for ll, lag in enumerate(lags):
        
        #print('lag',lag)
        
        print 
        
        if corr:
           lagcorrs[ll,:] = st2.cor(sst,field,lagx=-lag)
        else:
           # Standardize SST
           sst = (sst - sst.mean(dim='time'))/sst.std(dim='time')
           lagcorrs[ll,:], intercept = st2.reg(sst,field,lagx=-lag)
        
    avelagcorrs[jj,:] = st2.spatial_ave(np.ma.array(lagcorrs, mask = np.isnan(lagcorrs)), lats)
        

# Plotting
    
vmin=-0.6
vmax=0.6
cbstep=0.2
if not(corr):
   vmin=-15.0