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