Skip to content

Breathers and exact solutions

Higher-order soliton solutions and breathers for GNLSE configurations. Docstrings are the source of truth, rendered with mkdocstrings (numpydoc style).

photonics_helper.breathers

Exact soliton-on-finite-background (breather) solutions of the NLSE.

Analytic solutions of the focusing nonlinear Schrödinger equation on a non-zero background. These describe modulation-instability growth and decay (Akhmediev breather), the extreme-event limit localised in both dimensions (Peregrine soliton), and the periodically breathing solution (Kuznetsov–Ma soliton). They are the structures seen in spontaneous MI and rogue-wave experiments and are the ground truth used by the narhi_2016_mi_breathers and kuznetsov_ma_2012_breather reproductions.

Convention

The dimensionless focusing NLSE used throughout this module is

.. math::

i\,\partial_\xi\psi + \tfrac{1}{2}\partial_\tau^2\psi
    + |\psi|^2\psi = 0,

which is the normalisation of the fibre equation i A_z = (β₂/2) A_TT − γ|A|²A in the anomalous-dispersion regime (β₂ < 0) under

.. math::

A(z,T) = \sqrt{P_0}\,\psi(\xi,\tau), \quad
T = \tau T_0, \quad z = \xi L_{NL}, \quad
L_{NL} = \frac{1}{\gamma P_0}, \quad
T_0 = \sqrt{|\beta_2|\,L_{NL}}.

The general solution (Akhmediev–Korneev) is

.. math::

\psi(\xi,\tau) = e^{i\xi}\left[1 +
    \frac{2(1-2a)\cosh(b\xi) + i b\sinh(b\xi)}
         {\sqrt{2a}\cos(\nu\tau) - \cosh(b\xi)}\right],

with :math:b = \sqrt{8a(1-2a)} and :math:\nu = 2\sqrt{1-2a}.

  • :math:a < 1/2 — Akhmediev breather (:math:b,\nu real): periodic in time, grows and decays once in :math:\xi.
  • :math:a = 1/2 — Peregrine soliton (limiting case).
  • :math:a > 1/2 — Kuznetsov–Ma soliton (:math:b,\nu imaginary): localised in time, periodic in :math:\xi.
References
  • N. Akhmediev & V. I. Korneev, Theor. Math. Phys. 69, 1089 (1986).
  • D. H. Peregrine, J. Austral. Math. Soc. Ser. B 25, 16 (1983).
  • B. Kibler et al., Nat. Phys. 6, 790 (2010); Sci. Rep. 2, 463 (2012).
  • M. Närhi et al., Nat. Commun. 7, 13675 (2016).
  • J. M. Dudley et al., Nat. Photon. 8, 755 (2014).

SolitonOnBackground dataclass

SolitonOnBackground(beta2: float, gamma: float, P0: float)

Physical mapping of the SFB family onto a fibre/waveguide.

Parameters:

Name Type Description Default
beta2 float — group-velocity dispersion β₂ in **s²/m**. Must be negative

(anomalous/focusing) for the breather solutions.

required
gamma float — nonlinear coefficient γ in 1/(W·m).
required
P0 float — background (plane-wave) power in W.
required

beta2 instance-attribute

beta2: float

gamma instance-attribute

gamma: float

P0 instance-attribute

P0: float

L_NL property

L_NL: float

Nonlinear length 1/(γ P₀) in m.

T0 property

T0: float

Time scale sqrt(|β₂| L_NL) in s.

xi

xi(z: float) -> float

tau

tau(t: NDArray | float) -> NDArray | float

psi

psi(z: float, t: NDArray | float, a: float) -> NDArray

Dimensionless SFB field at physical (z, t).

field

field(z: float, t: NDArray | float, a: float) -> NDArray

Physical envelope A(z, T) = sqrt(P0) psi in W^{1/2}.

peak_ratio

peak_ratio(a: float) -> float

Maximum |A|²/P0 of the SFB.

peak_power

peak_power(a: float) -> float

Maximum instantaneous power P0 · |psi|² in W.

spatial_period_m

spatial_period_m(a: float) -> float

Kuznetsov–Ma breathing period in m (a > 1/2).

temporal_period_s

temporal_period_s(a: float) -> float

Akhmediev temporal period in s (a < 1/2).

initial_wave

initial_wave(grid: TemporalGrid, a: float, z0: float = 0.0, wavelength: Wavelength | None = None) -> Wave

Build a :class:~photonics_helper.pulse.Wave with the exact SFB field at z0.

Parameters:

Name Type Description Default
grid TemporalGrid

Time grid; for Akhmediev breathers choose a window containing an integer number of :meth:temporal_period_s periods.

required
a float — SFB parameter.
required
z0 float — physical starting distance in m (e.g. ``-3 L_NL`` for a

Peregrine soliton so that the peak falls at z = 0).

0.0
wavelength Wavelength — carrier; defaults to 1550 nm.
None

peregrine_soliton

peregrine_soliton(xi: float, tau: NDArray | float) -> NDArray | complex

Exact Peregrine soliton of the focusing NLSE.

psi(xi, tau) = e^{i xi} [1 - 4(1 + 2 i xi)/(1 + 4 tau^2 + 4 xi^2)]. Peak-to-background intensity ratio is exactly |psi(0, 0)|^2 = 9.

general_sfb

general_sfb(xi: float, tau: NDArray | float, a: float) -> NDArray | complex

General soliton-on-finite-background solution (Akhmediev–Korneev).

Parameters:

Name Type Description Default
xi float — dimensionless propagation distance.
required
tau array-like — dimensionless retarded time.
required
a float — governing parameter in ``(0, 1)``; ``a < 1/2`` gives the

Akhmediev breather, a > 1/2 the Kuznetsov–Ma soliton and a -> 1/2 the Peregrine soliton.

required

akhmediev_breather

akhmediev_breather(xi: float, tau: NDArray | float, a: float) -> NDArray | complex

Akhmediev breather (a < 1/2): periodic in time, single growth/decay.

kuznetsov_ma

kuznetsov_ma(xi: float, tau: NDArray | float, a: float) -> NDArray | complex

Kuznetsov–Ma soliton (a > 1/2): localised in time, periodic in :math:\xi.

sfb_peak_ratio

sfb_peak_ratio(a: float) -> float

Maximum |psi|^2 (relative to the unit background) of the SFB family.

Gives 5.828… for a = 0.25 (Akhmediev), 9 for the Peregrine limit and 10.876… for a = 0.66 (Kuznetsov–Ma).

sfb_spatial_period

sfb_spatial_period(a: float) -> float

Dimensionless :math:\xi period of the Kuznetsov–Ma soliton (a > 1/2).

sfb_temporal_period

sfb_temporal_period(a: float) -> float

Dimensionless :math:\tau period of the Akhmediev breather (a < 1/2).