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_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. The following beam models 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

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_components.beam_decs
      src->point_components.beam_has
      src->gauss_components.beam_decs
      src->gauss_components.beam_has
      src->shape_components.beam_decs
      src->shape_components.beam_has
      

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

  • All other beams:
    • Assert that beam_settings->beamtype is set correctly

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.