sstsave = sstsave.subRegion(latitude=(latbounds[0], latbounds[1]),
                            longitude=(lonbounds[0], lonbounds[1]))
fieldsave = fieldsave.subRegion(latitude=(latbounds[0], latbounds[1]),
                                longitude=(lonbounds[0], lonbounds[1]))

lats = sst.getLatitude()[:]
lons = sst.getLongitude()[:]
nt = sst.shape[0]
lons[0] = 0
nlat = len(lats)
nlon = len(lons)

#Regress out CTI
if rENSO:
    CTIlag = 2
    sst = regressout_x(sst[CTIlag:, ...], CTI[:-CTIlag])
    #field = regressout_x(field[CTIlag:,...], CTI[:-CTIlag])
    field = field[CTIlag:, ...]
    tyears = tyears[CTIlag:, ...]
#field = regressout_x(field, CTI)

nt = sst.shape[0]

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

#subtract global annual mean to isolate local processes
#sstprime = sst.T - sst_globe
Example #2
0
# 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_enso = 12.*2
cutoff_enso = 1/Tn_enso  # 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) 

sste = st2.regressout_x(enso, sste)
Q_se = st2.regressout_x(enso, Q_se)
Q_re = st2.regressout_x(enso, Q_re)
Q_tote = st2.regressout_x(enso, Q_tote)
    
#lambdaQ_totlag0 = st.cov(sste, Q_tote, lagx=0)/st.cov(sste,sste, lagx=0)
lambdaQ_totlag1 = st.cov(sste, Q_tote, lagx=-1)/st.cov(sste,sste, lagx=-1)
#lambdaQ_totlag2 = st.cov(sste, Q_tote, lagx=-2)/st.cov(sste,sste, lagx=-2)
#lambdaQ_totlag3 = st.cov(sste, Q_tote, lagx=-3)/st.cov(sste,sste, lagx=-3)

#lambdaQ_tot = (lambdaQ_totlag1 + lambdaQ_totlag2 + lambdaQ_totlag3)/3.

lambdaQ_tot = lambdaQ_totlag1
#lambdaQ_tot = lambdaQ_totlag3

#lambda: find the 'response' time of the atmosphere (lets just assume global mean e-folding sst autocorrelation time)
Example #3
0
#NAminlati = 0
#NAmaxlati = -1
#NAminloni = 0
#NAmaxloni = -1

lats = field.getLatitude()[:]
lons = field.getLongitude()[:]
nlat = len(lats)
nlon = len(lons)
nt = field.shape[0]
#interpolate to coarser grid to speed up
#sst= sst.regrid(cgrid, regridTool="esmf", regridMethod = "linear")
#field = field.regrid(cgrid, regridTool="esmf", regridMethod = "linear")

#regress out CTI from all fields
sst_MM = regressout_x(sst, CTI)
#field = regressout_x(field, CTI)
#u = regressout_x(u, CTI)
#v = regressout_x(v, CTI)
#ps = regressout_x(ps, CTI)

#MMlatbounds = [-30,30]
#MMlonbounds = [290,360]
#
#MMlatboundmini = np.argmin(np.abs(MMlatbounds[0]-lats))
#eqi = np.argmin(np.abs(0 - lats))
#MMlatboundmaxi = np.argmin(np.abs(MMlatbounds[1]-lats))
#MMlonboundmini = np.argmin(np.abs(MMlonbounds[0]-lons))
#MMlonboundmaxi = np.argmin(np.abs(MMlonbounds[1]-lons))
#
#sst_MMNH = sst_MM[:,eqi:MMlatboundmaxi,MMlonboundmini:MMlonboundmaxi]
Example #4
0
# SW_net_surf = SW_net_surf.fillna(0.)    
# SW_net_surf = xr.DataArray(signal.detrend(SW_net_surf, axis=0), dims=SW_net_surf.dims, coords=SW_net_surf.coords) 
 
 # Q_ek = Q_ek.fillna(0.)    
 # Q_ek = xr.DataArray(signal.detrend(Q_ek, axis=0), dims=Q_ek.dims, coords=Q_ek.coords) 
# 
#  
# Q_ek_f = Q_ek_f.fillna(0.)    
# Q_ek_f = xr.DataArray(signal.detrend(Q_ek_f, axis=0), dims=Q_ek_f.dims, coords=Q_ek_f.coords) 
 
Tn = 6.
cutoff = 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))) 
 
if rENSO:
    sst = st2.regressout_x(enso, sst)
    #thf = st2.regressout_x(enso, thf)
    Qs = st2.regressout_x(enso, Qs)


#eqi = np.where(lats[1:-1]==0)
#Q_ek[:,eqi,:] = 0
#Q_ek_test = Q_ek
 

#adv_hs = -(adv_hDivH['X'] + adv_hDivH['Y'])/vol
 
 # Filter requirements.
order = 5
fs = 1     # sample rate, (cycles per month)
Tn =4.*12
Example #5
0
#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):
    Tn = 0.

if rENSO:
    sste = st2.regressout_x(enso, sst)
    Q_se = st2.regressout_x(enso, Q_s)
    Q_re = st2.regressout_x(enso, Q_r)
    Q_tote = st2.regressout_x(enso, Q_tot)

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

#lambdaQ_tot = st.cov(sste, Q_tote, lagx=-1)/st.cov(sste,sste, lagx=-1)

