Up: Associated Legendre routines


plm_mvalues_gen


subroutine plm_mvalues_gen( pixelization, scan, npols, nlmax, nmmax, nmvals, mvals, lda, nplm, plm)

Purpose:

for each procs pre-computes the associated Legendre for all observed rings (as defined by scan) all values of l ([0, nlmax]) and a subset of m as defined in mvals.

Parameters:

input:
pixelization-- [pixeltype], an S2HAT structure containing the info about the pixelization;

scan-- [scandef], an S2HAT structure containing the info about the sky coverage;

npols--, a number of harmonic types to be pre-computed (=1 (for scalar only) or 3 (for all scalar + spin 2);

nlmax-- [integer(4b)], maximum value of l (included);

nmmax-- [integer(4b)], maximum value of m (included);

nmvals-- [integer(4b)], a number of m values to be processed by a given proc;

mvals-- [integer(4b)], a vector of a length nmvals containing a list of m values to be processed by a given proc;

lda-- [integer(4b)], defines the leading dimension of the local_plm matrix. Accepted values: lda == npols or nlmax;

nplm-- [integer(8b)], defines one of the two dimensions of the local_plm array. It is equal to a product of a number of all observed rings (assumed to be from the Northern hemisphere plus equator owing to the assumed pixelization symmetry) times a number of all l,m processed by a given proc.

output:

local_plm-- [real(dp)], an allocated (if needed) pointer to a 2dim array. It is relevant only if precompute_plms is not zero, and then: if precommpute_plms == 1, it contains only scalar Plm precomputed for every ring of the map and subset of m values as defined by a vector mvals. If precompute_plms == 2, it stores a scalar and two spin-2 harmonics (the conventions and normalizations of which are as defined in Healpix. The layout of the array depends on the value of lda parameter as for the local_alm array (and must agree with it),

(1:nprec,0:nplm-1), if lda == npols;      (HEALpix convention);
(0:nplm-1,1:nprec), if lda == nlmax;      (S2HAT convention);

where

nprec = 1 if precompute_plms == 1, i.e., only scalar Plm are precomputed,
nprec = 3 if precompute_plms == 2, i.e., scalar and spin-2 Plm are precomputed.


  • We note that in the latter case what is computed are two linear combinations of spin +2 and -2 functions, i.e.,

      1/2 ( +2Plm + -2Plm)

    and

      1/2 ( +2Plm - -2Plm)

    respectively, rather than spin-weighted functions themselves.

  • Also the computed Legendre functions are all normalized as spherical harmonics.


The output vector, local_plm, does not store any more zeros, i.e., l and m modes with m>l are not included. The ordering of the results is such that for every observed ring, r, the Legendre functions are stored m-mode by m-mode, and for each m we store consecutively all l-modes going from l=m to l=lmax. Each proc computes only the m modes assigned to it and defined in the mvals vector. The observed rings are always assumed to belong to the Northern Hemisphere and are stored in the order from the North Pole towards the equator.

More info can be found here.



Up: Associated Legendre routines Top:

radek stompor 2007-09-15