Beamforming

Beamformer functions.

beamformer.beamform(station, weights=None, delays=None, freq=60000000.0, azimuth=0.0, elevation=90.0, resolution=1.0, ant_gain_file=None, ant_corr_file=None, dB=False, verbose=True)

Given a weighting vector and beam_simulator.Station object, simulate the beam pattern on the sky for a given frequency and pointing.

Inputs:
  • station - Station object

  • w - Weighting array

  • freq - Frequency [Hz]

  • azimuth - Azimuth Eastward of North [deg]

  • elevation - Elevation above horizon [deg]

  • resolution - Simulation resolution [deg]

  • ant_gain_file - Antenna gain file output by nec.combine_harmonic_fits (.npz)

  • ant_corr_file - Empirical correction to an antenna gain pattern. This is only designed for the LWA.

  • dB - Convert final simulated power to dB

Returns:
  • 2-D array of shape (360/resolution X 90/resolution)

beamformer.calc_geometric_delays(station, freq=60000000.0, azimuth=0.0, elevation=90.0)

Calculate the geometric delays between station elements for a given frequency (Hz) and az/el pointing center (deg).

Inputs:
  • station - Station object

  • freq - Frequency [Hz]

  • azimuth - Azimuth Eastward of North [deg]

  • elevation - Elevation above horizon [deg]

Returns:
  • Delays array of size length len(station.antennas)

beamformer.generate_gaussian_weights(station, freq=60000000.0, azimuth=0.0, elevation=90.0, fwhm=5.0)

Return a weighting vector with Gaussian weights relative to the station geometric center for a custom beam with a given main lobe FWHM (deg) at a given frequency (Hz) and az/el pointing center (deg).

See DiLullo, Taylor, and Dowell (2020) for a description of the method.

Inputs:
  • station - Station object

  • freq - Frequency [Hz]

  • azimuth - Azimuth Eastward of North [deg]

  • elevation - Elevation above horizon [deg]

  • fwhm - FWHM of the main lobe [deg]

Returns:
  • Array of size length len(station.antennas)

beamformer.generate_uniform_weights(station)

Return a weighting vector with uniform weights (w = 1.0 for all elements) for a given Station object.

Inputs:
  • Station object

Returns:
  • Array of size len(station.antennas)