NonlinearRHS.jl
Luna.NonlinearRHS.TransFree — Method(t::TransFree)(nl, Eω, z)Calculate the reciprocal-domain (ω-kx-ky-space) nonlinear response due to the field Eω and place the result in nl.
Luna.NonlinearRHS.TransFree — MethodTransFree(grid, xygrid, FT, responses, densityfun, normfun)Construct a TransFree to calculate the reciprocal-domain nonlinear polarisation.
Arguments
grid::AbstractGrid: the grid used in the simulationxygrid: the spatial grid (instances ofGrid.FreeGrid)FT::FFTW.Plan: the full 3D (t-y-x) Fourier transform for the oversampled time gridresponses:Tupleof response functionsdensityfun: callable which returns the gas density as a function ofznormfun: normalisation factor as fctn ofz, can be created vianorm_free
Luna.NonlinearRHS.TransModal — TypeTransModalTransform E(ω) -> Pₙₗ(ω) for modal fields.
Luna.NonlinearRHS.TransModal — MethodTransModal(grid, ts, FT, resp, densityfun, norm!; rtol=1e-3, atol=0.0, mfcn=300, full=false)Construct a TransModal, transform E(ω) -> Pₙₗ(ω) for modal fields.
Arguments
grid::AbstractGrid: the grid used in the simulationts::Modes.ToSpace: pre-createdToSpacefor conversion from modal fields to spaceFT::FFTW.Plan: the time-frequency Fourier transform for the oversampled time gridresp:Tupleof response functionsdensityfun: callable which returns the gas density as a function ofznorm!: normalisation function as fctn ofz, can be created vianorm_modalrtol::Float=1e-3: relative tolerance on theHCubatureintegrationatol::Float=0.0: absolute tolerance on theHCubatureintegrationmfcn::Int=512: maximum number of function evaluations for one modal integrationfull::Bool=false: iftrue, use full 2-D mode integral, iffalse, only do radial integral
Luna.NonlinearRHS.TransModeAvg — TypeTransModeAvgTransform E(ω) -> Pₙₗ(ω) for mode-averaged single-mode propagation.
Luna.NonlinearRHS.TransRadial — TypeTransRadialTransform E(ω) -> Pₙₗ(ω) for radially symetric free-space propagation
Luna.NonlinearRHS.TransRadial — Method(t::TransRadial)(nl, Eω, z)Calculate the reciprocal-domain (ω-k-space) nonlinear response due to the field Eω and place the result in nl
Luna.NonlinearRHS.TransRadial — MethodTransRadial(grid, HT, FT, responses, densityfun, normfun)Construct a TransRadial to calculate the reciprocal-domain nonlinear polarisation.
Arguments
grid::AbstractGrid: the grid used in the simulationHT::QDHT: the Hankel transform which defines the spatial gridFT::FFTW.Plan: the time-frequency Fourier transform for the oversampled time gridresponses:Tupleof response functionsdensityfun: callable which returns the gas density as a function ofznormfun: normalisation factor as fctn ofz, can be created vianorm_radial
Luna.NonlinearRHS.Et_to_Pt! — MethodEt_to_Pt!(Pt, Et, responses, density)Accumulate responses induced by Et in Pt.
Luna.NonlinearRHS.const_norm_free — Methodconst_norm_free(grid, xygrid, nfun)Make function to return normalisation factor for 3D propagation without re-calculating at every step.
Luna.NonlinearRHS.const_norm_radial — Methodconst_norm_radial(ω, q, nfun)Make function to return normalisation factor for radial symmetry without re-calculating at every step.
Luna.NonlinearRHS.copy_scale! — Methodcopy_scale!(dest, source, N, scale)Copy first N elements from source to dest and simultaneously multiply by scale factor. For multi-dimensional dest and source, work along first axis.
Luna.NonlinearRHS.copy_scale_both! — Methodcopy_scale_both!(dest::Vector, source::Vector, N, scale)Copy first and last N elements from source to first and last N elements in dest and simultaneously multiply by scale factor. For multi-dimensional dest and source, work along first axis.
Luna.NonlinearRHS.norm_free — Methodnorm_free(grid, xygrid, nfun)Make function to return normalisation factor for 3D propagation.
Luna.NonlinearRHS.norm_modal — Methodnorm_modal(grid; shock=true)Normalisation function for modal propagation. If shock is false, the intrinsic frequency dependence of the nonlinear response is ignored, which turns off optical shock formation/ self-steepening.
Luna.NonlinearRHS.norm_radial — Methodnorm_radial(ω, q, nfun)Make function to return normalisation factor for radial symmetry.
Luna.NonlinearRHS.to_freq! — Methodto_freq!(Aω, Aωo, Ato, FTplan)Transform oversampled A(t) to A(ω) on normal grid
Luna.NonlinearRHS.to_time! — Methodto_time!(Ato, Aω, Aωo, IFTplan)Transform $A(ω)$ on normal grid to $A(t)$ on oversampled time grid.