MLFMM Representations of Electromagnetic Fields
The source volume of an equivalent source representation of a certain antena field (e.g., equivalent surface currents or an array of dipoles) may extend over a large volume (i.e., the diameter exceeds several wavelength) for certain fields. This may lead to a large number of source coefficients representing the electromagnetic field.
In these cases, it may be beneficial to represent the field contributions in a MLFMM datastructure which hierarchically divides the source volume into nested boxes. The MLFMMSource data structure implements this hierarchically nested representation scheme.
In AntenneFieldrepresentations.jl, this hierarchically nested data structure is implemented by the struct MLFMMSource{M,Y,C,X} which is a sub type of AntennaFieldRepresentation{Radiated,C}.
The type parameters have the following meaning:
| Parameter | Short Description |
|---|---|
M <: ResampleMap | Type of the ResampleMaps which are used to interpolate from one box level to the next |
Y <: SphereSamplingStrategy | Type of the sampling strategy of the PlaneWaveRepresentations used to represent the accumulated field contributions of each box |
C <: Complex | Element type of the coefficient vector |
X <: MLFMMTree | Type of the tree structure used to hirarchically split the source domain into subdomains |
Field representations by a MLFMMSource very efficiently implement
- the conversion into a
PlaneWaveRepresentation{Radiated}(i.e., a complete far-field patern) - the conversion into a
SphericalWaveExpansion(via the detour over a conversion into aPlaneWaveRepresentation{Radiated}) - the transmission operator with an
IrregularFieldSampling(as part of anMLFMMTransmitMap) - the transmission operator with a
SphericalFieldSampling(via the detour over a conversion into aSphericalWaveExpansion)
Constructors for an MLFMMSource
To generate an MLFMMSource, use the following constructor:
MLFMMSource(
basisfunctions, #Can be ::SurfaceCurrentDensity, ::DipoleArray, NamedTuple(:points,:sourcefunctions)
wavenumber::T;
expectedaccuracy = T(1e-3),
verbose = false,
minboxlength = π / (2*wavenumber),
orderθ = 8,
orderϕ = 8,
samplingtype::Type{S} = GaussLegendreθRegularϕSampling,
) where {T<:Real,S<:SphereSamplingStrategy}The input arguments for the constructor are
basisfunctions: Original antenna field representation which is the basis for theMLFMMsource. Can be of typeSurfaceCurrentDensity{Radiated},DipoleArray{Radiated}or (will soon be implemented)NamedTuple(:points,:sourcefunctions)wavenumber: Wavenumber $\omega = 2\pi \, f$
The optional keyword arguments are
expectedaccuracy = T(1e-3): Defines the desired approximation accuracy for all operations involving theMLFMMsource. Mainly affects the number of samples used to store thePlaneWaveRepresentations for each box.verbose = false: Determines if (debug) text should be printed to console for all operations involving theMLFMMSource.minboxlength = π / (2 * wavenumber): Side length of the smallest box, defaults to half a wavelength. All larger box side lengths are a $2^n$-multiple of theminboxlength.orderθ=8: Interpolation order along $\theta$ for theResampleMaps used to intrpolate from one box level to the next. Only affectsResampleMapswith local interpolation strategies.orderϕ=8: Interpolation order along $\phi$ for theResampleMaps used to intrpolate from one box level to the next. Only affectsResampleMapswith local interpolation strategies.samplingtype::Type{SphereSamplingStrategy} = GaussLegendreθRegularϕSampling: Type of the sampling strategy of thePlaneWaveRepresentations used to represent the accumulated field contributions of each box