How to read this, and when it is the wrong tool
The one number that runs everything
Rytov variance, σ²R = 1.23·Cn²·k^(7/6)·L^(11/6), is a single scalar answer to "how rough is
this path." Below about 1 you are in weak turbulence and lognormal fade statistics hold. Above it the
intensity fluctuations begin to saturate and everything here turns optimistic. Note the exponent on range:
doubling the path makes turbulence 3.6× worse, not 2×. That is why 1 km is a real test and 100 m is not.
Two effects, and they are not the same problem
Spreading and wander cost you mean power. They are a link-budget
problem — watch the solid beam envelope grow past the dashed diffraction-only envelope in the scene above.
Scintillation costs you availability. The mean is fine; the deep
fades are what drop packets. That is the scope trace.
Why r₀ versus your beam size decides the character
When the Fried coherence length r₀ is larger than the beam, the beam mostly gets tilted as a whole —
it wanders, and a tracking loop can chase it. When r₀ drops below the beam diameter, the wavefront breaks up
into independent patches and the beam shatters into speckle, which no gimbal can fix. Slide Cn² up
and watch the eddies in the scene shrink past the beam width. That crossover is the moment tracking stops
being the answer and aperture averaging or diversity becomes the answer.
Why the receiver aperture is the best knob you have
A large lens collects more mean power and integrates over more speckle cells, so it suppresses
scintillation at the same time. Compare σ²I point against σ²I aperture as you widen D. Once D is
comfortably bigger than the Fresnel scale √(λL) — about 39 mm at 1 km and 1550 nm — you start winning hard.
Adding glass is very often cheaper than adding transmit power or coding gain.
Wind sets the clock, not the depth
Crosswind does not change how deep the fades are, only how fast they arrive, through v/√(λL).
This is the number that sizes an interleaver: at 1.25 Gbps a 2 ms fade is 2.5 Mbit of buffer, which is a
memory budget conversation, not a hand-wave.
The tracking loop, and why frame rate beats gain
Beam wander sits on a Tyler tilt spectrum: roughly f^(-2/3) up to a knee at 0.24·v/D_tx, then
f^(-11/3) above it. Most of the variance piles up just below that knee, so where the knee sits
relative to your sampler decides everything. The panel shows the disturbance and what survives
the loop, with the region above Nyquist shaded — the loop cannot see anything in there, cannot
reject it, and folds it back into the control band as apparent low-frequency error.
Two failure modes are worth provoking deliberately. Set the frame rate very low and watch the
above Nyquist figure climb past 50% while rejection collapses to under a dB: no gain
tuning recovers that, only a faster camera. Then set a high bandwidth against a knee the loop
cannot reach and watch rejection go negative — the sensitivity peak near crossover
injects more than the integrator removes. That is the waterbed, and it is why "turn up the gain"
is usually the wrong instinct. optimise loop finds the bandwidth that genuinely
minimises residual for your delay, which is often far lower than you would guess.
Note also that with a wide, pointing-tolerant beam the loop buys nothing, because wander is a
small fraction of the beam radius to begin with. Tracking only starts paying once the beam is
tight enough that missing costs you real power. That tension — divergence for tolerance versus
divergence for gain — is the actual design decision.
Dust is not fog
Fog droplets are comparable to the wavelength, so scattering is selective and 1550 nm beats
850 nm. Dust particles are tens of microns, far larger than either, so scattering is
non-selective, the Kim exponent goes to zero, and the two wavelengths are identical. Switch the
weather panel between fog and dust at the same visibility and watch the wavelength advantage
vanish. In the Gulf that is the case that matters, and it is the opposite of what most FSO
literature assumes.
The diurnal curve
Cn² over ground swings three orders of magnitude across a day. The two dips are the neutral
events near sunrise and sunset, when the surface heat flux passes through zero and the
temperature gradient briefly vanishes. Best seeing of the day by a wide margin, and the reason
field campaigns start early. Hit day sweep and watch a link that is comfortable at
dawn shatter by early afternoon without a single parameter changing except the sun.
Closing the loop with real data
export 30 s log writes a synthetic received-power CSV generated from exactly the
physics on screen, with the configuration embedded in the header comments. Run
calibrate.py against it and you should get your own Cn² back. Then run the same
script against a real campaign log and see how far apart they land. On a clean record the
inversion is good to a couple of percent; when it refuses to converge, that refusal is itself
the finding — it usually means something in the record is not atmospheric.
When to reach for this
For the questions you would otherwise answer with a shrug. What does going from 50 mm to 100 mm receive
optics actually buy? Is 10 dB of margin generous or marginal here? Would 5 km be crazy? All one slider away.
When it stops being enough
Do not use it to predict a specific afternoon. Once σ²R passes 1, or you want coupling into single-mode
fibre (which depends on wavefront shape, not just intensity), or you want to design a tracking loop
against a measured disturbance spectrum — you need split-step propagation through phase screens. This model
has no wavefront at all, only the statistics of one. The next honest step is calibration: fit σ²I and the
fade rate to real received-power logs and back out the Cn² and effective wind the atmosphere was actually
handing you.