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)