This program can be used to create HEALPix maps (temperature only or temperature and polarisation) computed as realisations of random Gaussian fields on a sphere characterized by the user provided theoretical power spectra, or as constrained realisations of such fields characterised by the user provided alm coefficients and/or power spectra. Total operation count scales as ${\cal {O}}(N_{\rm pix}^{3/2} )$ with a prefactor dependent on the limiting spherical harmonics order lmax of the actual problem. The map resolution, Gaussian beam FWHM, and random seed for the simulation can be selected by the user. Spherical harmonics are either generated using the recurrence relations during the execution of spectral synthesis, or precomputed and read in before the synthesis is executed. The latter is no longer recommended since it provides no acceleration since the introduction of optimized algorithms in HEALPix v2.20.

Location in HEALPix directory tree: src/f90/synfast/synfast.f90 


% synfast [options] [parameter_file]


double precision mode (see Notes on double/single precision modes on page [*])
single precision mode (default)


infile =
Defines the input power spectrum file, (default= cl.fits). Note that infile is now optional : synfast can run even if only almsfile is provided.
outfile =
Defines the output (RING ordered) map file, (default= map.fits). Note that outfile is now optional: if it set to `' (empty string), mo map is synthesized but the alm generated can be output.
outfile_alms =
Defines the FITS file in which to output alm used for the simulation (default= `')
simul_type =
Defines the simulation type, 1=temperature only (1 field), 2=temperature+polarisation (3 fields), 3=temperature and its first spatial derivatives (3 fields), 4=temperature and its first and second spatial derivatives (6 fields), 5=temperature and polarisation, and their first derivatives (9 fields), 6=same as 5 plus the second derivatives of (T,Q,U) (18 fields). (default= 1).
nsmax =
Defines the resolution of the map. (default= 32)
nlmax =
Defines the maximum l value to be used in the simulation. WARNING: lmax can not exceed the value $4\cdot$ nsmax, because the coefficients of the average Fourier pixel window functions are precomputed and provided up to this limit. (default= 64)
iseed =
Defines the random seed to be used for the generation of alms from the power spectrum. (default= -1)
fwhm_arcmin =
Defines the FWHM size in arcminutes of the simulated Gaussian beam. (default= 420.0)
beam_file =
Defines the FITS file describing the Legendre window function of the circular beam to be used for the simulation. If set to an existing file name, it will override the fhwm_arcmin given above. (default=`')
almsfile =
Defines the input filename for a file containing alms for constrained realisations. (default= `'). If apply_windows is false those alms are used as they are, without being multiplied by the beam or pixel window function (with the assumption that they already have the correct window functions). If apply_windows is true, the beam and pixel window functions chosen above are applied to the constraining alm (with the assumption that those are free of beam and pixel window function). The code does not check the validity of these asumptions; if none is true, use the alteralm facility to modify or remove the window functions contained in the constraining alm.
apply_windows =
Determines how the constraining alm read from almsfile are treated with respect to window functions; see above for details. y, yes, t, true, .true. and 1 are considered as true, while n, no, f, false, .false. and 0 are considered as false, (default = .false.).
plmfile =
Defines the input filename for a file containing precomputed Legendre polynomials Plm. (default= `')
windowfile =
Defines the input filename for the pixel smoothing windows (default= pixel_window_n????.fits, see Notes on default files and directories on page [*])
winfiledir =
Defines the directory in which windowfile is located (default : see Notes on default files and directories on page [*]).


Synfast reads the power spectrum from a file in ascii FITS format. This can contain either just the temperature power spectrum CTls or temperature and polarisation power spectra: CTl, CEl, CBl and CT x El (see Note 1, below). If simul_type = 2 synfast generates Q and U maps as well as the temperature map. The output map(s) is (are) saved in a FITS file. The Cls are used up to the specified llmax, which can not exceed 4 x nsmax. If simul_type = 3 or 4 the first derivatives of the temperature field or the first and second derivatives respectively are output as well as the temperature itself: T(p), $\left({\partial T}/{\partial \theta}, {\partial T}/{\partial \phi}/\sin\theta \right)
$, $\left({\partial^2 T}/{\partial \theta^2}, {\partial^2 T}/{\partial
\theta\partial\phi}/\sin\theta,\right. $ $\left.{\partial^2 T}/{\partial \phi^2}/\sin^2\theta \right) $. If simul_type = 5 or 6 the first derivatives of the (T,Q,U) fields or the first and second derivatives respectively are output as well as the field themself: T(p), Q(p), U(p), $\left({\partial T}/{\partial \theta}, {\partial Q}/{\partial \theta}, {\partial
U}/{\partial \theta}; {\partial T}/{\partial \phi}/\sin\theta, \ldots \right)
$, $\left({\partial^2 T}/{\partial \theta^2},\ldots; {\partial^2 T}/{\partial
\theta\partial\phi}/\sin\theta,\ldots ;\right. $ $\left.{\partial^2 T}/{\partial \phi^2}/\sin^2\theta \ldots \right) $

The random sequence seed for generation of alm from the power spectrum should be non-zero integer. If 0 is provided, a seed is generated randomly by the code, based on the current date and time. The map can be convolved with a gaussian beam for which a beamsize can be specified, or for an arbitrary circular beam for which the Legendre transform is provided. The map is automatically convolved with a pixel window function. These are stored in FITS files in the healpix/data directory. If synfast is not run in a directory which has these files, or from a directory which can reach these files by a `../data/' or `./data/' specification, the system variable HEALPIX is used to locate the main HEALPix directory and its data subdirectory is scanned. Failing this, the location of these files must be specified (using winfiledir). In the interactive mode this is requested only when necessary (see Notes on default directories on page [*]).

If some of the alm in the simulations are constrained eg. from observations, a FITS file with these alm can be read. This FITS file contains the alm for certain l and m values and also the standard deviation for these alm. The sky realisation which synfast produces will be statistically consistent with the constraining alm.

The code can also be used to generate a set of alm matching the input power spectra, beam size and pixel size with or without actually synthesizing the map. Those alm can be used as an input (constraining alm) to another synfast run.
Spherical harmonics values in the synthesis are obtained from a recurrence on associated Legendre polynomials $P_{lm}(\theta)$. This recurrence consumed most of the CPU time used by synfast up to version 2.15. We have therefore included an option to load precomputed values for the $P_{lm}(\theta)$ from a file generated by the HEALPix facility plmgen. Since the introduction of accelerated spherical harmonic transforms in HEALPix v2.20, this feature is obsolete and should no longer be used.

Synfast will issue a warning if the input FITS file for the power spectrum does not contain the keyword POLNORM. This keyword indicates that the convention used for polarization is consistent with CMBFAST (and consistent with HEALPix 1.2). See the HEALPix Primer for details on the polarization convention and the interface with CMBFAST. If the keyword is not found, no attempt will be made to renormalize the power spectrum. If the keyword is present, it will be inherited by the simulated map.

Note 1: to allow the generation of maps (and alm) with $C^{T\times B}_{l} \ne 0$ and/or $C^{E\times B}_{l} \ne 0$, see the subroutine create_alm.


The following datasets are involved in the synfast processing.

Dataset Description
/data/pixel_window_nxxxx.fits Files containing pixel windows for various nsmax.


This section lists those routines and facilities (including those external to the HEALPix distribution) which can assist in the utilisation of synfast.

This HEALPix Fortran subroutine generates or reads the B(l) window function used in synfast
This HEALPix Fortran facility can be used to visualise the output map of synfast.
This HEALPix IDL facility can be used to visualise the output map of synfast.
This HEALPix Fortran facility can be used to implement the beam and pixel window functions on the constraining alms (almsfile file).
This HEALPix Fortran facility can analyse a HEALPix map and save the alm and Cls to be read by synfast.
This HEALPix Fortran facility can be used to generate precomputed Legendre polynomials.


Synfast runs in interactive mode, self-explanatory.


synfast filename
When 'filename' is present, synfast enters the non-interactive mode and parses its inputs from the file 'filename'. This has the following structure: the first entry is a qualifier which announces to the parser which input immediately follows. If this input is omitted in the input file, the parser assumes the default value. If the equality sign is omitted, then the parser ignores the entry. In this way comments may also be included in the file. In this example, the file contains the following qualifiers:
simul_type= 1
nsmax= 32
nlmax= 64
iseed= -1
fwhm_arcmin= 420.0
infile= cl.fits
outfile= map.fits

Synfast reads in the Cl power spectrum in 'cl.fits' up to l=64, and produces the (RING ordered) map 'map.fits' which has $N_{\rm side}=32$. The map is convolved with a beam of FWHM 420.0 arcminutes. The $\hyperref{iseed}{}{}{fac:synfast:iseed}=-1$ sets the random seed for the realisation. A different $\hyperref{iseed}{}{}{fac:synfast:iseed}$ would have given a different realisation from the same power spectrum.

were omitted, they take their default values (empty strings). This means that no file for constrained realisation or precomputed Legendre polynomials are read, the alm generated in the process are not output, and synfast attempts to find the pixel window files in the default directories (see page [*]).


* Initial release (HEALPix 0.90)
* Optional non-interactive operation. Proper FITS file support. Improved reccurence algorithm for $P_{lm}(\theta)$ which can compute to higher l values. Improved pixel windows averaged over actual HEALPix pixels. New functionality: constrained realisations, precomputed Plm. (HEALPix 1.00)
* New functionality: constrained realisations and pixel windows are now available for polarization as well. Arbitrary circular beams can be used. New parser (HEALPix 1.20)
* New functionnality: the generated alm can be output, and the map synthesis itself can be skipped. First and second derivatives of the temperature field can be produced on demand.
* New functionnality: First and second derivatives of the Q and U Stokes field can be produced on demand.
* Bug correction: corrected numerical errors on derivatives $\partial X/\partial\theta$, $\partial^2 X/(\partial\theta\partial\phi\sin\theta)$, $\partial^2 X/\partial \theta^2$, for X=Q,U. See this appendix for details. (HEALPix 2.14)


This section describes error messages generated by synfast

Message Severity Text
can not allocate memory for array xxx Fatal You do not have sufficient system resources to run this facility at the map resolution you required. Try a lower map resolution.

this is not a binary table

the fitsfile you have specified is not of the proper format
there are undefined values in the table! the fitsfile you have specified is not of the proper format
the header in xxx is too long the fitsfile you have specified is not of the proper format
XXX-keyword not found the fitsfile you have specified is not of the proper format
found xxx in the file, expected:yyyy the specified fitsfile does not contain the proper amount of data.

Version 3.31, 2017-01-06