Primary Beams¶
WODEN
has been written to include stationary primary beams. That means the beam is pointed at a constant azimuth / zenith angle during an observation. These are the beam models available at the
moment:
None - gains of 1.0, leakages 0.0
Gaussian - a frequency dependent Gaussian beam; FWHM can be set by user
EDA2 - a single MWA dipole on an infinite ground screen
MWA analytic - an analytic model of the MWA primary beam
MWA FEE (coarse) - the Fully Embedded Element MWA model (1.28 MHz frequency resolution)
MWA FEE (interp) - frequency interpolated MWA FEE model (80 kHz resolution between 167 - 197 MHz)
See below for details on each model.
MWA Fully Embedded Element¶
The Murchison Widefield Array (MWA, Tingay et al. 2013) has 16 bow-tie dipoles arranged in a 4 by 4 grid as receiving elements, yielding a grating-lobe style primary beam.
WODEN
uses the mwa_hyperbeam implementation of the MWA Fully Embedded Element (FEE) Beam pattern (Sokolowski et al. 2017), which to date is the most accurate model of the MWA primary beam. This model is defined in a spherical harmonic coordinate system, which is polarisation-locked to instrumental azimuth / elevation coordinates. WODEN
however uses Stokes parameters to define it’s visibilities, so employs the hyperbeam
option to rotate the beam about parallactic angle (as calculated using erfa
) to align it into the Stokes frame.
Due to convention issues with whether ‘X’ means East-West or North-South, and whether azimuth starts towards North and increase towards East, the rotation inside hyperbeam
also applies a reordering of polarisations. For an exhaustive investigation into why this is necessary to obtain the expected Stokes parameters, see polarised_source_and_FEE_beam.ipynb which lives here
I can define the Jones matrix of the primary beam as:
Here, the subscript \(x\) means a polarisation angle of \(0^\circ\) and \(y\) an angle of \(90^\circ\), \(g\) means a gain term, and \(D\) means a leakage term (so \(x\) means North-South and \(y\) is East-West). Under this definition, a typical zenith-pointing looks like this (after rotation):
These plots are down to a zenith angle of about 20 deg, with northward at the top. If we assume the sky is totally Stokes I, this will yield linear polarisations (where ‘XX’ is North-South and ‘YY’ is East-West) like this:
The MWA beam is electronically steered, which can be defined via integer delays and supplied to the MWA FEE beam. run_woden.py
can read these directly from an MWA metafits file, or can be directly supplied using the --MWA_FEE_delays
argument.
Coarse resolution model --primary_beam=MWA_FEE
¶
The frequency resolution of the default MWA FEE model, which is stored in the file mwa_full_embedded_element_pattern.h5
, is 1.28 MHz. If you need a smooth frequency
response, this might not be the best option for you, as you’ll end up with something like
this plot, which shows the linear Stokes towards an interesting direction as a function of frequency (very low gain but should have a curved response):
Interpolated resolution model --primary_beam=MWA_FEE_interp
¶
Recently, Daniel Ung interpolated the spherical harmonic coefficients of the MWA FEE model, to
produce a new hdf5
file, MWA_embedded_element_pattern_rev2_interp_167_197MHz.h5
.
This new file has an 80 kHz resolution, so if look at the frequency behaviour in the same direction
as the coarse model shown above:
we see that the frequency behaviour of the beam is well described and smooth.
Warning
However, this model is only interpolated between 167 and 197 MHz. Anything below 167 MHz will give the 167 MHz response, and similarly for above 197 MHz.
MWA Analytic¶
If you want something representative of the MWA beam, which is smooth in frequency,
the analytic MWA beam model (copied over from the RTS
) is a good option. It lacks
the mutual coupling effects present in the FEE model, and is purely real, but when
we plot the linear Stokes on the sky we see decent agreement with the FEE beam.
Todo
Capture the actual mathematics behind the model so people can reproduce
EDA2¶
The 2nd version of the Engineering Development Array (EDA2, Wayth et al. 2017), is an SKA_LOW test station, which swaps the planned logarithmic ‘christmas tree’ dipoles for MWA bow-tie dipoles. Currently, WODEN
just assumes a perfect dipole with an infinite ground screen as a beam model. This makes the primary beam entirely real, with no leakage terms. Explicitly, the beam model is
where \(h\) is the height of the dipole, \(\lambda\) is the wavelength, \(\theta\) is the zenith angle, \(\phi\) is the azimuth angle. I’ve set \(h=0.3\) m.
The beams basically see the whole sky (this image shows some \(\mathbf{J_\mathrm{linear}}\) values at 70 MHz):
Note
The EDA2 beam is neither physically nor electronically steered, so it always points towards zenith.
Gaussian¶
This is a toy case of a symmetric (major = minor) Gaussian primary beam. The beam gets smaller on the sky with increasing frequency, but both polarisations are identical. You can control the pointing of the beam (which remains constant in az/za for a single observation) via an initial RA/Dec pointing (--gauss_ra_point
, --gauss_dec_point
), and the FWHM of the beam (--gauss_beam_FWHM
) at a reference frequency (--gauss_beam_ref_freq
).
I’ve implemented this beam by creating a cosine angle coordinate system locked to the initial hour angle and declination of the specified RA,Dec pointing \(l_\mathrm{beam}, m_\mathrm{beam}, n_\mathrm{beam}\). The beam is then calculated as
where
Currently, I have set the position angle of the beam \(\phi_{\mathrm{PA}}=0\) the std \(\sigma_l = \sigma_m\) to be equal, as:
where \(\varphi_0\) is the desired FWHM at reference frequency \(\nu_0\), and \(\nu\) is the frequency to calculate the beam at.
An example of a zenith pointing, with \(\varphi_0 = 10^\circ, \nu_0=100\) MHz looks like:
Using the same settings with an off-zenith pointing yields:
which at least visually looks like we are getting realistic-ish projection effects of the beam towards the horizon.
Note
The machinery is there to have different major / minor axes and a position angle if this is desired. Just open an issue on the github if you want this implemented.