Ejemplo n.º 1
0
def compute_wk(data, lon, lat):

    # - get dx and dy
    dx, dy = wfs.get_dx_dy(data[0], lon, lat)

    #... Detrend data in all dimension ...
    ssh_detrended = wfs.detrendn(data, axes=[0, 1, 2])

    #... Apply hanning windowing ...')
    ssh_hanning = wfs.apply_window(ssh_detrended,
                                   data.dims,
                                   window_type='hanning')

    #... Apply hanning windowing ...')
    ssh_hat = xfft.fft(ssh_hanning,
                       dim=('time', 'x', 'y'),
                       dx={
                           'x': dx,
                           'y': dx
                       },
                       sym=True)

    #... Apply hanning windowing ...')
    ssh_psd = xfft.psd(ssh_hat)

    #... Get frequency and wavenumber ...
    frequency = ssh_hat.f_time
    kx = ssh_hat.f_x
    ky = ssh_hat.f_y

    #... Get istropic wavenumber ...
    wavenumber, kradial = wfs.get_wavnum_kradial(kx, ky)

    #... Get numpy array ...
    ssh_psd_np = ssh_psd.values

    #... Get 2D frequency-wavenumber field ...
    SSH_wavenum_freq_spectrum = wfs.get_f_k_in_2D(kradial, wavenumber,
                                                  ssh_psd_np)

    return wavenumber, frequency, SSH_wavenum_freq_spectrum
print('Apply hanning windowing')
v_JFM = wfs.apply_window(v_JFM, v_JFM.dims, window_type='hanning')

#... Apply hanning windowing ...')
print('FFT ')
v_JFMhat = xfft.fft(v_JFM,
                    dim=('time_counter', 'x', 'y'),
                    dx={
                        'x': dx_JFM,
                        'y': dx_JFM
                    },
                    sym=True)

#... Apply hanning windowing ...')
print('PSD ')
v_JFM_psd = xfft.psd(v_JFMhat)

#... Get frequency and wavenumber ...
print('Get frequency and wavenumber')
frequency_JFM = v_JFMhat.f_time_counter
kx_JFM = v_JFMhat.f_x
ky_JFM = v_JFMhat.f_y

#... Get istropic wavenumber ...
print('Get istropic wavenumber')
wavenumber_JFM, kradial_JFM = wfs.get_wavnum_kradial(kx_JFM, ky_JFM)

#... Get numpy array ...
print('Get numpy array')
v_JFM_psd_np = v_JFM_psd.values
print('Apply hanning windowing')
u_JFM = wfs.apply_window(u_JFM, u_JFM.dims, window_type='hanning')

#... Apply hanning windowing ...')
print('FFT ')
u_JFMhat = xfft.fft(u_JFM,
                    dim=('time_counter', 'x', 'y'),
                    dx={
                        'x': dx_JFM,
                        'y': dx_JFM
                    },
                    sym=True)

#... Apply hanning windowing ...')
print('PSD ')
u_JFM_psd = xfft.psd(u_JFMhat)

#... Get frequency and wavenumber ...
print('Get frequency and wavenumber')
frequency_JFM = u_JFMhat.f_time_counter
kx_JFM = u_JFMhat.f_x
ky_JFM = u_JFMhat.f_y

#... Get istropic wavenumber ...
print('Get istropic wavenumber')
wavenumber_JFM, kradial_JFM = wfs.get_wavnum_kradial(kx_JFM, ky_JFM)

#... Get numpy array ...
print('Get numpy array')
u_JFM_psd_np = u_JFM_psd.values
                    dx={
                        'x': dx_JAS,
                        'y': dx_JAS
                    },
                    sym=True)
v_JAShat = xfft.fft(v_JAS,
                    dim=('time_counter', 'x', 'y'),
                    dx={
                        'x': dx_JAS,
                        'y': dx_JAS
                    },
                    sym=True)

#... Apply hanning windowing ...')
print('PSD ')
u_JAS_psd = xfft.psd(u_JAShat)
v_JAS_psd = xfft.psd(v_JAShat)

#... Get frequency and wavenumber ...
print('Get frequency and wavenumber')
frequency_JAS = u_JAShat.f_time_counter
kx_JAS = u_JAShat.f_x
ky_JAS = u_JAShat.f_y

#... Get istropic wavenumber ...
print('Get istropic wavenumber')
wavenumber_JAS, kradial_JAS = wfs.get_wavnum_kradial(kx_JAS, ky_JAS)

#... Get numpy array ...
print('Get numpy array')
u_JAS_psd_np = u_JAS_psd.values