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),
where
- We note that in the latter case what is computed are two linear combinations of spin +2 and -2 functions, i.e.,
and
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.
|