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>alm2map_der*</TITLE>
7<META NAME="description" CONTENT="alm2map_der*">
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_alm2map_spin.htm">
29<LINK REL="previous" HREF="sub_alm2map.htm">
30<LINK REL="next" HREF="sub_alm2map_spin.htm">
31</HEAD>
32
33<body text="#000000" bgcolor="#FFFFFA">
34
35<DIV CLASS="navigation"><!--Navigation Panel-->
36<A
37 HREF="sub_alm2map.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_alm2map_spin.htm">
44<IMG WIDTH="37" HEIGHT="24" ALT="next" SRC="next.png"></A>
45<A ID="tex2html310"
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_alm2map.htm">alm2map*</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_alm2map_spin.htm">alm2map_spin*</A>
57<B> Top:</B> <a href="main.htm">Main Page</a></DIV>
58<!--End of Navigation Panel-->
59
60<H1><A ID="SECTION900"></A>
61<A ID="sub:alm2map_der"></A>
62<BR>
63
64</H1>
65
66<P>
67<b><font size=+6><FONT COLOR="#CC0000">alm2map_der*</FONT></font></b><hr>
68<H3>This routine is a wrapper to four other routines that synthesize a <b>HEALPix</b>
69  temperature (and polarisation) map(s), its (their) first derivatives, and optionally
70  its (their) second derivatives.
71The routines accept both single and double precision arrays for alm, map, der1 and
72der2. The precision of these arrays should match. All maps produced are RING
73ordered.
74<br><br>See <A ID="tex2html17"
75  HREF="facilities.htm">&rdquo;Fortran
76Facilities&rdquo;</A>
77<A HREF="./fac_Appendix.htm#fac:sec:bug_synder">Appendix</A> for a note on a bug
78affecting the calculation of polarisation derivatives on past versions of this routine.
79</H3>
80Location 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;
81
82<P>
83<hr><h1>FORMAT </h1><blockquote><h3>call <FONT COLOR="#CC0000">alm2map_der*</FONT>(
84<A HREF="#sub:alm2map_der:nsmax">nsmax</A>, <A HREF="#sub:alm2map_der:nlmax">nlmax</A>, <A HREF="#sub:alm2map_der:nmmax">nmmax</A>, <A HREF="#sub:alm2map_der:alm">alm</A>, <A HREF="#sub:alm2map_der:map">map</A>, <A HREF="#sub:alm2map_der:der1">der1</A>[, <A HREF="#sub:alm2map_der:der2">der2</A>=, <A HREF="#sub:alm2map_der:zbounds">zbounds</A>=]
85)</h3></blockquote>
86
87<P>
88<hr><H1>ARGUMENTS</H1>
89
90<TABLE CELLPADDING=3 BORDER="1">
91<TR><TH ALIGN="LEFT" VALIGN="TOP" WIDTH=175><SPAN  CLASS="textbf">name&nbsp;&amp;&nbsp;dimensionality</SPAN></TH>
92<TH ALIGN="LEFT" VALIGN="TOP" WIDTH=25><SPAN  CLASS="textbf">kind</SPAN></TH>
93<TH ALIGN="LEFT" VALIGN="TOP" WIDTH=50><SPAN  CLASS="textbf">in/out</SPAN></TH>
94<TH ALIGN="LEFT" VALIGN="TOP" WIDTH=200><SPAN  CLASS="textbf">description</SPAN></TH>
95</TR>
96<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=175>&nbsp;</TD>
97<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=25>&nbsp;</TD>
98<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=50>&nbsp;</TD>
99<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=200>&nbsp;</TD>
100</TR>
101<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=175>
102nsmax<A ID="sub:alm2map_der:nsmax"></A></TD>
103<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=25>I4B</TD>
104<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=50>IN</TD>
105<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=200>the <!-- MATH
106 $N_{\mathrm{side}}$
107 -->
108<SPAN CLASS="MATH"><I>N</I><SUB>side</SUB></SPAN> value of the map to synthesize.</TD>
109</TR>
110<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=175>nlmax<A ID="sub:alm2map_der:nlmax"></A></TD>
111<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=25>I4B</TD>
112<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=50>IN</TD>
113<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"
114 ALT="$\ell$"></SPAN> value used for the <SPAN CLASS="MATH"><IMG STYLE="height: 1.46ex; vertical-align: -0.45ex; " SRC="sub_img6.png"
115 ALT="$a_{\ell m}$"></SPAN>.</TD>
116</TR>
117<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=175>nmmax<A ID="sub:alm2map_der:nmmax"></A></TD>
118<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=25>I4B</TD>
119<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=50>IN</TD>
120<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=200>the maximum <SPAN CLASS="MATH"><I>m</I></SPAN> value used for the <SPAN CLASS="MATH"><IMG STYLE="height: 1.46ex; vertical-align: -0.45ex; " SRC="sub_img6.png"
121 ALT="$a_{\ell m}$"></SPAN>.</TD>
122</TR>
123<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=175>alm<A ID="sub:alm2map_der:alm"></A>(1:p, 0:nlmax, 0:nmmax)</TD>
124<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=25>SPC/ DPC</TD>
125<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=50>IN</TD>
126<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=200>The <SPAN CLASS="MATH"><IMG STYLE="height: 1.46ex; vertical-align: -0.45ex; " SRC="sub_img6.png"
127 ALT="$a_{\ell m}$"></SPAN> values to make the map
128                   from. p is either 1 (temperature only) or 3 (temperature+polarisation).</TD>
129</TR>
130<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=175>map<A ID="sub:alm2map_der:map"></A>(0:12*nsmax**2-1) <EM>or  </EM>(0:12*nsmax**2-1,1:3)</TD>
131<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=25>SP/ DP</TD>
132<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=50>OUT</TD>
133<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=200>temperature
134map <SPAN CLASS="MATH"><I>T</I>(<I>p</I>)</SPAN> or temperature + polarisation maps <SPAN CLASS="MATH"><I>T</I>(<I>p</I>)</SPAN>, <SPAN CLASS="MATH"><I>Q</I>(<I>p</I>)</SPAN>, <SPAN CLASS="MATH"><I>U</I>(<I>p</I>)</SPAN> to be synthesized.</TD>
135</TR>
136<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=175>der1<A ID="sub:alm2map_der:der1"></A>(0:12*nsmax**2-1, 1:2*p)</TD>
137<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=25>SP/ DP</TD>
138<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=50>OUT</TD>
139<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=200>contains on output the first
140derivatives of T: <!-- MATH
141 $\left({\partial T}/{\partial \theta}, {\partial T}/{\partial \phi}/\sin\theta \right)$
142 -->
143<SPAN CLASS="MATH"><IMG STYLE="height: 2.33ex; vertical-align: -0.68ex; " SRC="sub_img46.png"
144 ALT="$\left({\partial T}/{\partial \theta}, {\partial T}/{\partial \phi}/\sin\theta \right)
145$"></SPAN> or the interleaved derivatives of T, Q, and U: <!-- MATH
146 $\left({\partial T}/{\partial
147  \theta}, {\partial Q}/{\partial \theta}, {\partial U}/{\partial \theta};\right.$
148 -->
149<SPAN CLASS="MATH"><IMG STYLE="height: 2.33ex; vertical-align: -0.68ex; " SRC="sub_img47.png"
150 ALT="$\left({\partial T}/{\partial
151\theta}, {\partial Q}/{\partial \theta}, {\partial U}/{\partial \theta};\right. $"></SPAN>
152<!-- MATH
153 $\left.{\partial T}/{\partial \phi}/\sin\theta, \ldots \right)$
154 -->
155<SPAN CLASS="MATH"><IMG STYLE="height: 2.33ex; vertical-align: -0.68ex; " SRC="sub_img48.png"
156 ALT="$\left.{\partial T}/{\partial \phi}/\sin\theta, \ldots \right)
157$"></SPAN></TD>
158</TR>
159<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=175>der2<A ID="sub:alm2map_der:der2"></A>(0:12*nsmax**2-1,1:3*p), OPTIONAL</TD>
160<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=25>SP/ DP</TD>
161<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=50>OUT</TD>
162<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=200>If this optional
163matrix is passed with this rank, it will contain on output the second derivatives
164<!-- MATH
165 $\left({\partial^2 T}/{\partial \theta^2}, {\partial^2 T}/{\partial
166  \theta\partial\phi}/\sin\theta,\right.$
167 -->
168<SPAN CLASS="MATH"><IMG STYLE="height: 2.45ex; vertical-align: -0.68ex; " SRC="sub_img49.png"
169 ALT="$\left({\partial^2 T}/{\partial \theta^2}, {\partial^2 T}/{\partial
170\theta\partial\phi}/\sin\theta,\right. $"></SPAN>
171<!-- MATH
172 $\left.{\partial^2 T}/{\partial \phi^2}/\sin^2\theta \right)$
173 -->
174<SPAN CLASS="MATH"><IMG STYLE="height: 2.45ex; vertical-align: -0.68ex; " SRC="sub_img50.png"
175 ALT="$\left.{\partial^2 T}/{\partial \phi^2}/\sin^2\theta \right) $"></SPAN> or
176<!-- MATH
177 $\left({\partial^2 T}/{\partial \theta^2}, {\partial^2 Q}/{\partial \theta^2},
178{\partial^2 Q}/{\partial \theta^2}, \ldots \right)$
179 -->
180<SPAN CLASS="MATH"><IMG STYLE="height: 2.45ex; vertical-align: -0.68ex; " SRC="sub_img51.png"
181 ALT="$\left({\partial^2 T}/{\partial \theta^2}, {\partial^2 Q}/{\partial \theta^2},
182{\partial^2 Q}/{\partial \theta^2}, \ldots \right) $"></SPAN></TD>
183</TR>
184<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=175>zbounds<A ID="sub:alm2map_der:zbounds"></A>(1:2), OPTIONAL</TD>
185<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=25>DP</TD>
186<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=50>IN</TD>
187<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=200>section of the sphere on which to perform the map synthesis, expressed in terms of <!-- MATH
188 $z=\sin(\mathrm{latitude}) = \cos(\theta).$
189 -->
190<SPAN CLASS="MATH"><IMG STYLE="height: 2.33ex; vertical-align: -0.68ex; " SRC="sub_img42.png"
191 ALT="$z=\sin(\mathrm{latitude}) =
192\cos(\theta).$"></SPAN> If zbounds(1)<SPAN CLASS="MATH">&lt;</SPAN>zbounds(2), it is
193performed <EM>on</EM> the strip zbounds(1)<SPAN CLASS="MATH">&lt;<I>z</I>&lt;</SPAN>zbounds(2); if not,
194it is performed <EM>outside</EM> the strip
195zbounds(2)<SPAN CLASS="MATH"><IMG STYLE="height: 1.87ex; vertical-align: -0.41ex; " SRC="sub_img43.png"
196 ALT="$\le z \le$"></SPAN>zbounds(1). If absent, the whole map is processed.
197
198<P></TD>
199</TR>
200</TABLE>
201
202<P>
203<HR><H1>EXAMPLE:</H1>
204<tt>use healpix_types
205<BR>
206use pix_tools, only : nside2npix
207<BR>
208use alm_tools, only : alm2map_der
209<BR>
210integer(I4B) :: nside, lmax, mmax, npix
211<BR>
212real(SP), dimension(:), allocatable :: map
213<BR>
214real(SP), dimension(:,:), allocatable :: der1, der2
215<BR>
216complex(SPC), dimension(:,:,:), allocatable :: alm
217<BR>...
218<BR>
219nside=256 ; lmax=512 ; mmax=lmax
220<BR>
221npix=nside2npix(nside)
222<BR>
223allocate(alm(1:1,0:lmax,0:mmax))
224<BR>
225allocate(map(0:npix-1))
226<BR>
227allocate(der1(0:npix-1,1:2), der2(0:npix-1,1:3))
228<BR>...
229<BR>
230call alm2map_der(nside, lmax, mmax, alm, map, der1, der2=der2)
231<BR></tt>
232<blockquote>
233Make temperature maps and its derivatives from the <SPAN CLASS="MATH"><IMG STYLE="height: 1.46ex; vertical-align: -0.45ex; " SRC="sub_img6.png"
234 ALT="$a_{\ell m}$"></SPAN> passed in alm. The maps have <!-- MATH
235 $N_{\mathrm{side}}$
236 -->
237<SPAN CLASS="MATH"><I>N</I><SUB>side</SUB></SPAN> of 256, and are constructed from <SPAN CLASS="MATH"><IMG STYLE="height: 1.46ex; vertical-align: -0.45ex; " SRC="sub_img6.png"
238 ALT="$a_{\ell m}$"></SPAN> values up to 512 in <SPAN CLASS="MATH"><IMG STYLE="height: 1.69ex; vertical-align: -0.10ex; " SRC="sub_img21.png"
239 ALT="$\ell$"></SPAN> and <SPAN CLASS="MATH"><I>m</I></SPAN>.
240</blockquote>
241
242<P>
243<hr><H1>MODULES & ROUTINES</H1><H3>This section lists the modules and routines used by <FONT COLOR="#CC0000">alm2map_der*</FONT>.</h3>
244  <DL COMPACT><DT>
245<B><A HREF="sub_ring_synthesis.htm#sub:ring_synthesis">ring_synthesis</A></B>
246<DD>Performs FFT over <SPAN CLASS="MATH"><I>m</I></SPAN> for synthesis of the rings.
247  <DT>
248<B>compute_lam_mm, get_pixel_layout, </B>
249<DD><DT>
250<B>gen_lamfac_der, gen_mfac,  </B>
251<DD><DT>
252<B>gen_recfac, init_rescale, l_min_ylm</B>
253<DD>Ancillary routines used
254  for <!-- MATH
255 $\ {_s}Y_{\ell m}$
256 -->
257<SPAN CLASS="MATH"><IMG STYLE="height: 2.04ex; vertical-align: -0.45ex; " SRC="sub_img52.png"
258 ALT="$\ {_s}Y_{\ell m}$"></SPAN> recursion
259  <DT>
260<B><SPAN  CLASS="textbf">misc_utils</SPAN></B>
261<DD>module, containing:
262  <DT>
263<B><A HREF="sub_assert_assert_alloc_assert_.htm#sub:assert">assert_alloc</A></B>
264<DD>routine to print error message, when an array can not be
265  allocated properly
266  </DL>
267
268<P>
269<hr><H1>RELATED ROUTINES</H1><h3>This section lists the routines related to <b><FONT COLOR="#CC0000">alm2map_der*</FONT></b></h3>
270
271  <DL COMPACT><DT>
272<B><A HREF="sub_alm2map.htm#sub:alm2map">alm2map</A></B>
273<DD>routine generating maps of temperature
274   and polarisation from their  <SPAN CLASS="MATH"><IMG STYLE="height: 1.46ex; vertical-align: -0.45ex; " SRC="sub_img6.png"
275 ALT="$a_{\ell m}$"></SPAN>
276   <DT>
277<B><A HREF="sub_alm2map_spin.htm#sub:alm2map_spin">alm2map_spin</A></B>
278<DD>routine generating maps of
279arbitrary spin from their  <!-- MATH
280 ${_s}a_{\ell m}$
281 -->
282<SPAN CLASS="MATH"><IMG STYLE="height: 1.46ex; vertical-align: -0.45ex; " SRC="sub_img45.png"
283 ALT="${_s}a_{\ell m}$"></SPAN>
284<DT>
285<B>synfast</B>
286<DD>executable using <FONT COLOR="#CC0000">alm2map_der*</FONT> to synthesize maps.
287<DT>
288<B><A HREF="sub_create_alm.htm#sub:create_alm">create_alm</A></B>
289<DD>routine to generate randomly
290  distributed <SPAN CLASS="MATH"><IMG STYLE="height: 1.46ex; vertical-align: -0.45ex; " SRC="sub_img6.png"
291 ALT="$a_{\ell m}$"></SPAN> coefficients according to a given power spectrum
292  </DL>
293
294<P>
295
296<P>
297
298<DIV CLASS="navigation"><HR>
299<!--Navigation Panel-->
300<A
301 HREF="sub_alm2map.htm">
302<IMG WIDTH="63" HEIGHT="24" ALT="previous" SRC="prev.png"></A>
303<A
304 HREF="sub_HEALPix_F90_subroutines.htm">
305<IMG WIDTH="26" HEIGHT="24" ALT="up" SRC="up.png"></A>
306<A
307 HREF="sub_alm2map_spin.htm">
308<IMG WIDTH="37" HEIGHT="24" ALT="next" SRC="next.png"></A>
309<A ID="tex2html310"
310  HREF="sub_TABLE_CONTENTS.htm">
311<IMG WIDTH="65" HEIGHT="24" ALT="contents" SRC="contents.png"></A>
312<BR>
313<B> Previous:</B> <A
314 HREF="sub_alm2map.htm">alm2map*</A>
315
316<B>Up:</B> <A
317 HREF="sub_HEALPix_F90_subroutines.htm">HEALPix/F90 subroutines</A>
318
319<B> Next:</B> <A
320 HREF="sub_alm2map_spin.htm">alm2map_spin*</A>
321<B> Top:</B> <a href="main.htm">Main Page</a></DIV>
322<!--End of Navigation Panel-->
323<ADDRESS>
324Version 3.50, 2018-12-10
325</ADDRESS>
326</BODY>
327</HTML>
328