Dispersion

GNLSE.DispersionModelType
DispersionModel

Abstract 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.

source
GNLSE.TaylorDispersionType
TaylorDispersion(betas)

Dispersion from a Taylor expansion of the propagation constant about ω₀:

B(V) = Σ βₙ / n! · Vⁿ ,   n ≥ 2

betas[1] = β₂ [s²/m], betas[2] = β₃ [s³/m], … (β₀ and β₁ are excluded).

source
GNLSE.TabulatedDispersionType
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).

source
GNLSE.SellmeierDispersionType
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.

source
GNLSE.dispersion_operatorFunction
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].

source
dispersion_operator(grid::Grid, medium::AbstractMedium, z::Float64=0.0)

Convenience wrapper that extracts V from grid.

source
GNLSE.propagation_constantFunction
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 ≥ 2

This 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.

source
propagation_constant(V::AbstractVector{Float64}, model::SellmeierDispersion, omega0::Float64)

Compute the propagation constant deviation B(V) using the Sellmeier dispersion equation.

source
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).

source
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).

source
GNLSE.SilicaLossSpectrumType
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:

  1. Rayleigh scattering: αRayleigh(λ) = CR / (λ [μm])⁴ [dB/km] (default C_R = 1.7 dB·μm⁴/km)
  2. OH absorption peak at 1383 nm (default peak 50 dB/km)
  3. Infrared multiphonon absorption edge: αIR(λ) = AIR · exp(-B_IR / λ) [dB/km]
source