Representation of Antenna Fields

The electromagnetic fields of an antenna can be represented in various ways. Some of the most important field representations known from literature are implemented in AntennaFieldRepresentations.jl.

The core of AntennaFieldRepresentations.jl revolves around implemantations of the abstract type AntennaFieldRepresentation. Implementations of the type AntennaFieldRepresentation provide equivalent representations of the electromagnetic fields of an antenna (in a certain region of space where the representation converges). Each instance of AntennaFieldRepresentation is a discretized version of the antenna fields, i.e., a collection of coefficients from which the antenna fields can be (approximately) calculated. One of the imperatives behind AntennaFieldRepresentations.jl is that an AntennaFieldRepresentation behaves like an AbstractVector{C} with extra context. In particular, the wavenumber of the radiation frequency of the antenna field is stored in the AntennaFieldRepresentation.

Tip

Implementations of the type AntennaFieldrepresentation support the interface of Base.AbstractVector. In particular the methods Base.getindex and Base.setindex! are supported which allow to access the coefficient vector by indexing the struct representing the fields directly by square brackets [].


Three Different Propagation Types of AntennaFieldRepresentation

AntennaFieldRepresentations come in up to three different propagation types. For indicating the propagation type of a concrete AntennaFieldRepresentation-type, we use the singleton-types

  • Radiated,
  • Absorbed,
  • or Incident,

although not every implementation of AntennaFieldRepresentation will support all three variants.

Internally, Radiated, Absorbed, or Incident are represented by singleton types, which all subtype the abstract type PropagationType. The PropagationType is stored as the parameter P in the type definition of AntennaFieldRepresentation{P, C} to allow for efficient dispatch of methods implementing the AntennaFieldRepresentation interface (the other parameter C denotes the element type of the coefficient vector).

AntennaFieldRepresentation Interface

Any subtype of AntennaFieldrepresentation implements the following methods[1]:

Method nameOptionalFallback methodShort Description
Base.sizeNoSee interface of Base.AbstractVector
Base.getindexNoSee interface of Base.AbstractVector
Base.setindex!NoSee interface of Base.AbstractVector
Base.similarNoSee interface of Base.AbstractVector
asvectorNoReturn the coefficients as a vector
efieldYesefield!Return the E-field vector at given location
efield!NoIn-place version of efield
hfieldYeshfield!Return the H-field vector at given location
hfield!NoIn-place version of hfield
ehfieldYesehfield!Simulataneous calculation of E-field and H-field
ehfield!Yesefield!, hfield!In-place version of ehfield
farfieldNoReturn the farfield vector at given direction
getwavenumberNoReturn the wavenumber of the radiation frequency
setwavenumber!NoSet the wavenumber of the radiation frequency
rotateYesrotate!Rotate the representation by the Euler angles χ, θ, ϕ
rotate!NoIn-place version of rotate
spatialshiftYesspatialshift!Spatially shift representation to new location R
spatialshift!NoIn-place version of spatialshift
equivalentorderNoReturn the estimated spherical mode order L of the representation
changerepresentationYesChange the representation type. Not all resulting types are supported
transmitNoCalculate transmission between AUT and field sampling
  • 1Note for developers: If you want to implement your own subtype of AntennaFieldrepresentation, make sure to support this interface to adhere to the general functionality of this package.