Dispersion
GNLSE.DispersionModel — Type
DispersionModelAbstract base type for chromatic-dispersion models. A model maps the relative angular-frequency grid V = ω - ω₀ [rad/s] to the propagation-constant deviation B(V) [1/m] used in the dispersion operator D = iB - α/2.
Concrete models: TaylorDispersion, TabulatedDispersion.
GNLSE.TaylorDispersion — Type
TaylorDispersion(betas)Dispersion from a Taylor expansion of the propagation constant about ω₀:
B(V) = Σ βₙ / n! · Vⁿ , n ≥ 2betas[1] = β₂ [s²/m], betas[2] = β₃ [s³/m], … (β₀ and β₁ are excluded).
GNLSE.TabulatedDispersion — Type
TabulatedDispersion(detuning, beta)Dispersion from a measured/tabulated curve. detuning is the relative angular frequency ω - ω₀ [rad/s] (sorted ascending); beta is the corresponding propagation-constant deviation B [1/m] in the co-moving frame. Values are linearly interpolated onto the simulation grid; outside the tabulated range the nearest endpoint is held (flat extrapolation).
GNLSE.SellmeierDispersion — Type
SellmeierDispersion(B, C)Dispersion computed directly from Sellmeier coefficients:
n²(λ) = 1 + Σ Bᵢ · λ² / (λ² - Cᵢ)B is a vector of dimensionless coefficients, and C is a vector of resonance wavelengths squared (usually in μm²).
Constructors
SellmeierDispersion(B, C; microns=true)If microns is true (default), the C coefficients are assumed to be in μm² and will be converted to m² for natural SI unit calculations.
GNLSE.dispersion_operator — Function
dispersion_operator(V::AbstractVector{Float64}, medium::AbstractMedium, z::Float64=0.0)Construct the linear dispersion & gain/loss operator D(V, z) = i·B(V) + (g(V, z) - α(V, z))/2 [1/m].
dispersion_operator(grid::Grid, medium::AbstractMedium, z::Float64=0.0)Convenience wrapper that extracts V from grid.
GNLSE.propagation_constant — Function
propagation_constant(V, model::DispersionModel)Propagation-constant deviation B(V) [1/m] for the dispersion model, sampled on the relative angular-frequency grid V = ω - ω₀ [rad/s]. This is an intermediate quantity (intermediate in the frequency domain) used internally to construct the dispersion operator dispersion_operator.
Method Implementations
For TaylorDispersion, computes the power-series expansion:
B(V) = Σ βₙ/n! · Vⁿ, n ≥ 2This representation is fast and suits analytical studies, but assumes dispersion is smooth and well-approximated by the first few terms.
For TabulatedDispersion, linearly interpolates the measured/numerically-computed dispersion curve onto the simulation grid, then uses constant extrapolation beyond the tabulated frequency range. This is more accurate for complex materials (PCF, highly dispersive windows) but requires tabulated data.
propagation_constant(V::AbstractVector{Float64}, model::SellmeierDispersion, omega0::Float64)Compute the propagation constant deviation B(V) using the Sellmeier dispersion equation.
GNLSE.loss_vector — Function
loss_vector(V, medium, z=0.0) -> Vector{Float64}Non-mutating version of loss_vector!.
GNLSE.loss_vector! — Function
loss_vector(V, medium, z=0.0) -> Vector{Float64}Compute linear attenuation vector α [Np/m] across relative angular frequencies V at position z. Supports scalar loss [dB/m], vector spectrum loss [dB/m], and function loss(z), loss(ω), or loss(ω, z).
GNLSE.gain_vector — Function
gain_vector(V, medium, z=0.0) -> Vector{Float64}Non-mutating version of gain_vector!.
GNLSE.gain_vector! — Function
gain_vector(V, medium, z=0.0) -> Vector{Float64}
gain_vector!(res, V, medium, z=0.0) -> Vector{Float64}Compute small-signal gain vector g₀ [Np/m] across relative angular frequencies V at position z. Supports scalar gain [Np/m], vector gain spectrum g₀(ω), and function g₀(z), g₀(ω), or g₀(ω, z).
GNLSE.SilicaLossSpectrum — Type
SilicaLossSpectrum(; C_R=1.7, alpha_OH=50.0, lambda_OH=1.383e-6, sigma_OH=0.015e-6, A_IR=6.0e7, B_IR=48.0e-6)Callable loss model for standard fused silica optical fiber attenuation [dB/m] as a function of angular frequency omega [rad/s].
Includes:
- Rayleigh scattering: αRayleigh(λ) = CR / (λ [μm])⁴ [dB/km] (default C_R = 1.7 dB·μm⁴/km)
- OH absorption peak at 1383 nm (default peak 50 dB/km)
- Infrared multiphonon absorption edge: αIR(λ) = AIR · exp(-B_IR / λ) [dB/km]