lambdaQ_totlag0 = st.cov(sste, Q_tote, lagx=0) / st.cov(sste, sste, lagx=0)
lambdaQ_totlag1 = st.cov(sste, Q_tote, lagx=-1) / st.cov(sste, sste, lagx=-1)
lambdaQ_totlag2 = st.cov(sste, Q_tote, lagx=-2) / st.cov(sste, sste, lagx=-2)
lambdaQ_totlag3 = st.cov(sste, Q_tote, lagx=-3) / st.cov(sste, sste, lagx=-3)

#lambdaQ_tot = (lambdaQ_totlag1 + lambdaQ_totlag2 + lambdaQ_totlag3)/3.
#NAminlati = 0
#NAmaxlati = -1
#NAminloni = 0
#NAmaxloni = -1

lats = field.getLatitude()[:]
lons = field.getLongitude()[:]
nlat = len(lats)
nlon = len(lons)
nt = field.shape[0]
#interpolate to coarser grid to speed up 
#sst= sst.regrid(cgrid, regridTool="esmf", regridMethod = "linear")
#field = field.regrid(cgrid, regridTool="esmf", regridMethod = "linear")

#regress out CTI from all fields
sst = regressout_x(sst, CTI)
field = regressout_x(field, CTI)
u = regressout_x(u, CTI)
v = regressout_x(v, CTI)

MMlatbounds = [-30,30]
MMlonbounds = [290,360]

MMlatboundmini = np.argmin(np.abs(MMlatbounds[0]-lats))
eqi = np.argmin(np.abs(0 - lats))
MMlatboundmaxi = np.argmin(np.abs(MMlatbounds[1]-lats))
MMlonboundmini = np.argmin(np.abs(MMlonbounds[0]-lons))
MMlonboundmaxi = np.argmin(np.abs(MMlonbounds[1]-lons))

sst_MMNH = sst[:,eqi:MMlatboundmaxi,MMlonboundmini:MMlonboundmaxi]
sst_MMSH = sst[:,MMlatboundmini:eqi,MMlonboundmini:MMlonboundmaxi]
#timeslice = slice(0,nt)
timeslice = slice(int(Tn),nt-int(Tn))

Q_s = Q_s.isel(time=timeslice)
Qr = Qr.isel(time=timeslice)
tendsst = tendsst.isel(time=timeslice)
sst = sst.isel(time=timeslice)

Tn = 6.
cutoff = 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,fs,order) 

if rENSO:
   sst = st2.regressout_x(enso, sst)

#Gulf Stream 37.5–45N, 72–42W
wlon=288
elon=318
nlat = 45
slat = 37.5

#Kuroshio 36–42N, 140–171E
# wlon=142
# elon=180
# nlat = 45
# slat = 36

#Eastern North Pacific
# wlon=190
 Q_net_surf = Q_net_surf.fillna(0.)    
 Q_net_surf = xr.DataArray(signal.detrend(Q_net_surf, axis=0), dims=Q_net_surf.dims, coords=Q_net_surf.coords) 
 
 #Q_ek = Q_net_surf.fillna(0.)    
 #Q_ek = xr.DataArray(signal.detrend(Q_ek, axis=0), dims=Q_ek.dims, coords=Q_ek.coords) 
 
lats = sst.lat
lons = sst.lon
 
Tn = 6.
cutoff = 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))) 
 
  
if rENSO:
    sst = st2.regressout_x(enso, sst)
    thf = st2.regressout_x(enso, thf)
    Q_net_surf = st2.regressout_x(enso, Q_net_surf)

 
 # Filter requirements.
order = 5
fs = 1     # sample rate, (cycles per month)

delTn = 4
Tnmax = 6*12
Tns = np.arange(0,Tnmax+delTn,delTn)

Tns = Tns*1.

sst = sst.subRegion(latitude=(latbounds[0], latbounds[1]),
                    longitude=(lonbounds[0], lonbounds[1]))
field = field.subRegion(latitude=(latbounds[0], latbounds[1]),
                        longitude=(lonbounds[0], lonbounds[1]))

lats = sst.getLatitude()[:]
lons = sst.getLongitude()[:]
nt = sst.shape[0]
lons[0] = 0
nlat = len(lats)
nlon = len(lons)

#Regress out CTI
if rENSO:
    CTIlag = 2
    sst = regressout_x(sst[CTIlag:, ...], CTI[:-CTIlag])
    field = regressout_x(field[CTIlag:, ...], CTI[:-CTIlag])
    #field = field[CTIlag:,...]
    tyears = tyears[CTIlag:, ...]
#field = regressout_x(field, CTI)

nt = sst.shape[0]

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

#subtract global annual mean to isolate local processes
#sstprime = sst.T - sst_globe
                        longitude=(lonbounds[0], lonbounds[1]))

lats = sst.getLatitude()[:]
lons = sst.getLongitude()[:]
nt = sst.shape[0]
lons[0] = 0
nlat = len(lats)
nlon = len(lons)

#NAminlati = 0
#NAmaxlati = -1
#NAminloni = 0
#NAmaxloni = -1

#Regress out CTI
sst_test = regressout_x(sst, CTI)
field = regressout_x(field, CTI)

#CHANGE THIS TO MODIFY RM WINDOW LENGTH
N_map = 5 * 12 + 1
ci = (N_map - 1) / 2
ltlag = 5
stlag = 1

#lagmax=3
lagmax = 120
lagstep = 24
lags = np.arange(-lagmax, lagmax + 2 * lagstep, lagstep)

#lags = np.arange(-3,0,6,3)