LinearOps.jl
Luna.LinearOps.conj_clamp — Methodconj_clamp(n, ω)Simultaneously conjugate and clamp the effective index n to safe levels.
The real part is lower-bounded at 1e-3 and the imaginary part upper-bounded at an attenuation coefficient α of 3000 (130 dB/cm). The limits are somewhat arbitrary and chosen empirically from previous bugs. See https://github.com/LupoLab/Luna/pull/142.
See also αlim!.
Luna.LinearOps.make_const_linop — Methodmake_const_linop(grid, mode, λ0)Make constant linear operator for mode-averaged propagation in mode mode with a reference wavelength λ0.
Luna.LinearOps.make_const_linop — Methodmake_const_linop(grid, modes, λ0; ref_mode=1)Make constant (z-invariant) linear operator for multimode propagation. The frame velocity is taken as the group velocity at wavelength λ0 in the mode given by ref_mode (which indexes into modes)
Luna.LinearOps.make_const_linop — Methodmake_const_linop(grid, q::QDHT, n, frame_vel)Make constant linear operator for radial free-space. n is the refractive index (array) and β1 is 1/velocity of the reference frame.
Luna.LinearOps.make_const_linop — Methodmake_const_linop(grid, xygrid, n, frame_vel)Make constant linear operator for full 3D propagation. n is the refractive index (array) and β1 is 1/velocity of the reference frame.
Luna.LinearOps.make_linop — Methodmake_linop(grid, q::QDHT, nfun)Make z-dependent linear operator for radial free-space propagation. nfun(ω; z) should return the refractive index as a function of frequency ω and (kwarg) propagation distance z.
Luna.LinearOps.make_linop — Methodmake_linop(grid, xygrid, nfun)Make z-dependent linear operator for free-space propagation. nfun(ω; z) should return the refractive index as a function of frequency ω and (kwarg) propagation distance z.
Luna.LinearOps.neff_grid — Methodneff_grid(grid, modes, λ0; ref_mode=1)Create a closure that returns the effective index as a function of the frequency grid and mode index, rather than the mode and frequency themselves. Any Modes.AbstractMode may define its one method for neff_grid to accelerate repeated calculation on the same frequency grid.
Luna.LinearOps.neff_β_grid — Methodneff_β_grid(grid, mode, λ0; ref_mode=1)Create closures which return the effective index and propagation constant as a function of the frequency grid index, rather than the frequency itself. Any Modes.AbstractMode may define its own method for neff_β_grid to accelerate repeated calculation on the same frequency grid.
Luna.LinearOps.αlim! — Methodαlim!(α)Limit α so that we do not get overflow in exp(α*dz)