Compute the gradient of a scalar function and return grids of the two horizontal components that conform with Driscoll and Healy’s (1994) sampling theorem.

Usage

`theta`, `phi` = MakeGradientDH (`cilm`, [`lmax`, `sampling`, `lmax_calc`, `extend`])

Returns

theta : float, dimension (nlat, nlong)
A 2D map of the theta component of the horizontal gradient that conforms to the sampling theorem of Driscoll and Healy (1994). If sampling is 1, the grid is equally sampled and is dimensioned as (n by n), where n is 2lmax+2. If sampling is 2, the grid is equally spaced and is dimensioned as (n by 2n). The first latitudinal band of the grid corresponds to 90 N, the latitudinal sampling interval is 180/n degrees, and the default behavior is to exclude the latitudinal band for 90 S. The first longitudinal band of the grid is 0 E, by default the longitudinal band for 360 E is not included, and the longitudinal sampling interval is 360/n for an equally sampled and 180/n for an equally spaced grid, respectively. If extend is 1, the longitudinal band for 360 E and the latitudinal band for 90 S will be included, which increases each of the dimensions of the grid by 1.
phi : float, dimension (nlat, nlong)
A 2D equally sampled or equally spaced grid of the phi component of the horizontal gradient.

Parameters

cilm : float, dimension (2, lmaxin+1, lmaxin+1)
The real 4-pi normalized spherical harmonic coefficients of a scalar function. The coefficients c1lm and c2lm refer to the cosine and sine coefficients, respectively, with c1lm=cilm[0,l,m] and c2lm=cilm[1,l,m].
lmax : optional, integer, default = lmaxin
The maximum spherical harmonic degree of the coefficients cilm. This determines the number of samples of the output grids, n=2lmax+2, and the latitudinal sampling interval, 90/(lmax+1).
sampling : optional, integer, default = 2
If 1 (default) the output grids are equally sampled (n by n). If 2, the grids are equally spaced (n by 2n).
lmax_calc : optional, integer, default = lmax
The maximum spherical harmonic degree used in evaluating the functions. This must be less than or equal to lmax.
extend : input, optional, bool, default = False
If True, compute the longitudinal band for 360 E and the latitudinal band for 90 S. This increases each of the dimensions of griddh by 1.

Description

MakeGradientDH will compute the horizontal gradient of a scalar function on a sphere defined by the spherical harmonic coefficients cilm. The output grids of the theta and phi components of the gradient are either equally sampled (n by n) or equally spaced (n by 2n) in latitude and longitude. The gradient is given by the formula

Grad F = 1/r dF/theta theta-hat + 1/(r sin theta) dF/dphi phi-hat.

where theta is colatitude and phi is longitude. The radius r is taken from the degree zero coefficient of the input function.

The default is to use an input grid that is equally sampled (n by n), but this can be changed to use an equally spaced grid (n by 2n) by the optional argument sampling. The redundant longitudinal band for 360 E and the latitudinal band for 90 S are excluded by default, but these can be computed by specifying the optional argument extend.

Reference

Driscoll, J.R. and D.M. Healy, Computing Fourier transforms and convolutions on the 2-sphere, Adv. Appl. Math., 15, 202-250, 1994.

Tags: python
Edit me