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">”Fortran 76Facilities”</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> 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 & 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> </TD> 97<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=25> </TD> 98<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=50> </TD> 99<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=200> </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"><</SPAN>zbounds(2), it is 193performed <EM>on</EM> the strip zbounds(1)<SPAN CLASS="MATH"><<I>z</I><</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