everybeam::elementmodel

namespace elementmodel

The everybeam::elementmodel namespace contains all the required logic to compute the element response of different element model types.

class ElementModel

Inheritance diagram for everybeam::elementmodel::ElementModel:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "1" [label="ElementModel" tooltip="ElementModel" fillcolor="#BFBFBF"]
    "2" [label="HamakerElementModel" tooltip="HamakerElementModel"]
    "3" [label="MeerKatElementModel" tooltip="MeerKatElementModel"]
    "2" -> "1" [dir=forward tooltip="public-inheritance"]
    "3" -> "1" [dir=forward tooltip="public-inheritance"]
}

Abstract base class for element models.

This class defines the interface for precalculating and computing antenna element responses.

Subclassed by HamakerElementModel, MeerKatElementModel

Public Functions

virtual std::unique_ptr<PrecalculatedData> Precalculate(std::span<const double> frequencies, std::span<const std::pair<double, double>> directions) const = 0

Precomputes data needed for response calculations for antennas with the same pointing direction and coordinate system.

Parameters:
  • frequencies – A span of frequency values for which responses are required.

  • directions – A span of (theta, phi) pairs representing the local incoming directions of the antenna elements for which responses are required.

virtual const xt::xtensor<aocommon::MC2x2, 3> &CalculateResponses(const facade::Antenna &antenna, const PrecalculatedData &precalculated_data) const = 0

Computes the Jones matrix responses for a single antenna.

This function uses the precomputed data stored in PrecalculatedData. To use this function, call Precalculate first and pass the precalculated_data object. You only need to call Precalculate once for all antennas that share the same pointing direction and coordinate system.

Parameters:
  • antennaAntenna for which the response needs to be calculated.

  • precalculated_data – A reference to precomputed data.

Returns:

A 3D xtensor of size [elements][frequencies][directions], storing the calculated Jones matrices (the elements dimension will always have a size of 1 for a dish-based antenna).

std::unique_ptr<ElementModel> everybeam::elementmodel::CreateElementModel(ElementModelType element_model_type)

Returns a ElementModel object given a ElementModelType.

enum class everybeam::elementmodel::ElementModelType

Values:

enumerator kMeerKat
enumerator KHamakerLofarLba
struct PrecalculatedData

Inheritance diagram for everybeam::elementmodel::PrecalculatedData:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "1" [label="PrecalculatedData" tooltip="PrecalculatedData" fillcolor="#BFBFBF"]
    "2" [label="HamakerPrecalculatedData" tooltip="HamakerPrecalculatedData"]
    "3" [label="MeerKatPrecalculatedData" tooltip="MeerKatPrecalculatedData"]
    "2" -> "1" [dir=forward tooltip="public-inheritance"]
    "3" -> "1" [dir=forward tooltip="public-inheritance"]
}

Base class for precomputed data used in element models.

The data stored in this class is fully dependent on the specific implementation of derived classes. The CalculateResponses function is expected to cast it to the correct type.

Subclassed by HamakerPrecalculatedData, MeerKatPrecalculatedData