Spherical Modes
So far only single modes (not their superposition) are implemented.
Definition
The spherical modes are defined following the conventions of [5], however adapted to the time convention $\mathrm{e}^{\,\mathrm{j}\omega t}$.
TE Modes
The functions
\[\begin{aligned} \bm{f}_{1mn}^{(c)}(r,\vartheta, \varphi) = \cfrac{1}{2\pi} \cfrac{1}{n(n+1)}{\left(-\frac{m}{|m|}\right)}^m &\left(\mathrm{h}_n^{(c)}(kr)\frac{\mathrm{j}m\bar{\mathrm{P}}_n^{|m|}(\cos\vartheta)}{\sin\vartheta}\mathrm{e}^{\mathrm{j}m\varphi} \bm{e}_\vartheta \right. \\ &~~\left. -\mathrm{h}_n^{(c)}(kr)\cfrac{\mathrm{d} \bar{\mathrm{P}}_n^{|m|}(\cos\vartheta) }{\mathrm{d}\vartheta} \mathrm{e}^{\mathrm{j}m\varphi} \bm{e}_\varphi ~\right) \end{aligned}\]
form the $\mathrm{TE}_{mn}$ modes, where $\mathrm{P}_n^m$ denote the associated Legendre polynomials and $\mathrm{h}_n^{(c)}(x)$ denote the spherical Hankel functions.
TM Modes
The functions
\[\begin{aligned} \bm{f}_{2mn}^{(c)}(r,\vartheta, \varphi) = \cfrac{1}{2\pi} \cfrac{1}{n(n+1)}{\left(-\frac{m}{|m|}\right)}^m \Bigg(&\cfrac{n(n+1)}{kr}\mathrm{h}_n^{(c)} \bar{\mathrm{P}}_n^{|m|}(\cos\vartheta) \mathrm{e}^{\mathrm{j}m\varphi} \bm{e}_r \Bigg. \\ &+ \cfrac{1}{kr} \cfrac{\mathrm{d}\left( kr \mathrm{h}_n^{(c)}(kr)\right)}{\mathrm{d}(kr)} \cfrac{\mathrm{d} \bar{\mathrm{P}}_n^{|m|}(\cos\vartheta) }{\mathrm{d}\vartheta} \mathrm{e}^{\mathrm{j}m\varphi} \bm{e}_\vartheta \\ &\Bigg. \frac{1}{kr} \cfrac{\mathrm{d}\left( kr \mathrm{h}_n^{(c)}(kr)\right)}{\mathrm{d}(kr)}\cfrac{\mathrm{j}m\bar{\mathrm{P}}_n^{|m|}(\cos\vartheta)}{\sin\vartheta}\mathrm{e}^{\mathrm{j}m\varphi} \bm{e}_\varphi \Bigg) \,\text{.} \end{aligned}\]
form the $\mathrm{TM}_{mn}$ modes.
By $c=1$ inward travelling waves and by $c=2$ outward travelling waves are denoted.
The change of time convention from [5] to the one of this package is achieved solely by interchanging these values.
API
The API provides the following constructors with default values:
SphericalScattering.SphericalModeTE
— Typeex = SphericalModeTE(;
embedding = Medium(ε0, μ0),
frequency = error("missing argument `frequency`"),
amplitude = 1.0,
m = 0,
n = 1,
c = 1,
center = SVector{3,typeof(frequency)}(0.0, 0.0, 0.0),
orientation = SVector{3,typeof(frequency)}(0.0, 0.0, 1.0),
)
SphericalScattering.SphericalModeTM
— Typeex = SphericalModeTM(;
embedding = Medium(ε0, μ0),
frequency = error("missing argument `frequency`"),
amplitude = 1.0,
m = 0,
n = 1,
c = 1,
center = SVector{3,typeof(frequency)}(0.0, 0.0, 0.0),
orientation = SVector{3,typeof(frequency)}(0.0, 0.0, 1.0),
)
Incident Field
The electric field is given by
\[\bm e^\mathrm{TE,inc}_{mn} = k \sqrt{Z_\mathrm{F}} \bm{f}_{1mn}^{(1)}\]
and
\[\bm e^\mathrm{TM,inc}_{mn} = k \sqrt{Z_\mathrm{F}} \bm{f}_{2mn}^{(1)}\]
The magnetic field is given by
\[\bm h^\mathrm{TE,inc}_{mn} = \cfrac{\mathrm{j} k}{\sqrt{Z_\mathrm{F}}} \bm{f}_{1mn}^{(1)}\]
and
\[\bm h^\mathrm{TM,inc}_{mn} = \cfrac{\mathrm{j} k}{\sqrt{Z_\mathrm{F}}} \bm{f}_{2mn}^{(1)}\]
The modes are assumed to travel towards the origin.
API
The general API is employed:
E = field(ex, ElectricField(point_cart))
H = field(ex, MagneticField(point_cart))
FF = field(ex, FarField(point_cart))
The far-field for a spherical mode makes only sense when travelling outwards.
Scattered Field
Matching incoming and outcoming waves to fulfull the boundary condition $\bm e_\mathrm{tan} = \bm 0$ yields the scattering coefficients
\[\xi_\mathrm{TE} = -\cfrac{\mathrm{H}^{(2)}_{n + 0.5}(k a)}{\mathrm{H}^{(1)}_{n + 0.5}(k a)}\]
and
\[\xi_\mathrm{TM} = -\cfrac{\mathrm{H}'^{(2)}_{n + 0.5}(k a)}{\mathrm{H}'^{(1)}_{n + 0.5}(k a)}\]
where $\mathrm{H}^{(\nu)}_{n}(x)$ denotes the Hankel function of $\nu$-th kind and $n$-th order.
The scattered fields $\bm e^\mathrm{sc}$ are then given by
\[\bm e_\mathrm{TE}^\mathrm{sc} = \xi_\mathrm{TE} k \sqrt{Z_\mathrm{F}} \bm{f}_{1mn}^{(2)}\]
and
\[\bm e_\mathrm{TM}^\mathrm{sc} = \xi_\mathrm{TM} k \sqrt{Z_\mathrm{F}} \bm{f}_{2mn}^{(2)} \,.\]
API
The general API is employed:
E = scatteredfield(sp, ex, ElectricField(point_cart))
H = scatteredfield(sp, ex, MagneticField(point_cart))
FF = scatteredfield(sp, ex, FarField(point_cart))
Total Field
API
The general API is employed:
E = field(sp, ex, ElectricField(point_cart))
H = field(sp, ex, MagneticField(point_cart))
The total far-field for a spherical mode excitation is not defined.