spectral_sw1d

Function spectral_sw1d 

Source
pub(super) fn spectral_sw1d<const N: usize>(
    (l, m): (i32, i32),
    k: Jet<N>,
    r: [Jet<N>; 3],
    kpar: Jet<N>,
    reciprocal: Jet<N>,
    period: Jet<N>,
) -> Option<(Jet<N>, Rounding<N>)>
Expand description

The spectral series of a 1D spherical sum along z off the axis, with first-order bounds on its rounding errors in units of epsilon.

§Formula

By Poisson’s formula over the chain, S = (-i)^l i^|m| (-1)^m N_lm pi / (k a) ((x ± i y) / (k rho^2))^|m| sum_q F_l^m(q / k) u_q^|m| H_|m|(u_q) exp(-i q z) over the diffraction orders q = kpar + g reciprocal, with u_q = k_q rho, k_q = sqrt(k^2 - q^2) and the Legendre factor F_l^m = P_l^m / sin^|m| continued with sin = k_q / k.

§Branch

Im k_q >= 0: the root of the Ewald reciprocal sums at every split (see split_sheet).

§Why

Evanescent orders fall like (|q| / |k|)^l exp(-|q| rho), so the series converges fast off the axis, where the Ewald sum cancels. The value stops on its own moduli and the derivatives on the largest of all, both at QUIET_SHELL of them, so value-only and jet evaluations return the same value and bound.

None on the axis, for Re k <= 0, next to a diffraction threshold, beyond SERIES_SHELLS orders on either side or at a non-finite term.