1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
2
3<!--Converted with LaTeX2HTML 2018.3 (Released July 19, 2018) -->
4<HTML lang="EN">
5<HEAD>
6<TITLE>map2alm_iterative*</TITLE>
7<META NAME="description" CONTENT="map2alm_iterative*">
8<META NAME="keywords" CONTENT="subroutines">
9<META NAME="resource-type" CONTENT="document">
10<META NAME="distribution" CONTENT="global">
11
12<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
13<META NAME="viewport" CONTENT="width=device-width, initial-scale=1.0">
14<META NAME="Generator" CONTENT="LaTeX2HTML v2018.3">
15   <link rel='apple-touch-icon' sizes='180x180' href='images/favicons/apple-touch-icon.png?v=2017'>
16   <link rel='icon' type='image/png' sizes='32x32' href='images/favicons/favicon-32x32.png?v=2017'>
17   <link rel='icon' type='image/png' sizes='16x16' href='images/favicons/favicon-16x16.png?v=2017'>
18   <link rel='manifest' href='images/favicons/manifest.json?v=2017'>
19   <link rel='mask-icon' href='images/favicons/safari-pinned-tab.svg?v=2017' color='#5bbad5'>
20   <link rel='shortcut icon' href='images/favicons/favicon.ico?v=2017'>
21   <meta name='apple-mobile-web-app-title' content='HEALPix'>
22   <meta name='application-name' content='HEALPix'>
23   <meta name='msapplication-config' content='images/favicons/browserconfig.xml?v=2017'>
24   <meta name='theme-color' content='#ffffff'>
25
26<LINK REL="STYLESHEET" HREF="subroutines.css">
27
28<LINK REL="next" HREF="sub_map2alm_spin.htm">
29<LINK REL="previous" HREF="sub_map2alm.htm">
30<LINK REL="next" HREF="sub_map2alm_spin.htm">
31</HEAD>
32
33<body text="#000000" bgcolor="#FFFFFA">
34
35<DIV CLASS="navigation"><!--Navigation Panel-->
36<A
37 HREF="sub_map2alm.htm">
38<IMG WIDTH="63" HEIGHT="24" ALT="previous" SRC="prev.png"></A>
39<A
40 HREF="sub_HEALPix_F90_subroutines.htm">
41<IMG WIDTH="26" HEIGHT="24" ALT="up" SRC="up.png"></A>
42<A
43 HREF="sub_map2alm_spin.htm">
44<IMG WIDTH="37" HEIGHT="24" ALT="next" SRC="next.png"></A>
45<A ID="tex2html390"
46  HREF="sub_TABLE_CONTENTS.htm">
47<IMG WIDTH="65" HEIGHT="24" ALT="contents" SRC="contents.png"></A>
48<BR>
49<B> Previous:</B> <A
50 HREF="sub_map2alm.htm">map2alm*</A>
51
52<B>Up:</B> <A
53 HREF="sub_HEALPix_F90_subroutines.htm">HEALPix/F90 subroutines</A>
54
55<B> Next:</B> <A
56 HREF="sub_map2alm_spin.htm">map2alm_spin*</A>
57<B> Top:</B> <a href="main.htm">Main Page</a></DIV>
58<!--End of Navigation Panel-->
59
60<H1><A ID="SECTION4900"></A>
61<A ID="sub:map2alm_iterative"></A>
62<BR>
63
64</H1>
65
66<P>
67<b><font size=+6><FONT COLOR="#CC0000">map2alm_iterative</FONT></font></b><hr>
68<H3>This routine covers and extends the functionalities of <A HREF="sub_map2alm.htm#sub:map2alm">map2alm</A>: it
69analyzes a (polarised) <b>HEALPix</b> <EM>RING ordered</EM> map and returns
70its <SPAN CLASS="MATH"><IMG STYLE="height: 1.46ex; vertical-align: -0.45ex; " SRC="sub_img6.png"
71 ALT="$a_{\ell m}$"></SPAN> coefficients for temperature (and polarisation) up to a specified
72multipole, and use precomputed harmonics if those
73are provided, but it also can also perform an iterative (Jacobi) determination of the <SPAN CLASS="MATH"><IMG STYLE="height: 1.46ex; vertical-align: -0.45ex; " SRC="sub_img6.png"
74 ALT="$a_{\ell m}$"></SPAN>, and
75apply a pixel mask if one is provided.
76<BR>
77Denoting <SPAN CLASS="MATH"><B>A</B></SPAN> and <SPAN CLASS="MATH"><B>S</B></SPAN> the
78analysis  (<A HREF="sub_map2alm.htm#sub:map2alm">map2alm</A>) and
79synthesis (<A HREF="sub_alm2map.htm#sub:alm2map">alm2map</A>)
80operators and  <!-- MATH
81 $\textbf{a}, \textbf{m}$
82 -->
83<SPAN CLASS="MATH"><B>a</B>, <B>m</B></SPAN> and <SPAN CLASS="MATH"><B>w</B></SPAN>, the <SPAN CLASS="MATH"><IMG STYLE="height: 1.46ex; vertical-align: -0.45ex; " SRC="sub_img6.png"
84 ALT="$a_{\ell m}$"></SPAN>, map and pixel mask vectors, the
85Jacobi iterative process reads
86<BR>
87<DIV ALIGN="CENTER">
88
89<!-- MATH
90 \begin{eqnarray}
91\textbf{a}^{(n)} = \textbf{a}^{(n-1)} + \textbf{A}. \left( \textbf{w}.\textbf{m}- \textbf{S}.\textbf{a}^{(n-1)} \right),
92\end{eqnarray}
93 -->
94<SPAN CLASS="MATH">
95<TABLE CELLPADDING="0" ALIGN="CENTER" WIDTH="100%">
96<TR VALIGN="MIDDLE"><TD NOWRAP WIDTH="50%" ALIGN="RIGHT"><IMG STYLE="height: 3.56ex; vertical-align: -1.26ex; " SRC="sub_img138.png"
97 ALT="$\displaystyle \textbf{a}^{(n)} = \textbf{a}^{(n-1)} + \textbf{A}. \left( \textbf{w}.\textbf{m}- \textbf{S}.\textbf{a}^{(n-1)} \right),$"></TD>
98<TD>&nbsp;</TD>
99<TD>&nbsp;</TD>
100<TD CLASS="eqno" WIDTH=10 ALIGN="RIGHT">
101(<SPAN CLASS="arabic">10</SPAN>)</TD></TR>
102</TABLE>
103</SPAN></DIV>
104<BR CLEAR="ALL"><P></P>
105with
106<BR>
107<DIV ALIGN="CENTER">
108
109<!-- MATH
110 \begin{eqnarray}
111\textbf{a}^{(0)} = \textbf{A}.\textbf{w}.\textbf{m}.
112\end{eqnarray}
113 -->
114<SPAN CLASS="MATH">
115<TABLE CELLPADDING="0" ALIGN="CENTER" WIDTH="100%">
116<TR VALIGN="MIDDLE"><TD NOWRAP WIDTH="50%" ALIGN="RIGHT"><B>a</B><SUP>(0)</SUP> = <B>A</B>.<B>w</B>.<B>m</B>.</TD>
117<TD>&nbsp;</TD>
118<TD>&nbsp;</TD>
119<TD CLASS="eqno" WIDTH=10 ALIGN="RIGHT">
120(<SPAN CLASS="arabic">11</SPAN>)</TD></TR>
121</TABLE>
122</SPAN></DIV>
123<BR CLEAR="ALL"><P></P>
124During the processing, the standard deviation of the input map <!-- MATH
125 $\left(\textbf{w}.\textbf{m}\right)$
126 -->
127<SPAN CLASS="MATH"><IMG STYLE="height: 2.33ex; vertical-align: -0.68ex; " SRC="sub_img139.png"
128 ALT="$\left(\textbf{w}.\textbf{m}\right)$"></SPAN>
129and the current residual map <!-- MATH
130 $\left(\textbf{w}.\textbf{m}- \textbf{S}.\textbf{a}^{(n-1)}\right)$
131 -->
132<SPAN CLASS="MATH"><IMG STYLE="height: 3.56ex; vertical-align: -1.26ex; " SRC="sub_img140.png"
133 ALT="$\left(\textbf{w}.\textbf{m}- \textbf{S}.\textbf{a}^{(n-1)}\right)$"></SPAN> is printed out, with the latter expected
134to get smaller and smaller as <SPAN CLASS="MATH"><I>n</I></SPAN> increases.
135<BR>
136The standard deviation of map <SPAN CLASS="MATH"><I>x</I></SPAN> has the usual definition
137<!-- MATH
138 $\sigma \equiv \sqrt{\sum_{p=1}^{N}\frac{(x(p)-\bar{x})^2}{N-1}}$
139 -->
140<SPAN CLASS="MATH"><IMG STYLE="height: 3.56ex; vertical-align: -1.10ex; " SRC="sub_img141.png"
141 ALT="$\sigma \equiv \sqrt{\sum_{p=1}^{N}\frac{(x(p)-\bar{x})^2}{N-1}}$"></SPAN>, where the mean is
142<!-- MATH
143 $\bar{x} \equiv  \sum_{p=1}^{N} \frac{x(p)}{N}$
144 -->
145<SPAN CLASS="MATH"><IMG STYLE="height: 3.15ex; vertical-align: -0.97ex; " SRC="sub_img142.png"
146 ALT="$\bar{x} \equiv \sum_{p=1}^{N} \frac{x(p)}{N}$"></SPAN>, and the index <SPAN CLASS="MATH"><I>p</I></SPAN> runs over all pixels.
147<BR>
148In <A HREF="sub_Changes_between_releases_3_.htm#sub:new3p50">version 3.50</A> a bug affecting previous versions of <FONT COLOR="#CC0000">map2alm_iterative</FONT> has been fixed.
149(It occured when
150<A HREF="#sub:map2alm_iterative:iter_order"><SPAN  CLASS="texttt">iter_order</SPAN></A><SPAN CLASS="MATH">&gt;0</SPAN>
151was used in conjonction with a
152<A HREF="#sub:map2alm_iterative:mask"><SPAN  CLASS="texttt">mask</SPAN></A>
153and/or a restrictive
154<A HREF="#sub:map2alm_iterative:zbounds"><SPAN  CLASS="texttt">zbounds</SPAN></A>,
155with a magnitude that depended on each of those factors and was larger for non-boolean masks (ie, <!-- MATH
156 $\textbf{w}^2 \ne \textbf{w}$
157 -->
158<SPAN CLASS="MATH"><IMG STYLE="height: 2.45ex; vertical-align: -0.55ex; " SRC="sub_img143.png"
159 ALT="$\textbf{w}^2 \ne \textbf{w}$"></SPAN>).
160To assess the impact of this bug on previous results, the old implementation remains available in
161<SPAN  CLASS="texttt">map2alm_iterative_old</SPAN>).
162The result was correct when the mask (if any) was applied to the map prior to the
163<FONT COLOR="#CC0000">map2alm_iterative</FONT> calling, or when no iteration was requested.</H3>
164Location in HEALPix directory tree: <a href="https://sourceforge.net/p/healpix/code/1005/tree/trunk/src/f90/mod/alm_tools.F90"><b>src/f90/mod/alm_tools.F90</b></a>&nbsp;
165
166<P>
167<hr><h1>FORMAT </h1><blockquote><h3>call <FONT COLOR="#CC0000">map2alm_iterative</FONT>(
168<A HREF="#sub:map2alm_iterative:nsmax">nsmax</A>, <A HREF="#sub:map2alm_iterative:nlmax">nlmax</A>, <A HREF="#sub:map2alm_iterative:nmmax">nmmax</A>, <A HREF="#sub:map2alm_iterative:iter_order">iter_order</A>, <A HREF="#sub:map2alm_iterative:map_TQU">map_TQU</A>, <A HREF="#sub:map2alm_iterative:alm_TGC">alm_TGC</A>[, <A HREF="#sub:map2alm_iterative:zbounds">zbounds</A>, <A HREF="#sub:map2alm_iterative:w8ring_TQU">w8ring_TQU</A>,
169<A HREF="#sub:map2alm_iterative:plm">plm</A>, <A HREF="#sub:map2alm_iterative:mask">mask</A>]
170)</h3></blockquote>
171
172<P>
173<hr><H1>ARGUMENTS</H1>
174
175<TABLE CELLPADDING=3 BORDER="1">
176<TR><TH ALIGN="LEFT" VALIGN="TOP" WIDTH=190><SPAN  CLASS="textbf">name&nbsp;&amp;&nbsp;dimensionality</SPAN></TH>
177<TH ALIGN="LEFT" VALIGN="TOP" WIDTH=25><SPAN  CLASS="textbf">kind</SPAN></TH>
178<TH ALIGN="LEFT" VALIGN="TOP" WIDTH=35><SPAN  CLASS="textbf">in/out</SPAN></TH>
179<TH ALIGN="LEFT" VALIGN="TOP" WIDTH=200><SPAN  CLASS="textbf">description</SPAN></TH>
180</TR>
181<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=190>&nbsp;</TD>
182<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=25>&nbsp;</TD>
183<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=35>&nbsp;</TD>
184<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=200>&nbsp;</TD>
185</TR>
186<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=190>
187nsmax<A ID="sub:map2alm_iterative:nsmax"></A></TD>
188<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=25>I4B</TD>
189<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=35>IN</TD>
190<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=200>the <!-- MATH
191 $N_{\mathrm{side}}$
192 -->
193<SPAN CLASS="MATH"><I>N</I><SUB>side</SUB></SPAN> value of the map to analyse.</TD>
194</TR>
195<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=190>nlmax<A ID="sub:map2alm_iterative:nlmax"></A></TD>
196<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=25>I4B</TD>
197<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=35>IN</TD>
198<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=200>the maximum <SPAN CLASS="MATH"><IMG STYLE="height: 1.69ex; vertical-align: -0.10ex; " SRC="sub_img21.png"
199 ALT="$\ell$"></SPAN> value (<!-- MATH
200 $\ell_{\mathrm{max}}$
201 -->
202<SPAN CLASS="MATH"><IMG STYLE="height: 2.04ex; vertical-align: -0.45ex; " SRC="sub_img144.png"
203 ALT="$\ell_{\mathrm{max}}$"></SPAN>) for the analysis.</TD>
204</TR>
205<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=190>nmmax<A ID="sub:map2alm_iterative:nmmax"></A></TD>
206<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=25>I4B</TD>
207<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=35>IN</TD>
208<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=200>the maximum <SPAN CLASS="MATH"><I>m</I></SPAN> value for the analysis.</TD>
209</TR>
210<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=190>iter_order<A ID="sub:map2alm_iterative:iter_order"></A></TD>
211<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=25>I4B</TD>
212<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=35>IN</TD>
213<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=200>the order of Jacobi iteration. Increasing that order
214improves the accuracy of the final <SPAN CLASS="MATH"><IMG STYLE="height: 1.46ex; vertical-align: -0.45ex; " SRC="sub_img6.png"
215 ALT="$a_{\ell m}$"></SPAN> but increases the computation time <!-- MATH
216 $T_{\mathrm{CPU}} \propto 1 + 2 \times$
217 -->
218<SPAN CLASS="MATH"><IMG STYLE="height: 1.98ex; vertical-align: -0.45ex; " SRC="sub_img145.png"
219 ALT="$T_{\mathrm{CPU}} \propto 1 + 2 \times $"></SPAN>iter_order.
220iter_order  <SPAN CLASS="MATH">=0</SPAN> is a straight analysis, while iter_order <SPAN CLASS="MATH">=3</SPAN> is usually a
221good compromise.</TD>
222</TR>
223<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=190>map_TQU<A ID="sub:map2alm_iterative:map_TQU"></A>(0:12*nsmax**2-1, 1:p)</TD>
224<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=25>SP/ DP</TD>
225<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=35>INOUT</TD>
226<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=200>input map. <SPAN CLASS="MATH"><I>p</I></SPAN> is 1 or 3
227depending if temperature (T) only or temperature and polarisation (T, Q, U) are
228to be analysed. It will be altered on output if a <A HREF="#sub:map2alm_iterative:mask">mask</A> is provided and/or if <A HREF="#sub:map2alm_iterative:iter_order">iter_order</A><SPAN CLASS="MATH">&gt;0</SPAN> and <A HREF="#sub:map2alm_iterative:zbounds">zbounds</A> is provided.</TD>
229</TR>
230<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=190>alm_TGC<A ID="sub:map2alm_iterative:alm_TGC"></A>(1:p, 0:nlmax, 0:nmmax)</TD>
231<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=25>SPC/ DPC</TD>
232<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=35>OUT</TD>
233<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=200>The <SPAN CLASS="MATH"><IMG STYLE="height: 1.46ex; vertical-align: -0.45ex; " SRC="sub_img6.png"
234 ALT="$a_{\ell m}$"></SPAN> values output
235from the analysis.
236<SPAN CLASS="MATH"><I>p</I></SPAN> is 1 or 3 depending on whether polarisation is included or not. In the former
237case, the first index is (1,2,3) corresponding to (T,E,B).</TD>
238</TR>
239<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=190>zbounds<A ID="sub:map2alm_iterative:zbounds"></A>(1:2), OPTIONAL</TD>
240<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=25>DP</TD>
241<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=35>IN</TD>
242<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=200>section of the map on which to perform the <SPAN CLASS="MATH"><IMG STYLE="height: 1.46ex; vertical-align: -0.45ex; " SRC="sub_img6.png"
243 ALT="$a_{\ell m}$"></SPAN>
244                   analysis, expressed in terms of <!-- MATH
245 $z=\sin(\mathrm{latitude}) =
246                   \cos(\theta).$
247 -->
248<SPAN CLASS="MATH"><IMG STYLE="height: 2.33ex; vertical-align: -0.68ex; " SRC="sub_img42.png"
249 ALT="$z=\sin(\mathrm{latitude}) =
250\cos(\theta).$"></SPAN> If zbounds(1)<SPAN CLASS="MATH">&lt;</SPAN>zbounds(2), it is
251performed <EM>on</EM> the strip zbounds(1)<SPAN CLASS="MATH">&lt;<I>z</I>&lt;</SPAN>zbounds(2); if not,
252it is performed <EM>outside</EM> the strip
253zbounds(2)<SPAN CLASS="MATH"><IMG STYLE="height: 1.87ex; vertical-align: -0.41ex; " SRC="sub_img43.png"
254 ALT="$\le z \le$"></SPAN>zbounds(1). If absent, the whole map is processed.
255</TD>
256</TR>
257<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=190></TD>
258<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=25>&nbsp;</TD>
259<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=35>&nbsp;</TD>
260<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=200>&nbsp;</TD>
261</TR>
262</TABLE>
263<TABLE CELLPADDING=3 BORDER="1">
264<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=190>w8ring_TQU<A ID="sub:map2alm_iterative:w8ring_TQU"></A>(1:2*nsmax,1:p), OPTIONAL</TD>
265<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=25>DP</TD>
266<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=35>IN</TD>
267<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=200>ring weights for
268quadrature corrections. p is 1 for a temperature analysis and 3 for (T,Q,U). If absent, the
269ring weights are all set to 1.</TD>
270</TR>
271<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=190>plm<A ID="sub:map2alm_iterative:plm"></A>(0:,1:p), OPTIONAL</TD>
272<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=25>DP</TD>
273<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=35>IN</TD>
274<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=200>If this
275optional matrix is passed, precomputed scalar (and tensor) <!-- MATH
276 $P_{\ell m}(\theta)$
277 -->
278<SPAN CLASS="MATH"><IMG STYLE="height: 2.33ex; vertical-align: -0.68ex; " SRC="sub_img41.png"
279 ALT="$P_{\ell m}(\theta)$"></SPAN> are
280used instead of recursion.</TD>
281</TR>
282<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=190>mask<A ID="sub:map2alm_iterative:mask"></A>(0:12*nsmax**2-1,1:q), OPTIONAL</TD>
283<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=25>SP/ DP</TD>
284<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=35>IN</TD>
285<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=200>pixel mask,
286assumed to have the same resolution (and RING ordering) as the map. The map <TT>map_TQU</TT> is
287multiplied by that mask before being analyzed, and will therefore be altered on
288output.
289<SPAN CLASS="MATH"><I>q</I></SPAN> should be in <SPAN CLASS="MATH">{1,2,3}</SPAN>. If <SPAN CLASS="MATH"><I>p</I>=<I>q</I>=3</SPAN>, then each of
290the 3 masks is applied to the respective map. If <SPAN CLASS="MATH"><I>p</I>=3</SPAN> and <SPAN CLASS="MATH"><I>q</I>=2</SPAN>, the first mask
291is applied to the first map, and the second mask to the second (Q) and third (U)
292map. If <SPAN CLASS="MATH"><I>p</I>=3</SPAN> and <SPAN CLASS="MATH"><I>q</I>=1</SPAN>, the same mask is applied to the 3 maps. Note: the output
293<SPAN CLASS="MATH"><IMG STYLE="height: 1.46ex; vertical-align: -0.45ex; " SRC="sub_img6.png"
294 ALT="$a_{\ell m}$"></SPAN> are computed directly on the masked map, and are <EM>not</EM> corrected for the
295loss of power, correlation or leakage created by the mask.</TD>
296</TR>
297</TABLE>
298
299<P>
300<HR><H1>EXAMPLE:</H1>
301<tt>use healpix_types
302<BR>
303use alm_tools
304<BR>
305use pix_tools
306<BR>
307integer(i4b) :: nside, lmax, npix, iter
308<BR>
309real(sp), allocatable, dimension(:,:) :: map
310<BR>
311real(sp), allocatable, dimension(:) :: mask
312<BR>
313complex(spc), allocatable, dimension(:,:,:) :: alm
314<BR>
315<BR>
316nside = 256
317<BR>
318lmax = 512
319<BR>
320iter = 2
321<BR>
322npix = nside2npix(nside)
323<BR>
324allocate(map(0:npix-1,1:3))
325<BR>
326allocate(mask(0:npix-1))
327<BR>
328mask(0:) = 0. ! set unvalid pixels to 0
329<BR>
330mask(0:10000-1) = 1. ! valid pixels
331<BR>
332allocate(alm(1:3, 0:lmax, 0:lmax)
333<BR>
334call map2alm_iterative(nside, lmax, lmax, iter, map, alm, mask=mask)
335<BR></tt>
336<blockquote>
337Analyses temperature and polarisation signals in the first 10000 pixels of <TT>map</TT> (as
338determined by <TT>mask</TT>). The map has
339an <!-- MATH
340 $N_{\mathrm{side}}$
341 -->
342<SPAN CLASS="MATH"><I>N</I><SUB>side</SUB></SPAN> of 256, and the analysis is supposed to be performed up
343to 512 in <SPAN CLASS="MATH"><IMG STYLE="height: 1.69ex; vertical-align: -0.10ex; " SRC="sub_img21.png"
344 ALT="$\ell$"></SPAN> and <SPAN CLASS="MATH"><I>m</I></SPAN>. The resulting <SPAN CLASS="MATH"><IMG STYLE="height: 1.46ex; vertical-align: -0.45ex; " SRC="sub_img6.png"
345 ALT="$a_{\ell m}$"></SPAN> coefficients for
346temperature and polarisation are returned in <TT>alm</TT>. Uniform weights are
347assumed. In order to improve the <SPAN CLASS="MATH"><IMG STYLE="height: 1.46ex; vertical-align: -0.45ex; " SRC="sub_img6.png"
348 ALT="$a_{\ell m}$"></SPAN> accuracy, 2 Jacobi iterations are performed.
349</blockquote>
350
351<P>
352<hr><H1>MODULES & ROUTINES</H1><H3>This section lists the modules and routines used by <FONT COLOR="#CC0000">map2alm_iterative</FONT>.</h3>
353  <DL COMPACT><DT>
354<B><A HREF="sub_map2alm.htm#sub:map2alm">map2alm</A></B>
355<DD>Performs the alm analysis
356  <DT>
357<B><A HREF="sub_alm2map.htm#sub:alm2map">alm2map</A></B>
358<DD>Performs the map synthesis
359  <DT>
360<B><SPAN  CLASS="textbf">misc_util</SPAN></B>
361<DD>module, containing:
362  <DT>
363<B><A HREF="sub_assert_assert_alloc_assert_.htm#sub:assert">assert_alloc</A></B>
364<DD>routine to print error message when an array is not
365  properly allocated
366  </DL>
367
368<P>
369<hr><H1>RELATED ROUTINES</H1><h3>This section lists the routines related to <b><FONT COLOR="#CC0000">map2alm_iterative</FONT></b></h3>
370
371  <DL COMPACT><DT>
372<B><A HREF="./fac_anafast.htm#fac:anafast">anafast</A></B>
373<DD>executable using <FONT COLOR="#CC0000">map2alm_iterative</FONT> to analyse maps.
374  <DT>
375<B><A HREF="sub_alm2map.htm#sub:alm2map">alm2map</A></B>
376<DD>routine performing the inverse transform of <FONT COLOR="#CC0000">map2alm_iterative</FONT>.
377  <DT>
378<B><A HREF="sub_alm2map_spin.htm#sub:alm2map_spin">alm2map_spin</A></B>
379<DD>synthesize spin weighted
380maps.
381  <DT>
382<B><A HREF="sub_dump_alms.htm#sub:dump_alms">dump_alms</A></B>
383<DD>write <SPAN CLASS="MATH"><IMG STYLE="height: 1.46ex; vertical-align: -0.45ex; " SRC="sub_img6.png"
384 ALT="$a_{\ell m}$"></SPAN> coefficients
385computed by <FONT COLOR="#CC0000">map2alm_iterative</FONT>into a FITS file
386  <DT>
387<B><A HREF="sub_map2alm_spin.htm#sub:map2alm_spin">map2alm_spin</A></B>
388<DD>analyze spin weighted maps.
389  </DL>
390
391<P>
392
393<P>
394
395<P>
396
397<DIV CLASS="navigation"><HR>
398<!--Navigation Panel-->
399<A
400 HREF="sub_map2alm.htm">
401<IMG WIDTH="63" HEIGHT="24" ALT="previous" SRC="prev.png"></A>
402<A
403 HREF="sub_HEALPix_F90_subroutines.htm">
404<IMG WIDTH="26" HEIGHT="24" ALT="up" SRC="up.png"></A>
405<A
406 HREF="sub_map2alm_spin.htm">
407<IMG WIDTH="37" HEIGHT="24" ALT="next" SRC="next.png"></A>
408<A ID="tex2html390"
409  HREF="sub_TABLE_CONTENTS.htm">
410<IMG WIDTH="65" HEIGHT="24" ALT="contents" SRC="contents.png"></A>
411<BR>
412<B> Previous:</B> <A
413 HREF="sub_map2alm.htm">map2alm*</A>
414
415<B>Up:</B> <A
416 HREF="sub_HEALPix_F90_subroutines.htm">HEALPix/F90 subroutines</A>
417
418<B> Next:</B> <A
419 HREF="sub_map2alm_spin.htm">map2alm_spin*</A>
420<B> Top:</B> <a href="main.htm">Main Page</a></DIV>
421<!--End of Navigation Panel-->
422<ADDRESS>
423Version 3.50, 2018-12-10
424</ADDRESS>
425</BODY>
426</HTML>
427