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"]
}](../../../_images/graphviz-808f3f3b268b92857561e6450e1cb1e28462fc69.png)
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:
antenna – Antenna 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).
-
virtual std::unique_ptr<PrecalculatedData> Precalculate(std::span<const double> frequencies, std::span<const std::pair<double, double>> directions) const = 0
-
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
-
enumerator kMeerKat
-
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"]
}](../../../_images/graphviz-236d9b16363b79b03254f1586c48c1d411a6387b.png)
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
CalculateResponsesfunction is expected to cast it to the correct type.Subclassed by HamakerPrecalculatedData, MeerKatPrecalculatedData