pub fn cylindrical_channels(
basis: Basis,
ks: [Complex; 2],
q: Vec<[f64; 2]>,
polarizations: Vec<u8>,
period: f64,
helicity: bool,
fixed_q: bool,
) -> Result<(DMatrix<Complex>, CylindricalChannelsResidual)>Expand description
Incident and radiated channels of a cylindrical basis in a 1D array along x with
lattice period.
The plane modes are q = (kz, kx) with polarizations polarizations. The order
(kz, kx) is that of a plane basis permuted to the zx plane, as treams permutes it
in SMatrices.from_array. The axial kz values are fixed labels, and pol has the
meaning of spherical_channels.
The rows of the matrix pack (incident/radiated, up/down, cylindrical mode), as the
module documentation shows; its columns are plane modes. With fixed_q, the pullback
holds the kx components fixed.
Upstream: the plane-wave expansions inside treams.SMatrices.from_array.