Spherical Harmonic Transforms
- SWAMPE.spectral_transform.PmnHmn(J, M, N, mus)
Calculates the values of associated Legendre polynomials and their derivatives evaluated at Gaussian latitudes (mus) up to wavenumber M.
- Parameters:
J (int) – number of latitudes
M (int) – highest wavenumber for associated Legendre polynomials
N (int) – highest degree of the Legendre functions for m=0
mus (array of floats) – Gaussian latitudes
- Returns:
Pmn array (associated legendre polynomials), Hmn array (derivatives of Pmn*(1-x^2)), both evaluated at the Gaussian latitudes mus
- Return type:
array of float
- SWAMPE.spectral_transform.diagnostic_eta_delta(Um, Vm, fmn, I, J, M, N, Pmn, Hmn, w, tstepcoeff, mJarray, dt)
Computes vorticity and divergence from zonal and meridional wind fields. This is a diagnostic relationship. For details, see Hack and Jakob (1992) equations (5.26)-(5.27).
Parameters
- param Um:
Fourier coefficient of zonal winds
- type Um:
array of float
- param Vm:
Fourier coefficient of meridional winds
- type Vm:
array of float
- param fmn:
spectal coefficients of the Coriolic force
- type fmn:
array of float
- param I:
number of longitudes
- type I:
int
- param J:
number of Gaussian latitudes
- type J:
int
- param M:
highest wavenumber for associated Legendre polynomials
- type M:
int
- param N:
highest degree of associated Legendre polynomials
- type N:
int
- param Pmn:
values of the associated Legendre polynomials at Gaussian latitudes mus up to wavenumber M
- type Pmn:
array of float64
- param Hmn:
values of the associated Legendre polynomial derivatives at Gaussian latitudes up to wavenumber M
- type Hmn:
array of float
- param w:
Gauss Legendre weights
- type w:
array of float
- param tstepcoeff:
a coefficient for time-stepping of the form 2dt/(a(1-mus^2) from Hack and Jakob (1992)
- type tstepcoeff:
array of float
- param mJarray:
coefficients equal to m=0,1,…,M
- type mJarray:
array of float
- param dt:
time step, in seconds
- type dt:
float Returns
Absolute vorticity
- newdelta
Divergence
- etamn
Spectral coefficients of absolute vorticity
- deltamn
Spectral coefficients of divergence
- rtype:
array of float
- SWAMPE.spectral_transform.fwd_fft_trunc(data, I, M)
Calculates and truncates the fast forward Fourier transform of the input.
- Parameters:
data (array of float) – array of dimension IxJ (usually the values of state variables at lat-long coordinates)
I (int) – number of longitudes
M (int) – highest wavenumber for associated Legendre polynomials
- Return datam:
Fourier coefficients 0 through M
- Rtype datam:
array of complex
- SWAMPE.spectral_transform.fwd_leg(data, J, M, N, Pmn, w)
Calculates the forward legendre transform.
- Parameters:
data (array of float or array of complex) – input to be transformed (usually output of fft)
J (int) – number of latitudes
M (int) – highest wavenumber for associated Legendre polynomials
N (int) – highest degree of the Legendre functions for m=0
Pmn (array of float) – associated legendre functions evaluated at the Gaussian latitudes mus up to wavenumber M
w (array of float) – Gauss Legendre weights
- Return legcoeff:
Legendre coefficients (if data was output from FFT, then legcoeff are the spectral coefficients)
- Rtype legcoeff:
array of complex
- SWAMPE.spectral_transform.invrsUV(deltamn, etamn, fmn, I, J, M, N, Pmn, Hmn, tstepcoeffmn, marray)
Computes the wind velocity from the values of vorticity and divergence. This is a diagnostic relationship. For details, see Hack and Jakob (1992) equations (5.24)-(5.25).
Parameters
- param deltamn:
Fourier coefficients of divergence
- type deltamn:
array of complex
- param etamn:
Fourier coefficients of vorticity
- type etamn:
array of complex
- param fmn:
spectral coefficients of the Coriolis force
- type etamn:
array of float
- param I:
number of longitudes
- type I:
int
- param J:
number of latitudes
- type J:
int
- param M:
highest wavenumber for associated Legendre polynomials
- type M:
int
- param N:
highest degree of associated Legendre polynomials
- type N:
int
- param Pmn:
values of the associated Legendre polynomials at Gaussian latitudes mus up to wavenumber M
- type Pmn:
array of float
- param Hmn:
values of the associated Legendre polynomial derivatives at Gaussian latitudes up to wavenumber M
- type Hmn:
array of float
- param tstepcoeffmn:
coefficient to scale spectral components
- type tstepcoeffmn:
array of float
- param marray:
array to multiply a quantity by a factor of m ranging from 0 through M.
- type marray:
array of float
Returns
- return:
- Unew
Zonal velocity component
- Vnew
Meridional velocity component
- rtype:
array of float
- SWAMPE.spectral_transform.invrs_fft(approxXim, I)
Calculates the inverse Fourier transform.
- Parameters:
approxXim (array of complex) – Fourier coefficients
I (int) – number of longitudes
- Returns:
long-lat coefficients
- Return type:
array of complex
- SWAMPE.spectral_transform.invrs_leg(legcoeff, I, J, M, N, Pmn)
Calculates the inverse Legendre transform.
- Parameters:
legcoeff (array of complex) – Legendre coefficients
J (int) – number of latitudes
M (int) – highest wavenumber for associated Legendre polynomials
Pmn (array of float) – associated legendre functions evaluated at the Gaussian latitudes mus up to wavenumber M
- Returns:
transformed spectral coefficients
- Return type:
array of complex