primary_beam

Tests for the functions in WODEN/src/primary_beam.c. These functions setup primary beam settings, ready to calculate beam responses on the GPU.

test_calc_para_angle.c

primary_beam::calc_para_angle calculates the parallactic angle for all COMPONENTs, for all time steps. This test calls calc_para_angle for three POINT, three GAUSSIAN, and three SHAPELET COMPONENTs, for three different LSTs. The different COMPONENT types are given different RA/Decs. The results are compared to expected values, which are stored in expected_para_angles.h. For FLOAT compiled code, the absolute tolerance threshold is set to 1e-7, and 1e-15 for DOUBLE compiled code.

test_fill_primary_beam_settings.c

primary_beam::fill_primary_beam_settings prepares a beam_settings_t struct to be used by calculate_visibilities::calculate_visibilities. The az,za coords have already been calculated by chunk_sky_model::create_chunked_sky_models, which is sufficient for some beam models. There are a number of beam models that need further inputs:

  • GAUSS_BEAM and MWA_ANALY: both need the hour angle of all COMPONENTs for all time steps, so fill_primary_beam_settings makes this calculation

  • FEE_BEAM and FEE_BEAM_INTERP: need the parallactic angle to rotate the telescope-based coords into the Stokes frame

The tests here call fill_primary_beam_settings for all primary beam types, and perform the following checks:

  • GAUSS_BEAM:
    • Assert that beam_settings->beamtype == GAUSS_BEAM

    • Assert that a number of constants are copied from woden_settings into beam_settings

  • GAUSS_BEAM or MWA_ANALY
    • Assert that:

      src->point_gaussbeam_decs
      src->point_gaussbeam_has
      src->gauss_gaussbeam_decs
      src->gauss_gaussbeam_has
      src->shape_gaussbeam_decs
      src->shape_gaussbeam_has
      

      have been set to the correct values for all COMPONENTs and time steps.

    Note

    Even though the arrays say ‘gaussbeam’, really the HA/Dec are what’s important, as the analytic MWA beam also needs them. In the next release, the catsource_t and source_catalogue_t structs will be overhauled with something far more sensible.

  • FEE_BEAM or FEE_BEAM_INTERP:
    • Assert that:

      src->sin_point_para_angs
      src->cos_point_para_angs
      src->sin_gauss_para_angs
      src->cos_gauss_para_angs
      src->sin_shape_para_angs
      src->cos_shape_para_angs
      

      have been set to the correct values for all COMPONENTs and time steps

  • ANALY_DIPOLE:
    • Assert that beam_settings->beamtype == ANALY_DIPOLE

  • NO_BEAM:
    • Assert that beam_settings->beamtype == NO_BEAM

For FLOAT compiled code, the absolute tolerance threshold on values is set to 1e-7, and 1e-15 for DOUBLE compiled code. For values that are 64 bit in both the FLOAT and DOUBLE versions the values are tested using TEST_ASSERT_EQUAL_DOUBLE.