This routine produces the maps of arbitrary spin s and -s given their alm coefficients. A (complex) map S of spin s is a linear combination of the spin weighted harmonics sYlm
{_s}S(p) = \sum_{lm} {_s}a_{lm}\ \ {_s}Y_{lm}(p)
\end{displaymath} (3)

for $l \ge \vert m\vert, l \ge \vert s\vert$, and is such that sS* = -sS.
The usual phase convention for the spin weighted harmonics is sYlm* = (-1)s+m -sYl-m and therefore salm* = (-1)s+m -sal-m.

alm2map_spin* expects the alm coefficients to be provided as
|s|a+lm $\textstyle \myequal$ - ( |s|alm + (-1)s -|s|alm )/2 (4)
|s|a-lm $\textstyle \myequal$ - ( |s|alm - (-1)s -|s|alm )/(2i) (5)

for $m\ge 0$, knowing that, just as for spin 0 maps, the coefficients for m<0 are given by
|s|a+l-m $\textstyle \myequal$ (-1)m |s|a+*lm, (6)
|s|a-l-m $\textstyle \myequal$ (-1)m |s|a-*lm. (7)

The two (real) maps produced by alm2map_spin* are  defined respectively as
|s|S+ $\textstyle \myequal$ (|s|S + -|s|S)/2 (8)
|s|S- $\textstyle \myequal$ (|s|S - -|s|S)/(2i). (9)

With these definitions, 2a+, 2a-, 2S+ and 2S- match HEALPix polarization aE, aB, Q and U respectively. However, for s=0, $\ _{0}a^+_{lm} = -a^T_{lm}$, $\ _{0}a^-_{lm} = 0$, $\ {_0}S^+ = T$, $\ {_0}S^- = 0.$

Location in HEALPix directory tree: src/f90/mod/alm_tools.F90 


call alm2map_spin*( nsmax, nlmax, nmmax, spin, alm, map )


name & dimensionality kind in/out description
nsmax I4B IN the Nside value of the map to synthesize.
nlmax I4B IN the maximum l value used for the alm.
nmmax I4B IN the maximum m value used for the alm.
spin I4B IN spin s of the maps to be generated (only its absolute value is relevant).
alm(1:2, 0:nlmax, 0:nmmax) SPC/ DPC IN The |s|a+lm and |s|a-lm values to make the map from.
map(0:12*nsmax**2-1, 1:2) SP/ DP OUT |s|S+ and |s|S- output maps


use healpix_types
use pix_tools, only : nside2npix
use alm_tools, only : alm2map_spin
integer(I4B) :: nside, lmax, mmax, npix, spin
real(SP), dimension(:,:), allocatable :: map
complex(SPC), dimension(:,:,:), allocatable :: alm
nside=256 ; lmax=512 ; mmax=lmax ; spin=4
call alm2map_spin(nside, lmax, mmax, spin, alm, map)
Make spin-4 maps from the alm passed in alm. The maps have Nside of 256, and are constructed from alm values up to 512 in l and m.


This section lists the modules and routines used by alm2map_spin*.

Performs FFT over m for synthesis of the rings.
compute_lam_mm, get_pixel_layout,
gen_lamfac_der, gen_mfac, gen_mfac_spin, do_lam_lm_spin,
gen_recfac, gen_recfac_spin, init_rescale, l_min_ylm
Ancillary routines used for Ylm recursion
module, containing:
routine to print error message, when an array can not be allocated properly
Note: Starting with version 2.20, libpsht routines will be called if $0 < \vert s\vert \le 100$.


This section lists the routines related to alm2map_spin*

routine generating maps of temperature and polarisation from their alm
routine generating maps of temperature and polarisation, and their spatial derivatives, from their alm
routine performing the inverse transform of alm2map.
routine to generate randomly distributed alm coefficients according to a given power spectrum

Version 3.31, 2017-01-06