You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Kerr coupling was scalar per polarization: a channel was modulated by its
neighbours' co-polarized power and by nothing else, so a channel polarized
across it counted for zero. In an isotropic medium orthogonal power counts for
exactly two thirds — which, because co-polarized cross-phase modulation already
carries its factor of two, makes orthogonal cross-phase modulation exactly one
third of co-polarized. Measured on unmodulated carriers over a lossless
dispersionless span, where the phase is a closed form: 2.000 gPL against 0.667.
One coefficient, three consequences. A channel's own orthogonal component
modulates it at two thirds the rate, so power split evenly across the axes turns
each by 0.5 + (2/3)*0.5 instead of 0.5. The two axes stop accumulating the same
phase, so nonlinear birefringence falls by a factor of three. And that
difference is then driven by a *neighbour's* power, which is cross-polarization
modulation — it arrives with the coupling rather than being added beside it.
The solver takes a polarization label per field rather than a second field list,
so the flat argument and the flat return survive and an unlabelled call is the
scalar model term for term. The step-size bound had to learn the same weighting,
or the two paths picked different steps and a single-axis run stopped being
bit-identical to itself; written per field it is now exact rather than an upper
bound, and reduces to the old expression algebraically for co-polarized fields.
The value is the fixed-axis one from the chi(3) tensor, not the Manakov 8/9:
this block applies PMD as a separate element rather than interleaving it, so the
fixed-axis form is what is consistent with the rest of it. The coherent
A_x* A_y**2 term is left out, and a test asserts each axis keeps its power to
twelve digits, so that omission is a number rather than a sentence.
Off by default. With the light on one axis it changes nothing, on the samples.
10 of 10 behaviour-changing sabotages caught. An eleventh — keeping an unused
axis as zeros instead of leaving it absent — changed nothing, correctly: the
docstring claimed that distinction was about exactness and it is about one array
allocation per step, so the docstring was wrong and is now right.
743 tests.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
0 commit comments