Skip to content

Self-consistent / full SALT for modal intensities (relax linearized mode competition) #42

Description

@arnaudon

Background

The modal-intensity (L–I) curves in compute_modal_intensities are built from the linearized, near-threshold limit of SALT: a single pump-independent mode-competition matrix T and a linear solve

sum_nu T_{mu,nu} I_nu = D0 / D0_thr_mu - 1

This is exact at threshold and first-order-correct in slope, but it rests on two approximations that are really two halves of the same thing — not solving the spatial-hole-burning denominator self-consistently. See the new "Relation to full SALT (future work)" section in doc/source/lasing.rst for the full write-up.

The approximations

The full SALT equation for each lasing mode is

[∇² + (ε + γ(k_μ)·D0·δ_pump / (1 + Σ_ν Γ_ν |Ψ_ν|²)) k_μ²] Ψ_μ = 0,   Γ_ν = γ⊥²/((k_ν-k_a)²+γ⊥²)

netSALT's dispersion_relation_pump already builds ε_eff = ε + γ(k)·D0·δ_pump — i.e. the same gain operator with the denominator set to 1 (unsaturated). The two approximations are the first-order expansion of that denominator:

1 / (1 + Σ_ν Γ_ν |Ψ_ν|²)  ≈  1 - Σ_ν Γ_ν |Ψ_ν^thr(x)|² I_ν
  1. Pump-independent / linear T — only the first-order term is kept, so T is computed once and reused for all D0. This is what makes the L–I curves piecewise-linear. (compute_modal_intensities)
  2. Threshold-frozen profilesΨ_ν is evaluated at each mode's own threshold pump (graph_with_pump(threshold_ν)), not at the operating pump. (_precomputations_mode_competition)

They cannot be improved independently.

Proposed work (in increasing scope)

  • Self-consistent linearized (relax Refactor #2 only): fixed-point loop inside the pump sweep — solve I → rebuild T from the profiles at the current D0 → repeat. Reuses compute_mode_competition_matrix; captures profile deformation / gain guiding / frequency pulling, but keeps the linear saturation. Main cost: T-rebuild × iterations × pump steps.
  • Full SALT (relax merge dev to refactor #1 and Refactor #2): solve the nonlinear eigenproblem above with the real hole-burning denominator, Newton over (I_μ, k_μ, Ψ_μ) at each D0. Fold the denominator into the gain term of construct_laplacian and reuse the existing analytic edge overlaps (_compute_mode_competition_element). Gives sub-linear (clamping) L–I slopes, frequency shifts, and quantitatively correct competition far above threshold.

Why graphs are a favourable setting

The per-edge field is two analytic plane waves, the secular matrix L(k) = Bᵀ W⁻¹ B is already assembled, and the saturated-gain integrals are the same closed-form edge integrals already implemented for the competition matrix. So a full-SALT solver here is more tractable than in a general 2D/3D cavity.

Validation

  • Reduces to the current linear T in the threshold limit (I → 0).
  • Benchmark against a known uniform-edge / ring SALT result from the literature.
  • A cheap precursor (separate, easy): a mode_competition_drift diagnostic comparing T(D0_max) to T(D0_thr) to quantify how far the frozen-profile approximation has drifted for a given problem — tells you when the linear model is trustworthy.

References

  • Doc: doc/source/lasing.rst (Multimode lasing and mode competition + Relation to full SALT).
  • Türeci, Stone, Ge et al. — steady-state ab-initio laser theory (SALT).
  • Saxena et al., Nat. Commun. 13, 6573 (2022) — the netSALT model.

https://claude.ai/code/session_01EH6xEV2sQozKjjH6vNKjyC

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions