Skip to content

Nonlinear Schrödinger

A light pulse in a glass fibre is a fast oscillation wrapped in a slow envelope. The glass has dispersion, so different colours in the pulse travel at different speeds and the envelope spreads. But intense light also changes the glass’s refractive index, which bends the phase of the wave in proportion to its intensity. For the right pulse shape the two effects cancel and the envelope holds together. That is an optical soliton, and the same equation describes Bose–Einstein condensates and deep-water wave groups.

Live in your browser, computed by the engine.Open in the playground with sliders and graphs ↗

The bright line is the envelope ∣ψ∣|\psi|. The faint line is the real part, the oscillation underneath. The envelope keeps its shape while the carrier runs through it.

Live in your browser, computed by the engine.Open in the playground with sliders and graphs ↗

Two envelopes meet, interfere during the overlap, and separate intact.

Now start with twice the soliton amplitude.

Live in your browser, computed by the engine.Open in the playground with sliders and graphs ↗

It does not travel. It breathes. This is the Satsuma–Yajima solution, two solitons bound together at one point, oscillating with period π/2\pi/2.

The focusing cubic nonlinear Schrödinger equation is

i ψt+12 ψxx+∣ψ∣2ψ=0.i\,\psi_t + \tfrac{1}{2}\,\psi_{xx} + |\psi|^2 \psi = 0 .

Here ψ\psi is complex. Its magnitude is the envelope and its phase carries the oscillation. The bright soliton is

ψ(x,t)=a sech⁡(a(x−vt−x0)) exp⁡ ⁣(i vx+i2 (a2−v2) t).\psi(x,t) = a\,\operatorname{sech}\big(a (x - v t - x_0)\big)\, \exp\!\Big( i\,v x + \tfrac{i}{2}\,(a^2 - v^2)\,t \Big).

Unlike KdV, amplitude aa and velocity vv are independent. Galilean invariance lets you boost any soliton to any speed.

Conserved quantities tracked by the engine:

NameExpression
Mass∫∣ψ∣2 dx\int \lvert\psi\rvert^2 \, dx
MomentumIm⁡∫ψ∗ψx dx\operatorname{Im}\int \psi^* \psi_x \, dx
Energy∫(12∣ψx∣2−12∣ψ∣4)dx\int \left( \tfrac{1}{2}\lvert\psi_x\rvert^2 - \tfrac{1}{2}\lvert\psi\rvert^4 \right) dx

Written as ψt=Lψ+N(ψ)\psi_t = L\psi + N(\psi):

L(k)=−i2 k2,N(ψ)=i ∣ψ∣2ψ.L(k) = -\tfrac{i}{2}\,k^2, \qquad N(\psi) = i\,|\psi|^2 \psi .

Same machinery as KdV: Fourier pseudo-spectral in space, ETDRK4 in time.

TestSetupResult
Moving bright solitona=1a = 1, v=1v = 1, N=512N = 512, L=40πL = 40\pi, Δt=10−3\Delta t = 10^{-3}, t=10t = 10max error 3×10−93 \times 10^{-9}
Two solitons10000 stepsinvariant drift below 10−810^{-8}

Source: crates/soliton-core/src/equations/nls.rs and its tests.