Commit b7dbf13
committed
Couple the channels: cross-phase modulation and four-wave mixing
Bands propagated independently through the fiber, which made this a good
model of one channel and an optimistic one of a comb. The same |A|^2 A term
that gives a channel its own self-phase modulation also lets every other
channel rotate its phase, and lets triplets of them generate light at
frequencies nobody launched.
propagate_coupled_ssfm steps every channel together. The whole extension is
a factor of two -- a channel's own power appears once in the expansion of
|A|^2 A and a neighbour's appears twice -- written as 2*total - |A_k|^2 so
the cost stays linear in the channel count and one field collapses to plain
SPM identically. propagate_ssfm is now a call to it rather than a second
implementation, and a test asserts they agree bit for bit.
Walk-off is not a new parameter. It is the group-delay term of the same
expansion of beta(omega) that produces the dispersion, so setting D to zero
removes both at once -- which is the correct coupling, and the reason a
dispersion-shifted fiber operated at its zero is the worst place to put a
WDM comb. propagate_dispersion's docstring warned that adding a group-delay
term ends the sign-convention immunity that beta2 alone enjoys; the operator
is therefore derived from the beta2 term rather than guessed. Each field
comes back in its own retarded frame, so the constant delay does not slide
every channel off its own sampler.
Four-wave mixing is solved in closed form from the band powers and injected
as tones, because the products land at frequencies no band is sampled at.
Not putting the channels on one grid is what makes a comb affordable, and
that choice has to be paid for somewhere. A product landing on a channel is
folded into it with a drawn phase, for the same reason PMD is drawn.
Measured, on channel 1 of a four-channel QPSK comb over 4 x 80 km, as EVM
after carrier recovery:
launch D = 0 D = 17 ps/nm/km
-3 dBm +0.18 % +0.00 %
0 dBm +0.49 % +0.03 %
+3 dBm +2.84 % +0.29 %
Ten times less penalty for having dispersion in the fiber. What walk-off
removes is not the cross-phase modulation but its variation: the mean phase
is fixed at 2*gamma*<P>*L_eff across a 16x change in slip while its spread
falls 5.7x, and it is the variation that closes an eye.
Validated against closed forms derived outside the code. n equal channels
give exactly (2n-1) times one channel's nonlinear phase; the peak-to-peak
swing is 2*gamma*P*L_eff; walk-off is D*delta_lambda; FWM efficiency is 1
phase matched and sinc^2 lossless; the component reproduces
d^2 gamma^2 P^3 L_eff^2 eta exp(-alpha L) to 1e-7, cubic in power, with
non-degenerate products exactly 6.02 dB above degenerate ones.
16 sabotages, 16 caught. Two rounds were needed: the first reported the
doubled-walk-off sabotage as surviving, and it had. pytest.approx applies a
default absolute tolerance of 1e-12 alongside rel, and a walk-off is ~1e-14
s/m, so the assertion accepted every value in a band five orders of
magnitude wide. The same defect was already in test_amplifier: an ASE
density is ~1e-17 W/Hz, and that assertion had been testing nothing at all,
zero included. Both now pass abs=0.0, and the ASE one was confirmed to bite.
A stale .pyc also served a sabotaged module after it had been restored --
the substitution leaves the file the same size -- so the harness clears
bytecode between runs.
The UI export had been stale since the filter commit and is regenerated:
33 manifests to 35, with the fiber's four new parameters, synced into the
mockup and the screenshots.
589 tests.1 parent 4cce684 commit b7dbf13
10 files changed
Lines changed: 1900 additions & 80 deletions
File tree
- docs
- images
- examples
- src/oosim
- components
- tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
31 | | - | |
32 | | - | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
33 | 36 | | |
34 | 37 | | |
35 | 38 | | |
| |||
376 | 379 | | |
377 | 380 | | |
378 | 381 | | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
379 | 447 | | |
380 | 448 | | |
381 | 449 | | |
| |||
510 | 578 | | |
511 | 579 | | |
512 | 580 | | |
513 | | - | |
| 581 | + | |
514 | 582 | | |
515 | 583 | | |
516 | 584 | | |
| |||
561 | 629 | | |
562 | 630 | | |
563 | 631 | | |
564 | | - | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
565 | 639 | | |
566 | 640 | | |
567 | 641 | | |
| |||
Loading
Loading
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
854 | 854 | | |
855 | 855 | | |
856 | 856 | | |
| 857 | + | |
| 858 | + | |
| 859 | + | |
| 860 | + | |
| 861 | + | |
857 | 862 | | |
858 | 863 | | |
859 | 864 | | |
| |||
1087 | 1092 | | |
1088 | 1093 | | |
1089 | 1094 | | |
| 1095 | + | |
| 1096 | + | |
| 1097 | + | |
| 1098 | + | |
| 1099 | + | |
1090 | 1100 | | |
1091 | 1101 | | |
1092 | 1102 | | |
| |||
1290 | 1300 | | |
1291 | 1301 | | |
1292 | 1302 | | |
| 1303 | + | |
| 1304 | + | |
| 1305 | + | |
| 1306 | + | |
| 1307 | + | |
1293 | 1308 | | |
1294 | 1309 | | |
1295 | 1310 | | |
| |||
1460 | 1475 | | |
1461 | 1476 | | |
1462 | 1477 | | |
| 1478 | + | |
| 1479 | + | |
| 1480 | + | |
| 1481 | + | |
| 1482 | + | |
| 1483 | + | |
| 1484 | + | |
| 1485 | + | |
| 1486 | + | |
| 1487 | + | |
| 1488 | + | |
| 1489 | + | |
| 1490 | + | |
| 1491 | + | |
| 1492 | + | |
| 1493 | + | |
| 1494 | + | |
| 1495 | + | |
| 1496 | + | |
| 1497 | + | |
| 1498 | + | |
| 1499 | + | |
| 1500 | + | |
| 1501 | + | |
1463 | 1502 | | |
1464 | 1503 | | |
1465 | 1504 | | |
| |||
1786 | 1825 | | |
1787 | 1826 | | |
1788 | 1827 | | |
| 1828 | + | |
| 1829 | + | |
| 1830 | + | |
| 1831 | + | |
| 1832 | + | |
| 1833 | + | |
| 1834 | + | |
| 1835 | + | |
| 1836 | + | |
| 1837 | + | |
| 1838 | + | |
| 1839 | + | |
| 1840 | + | |
| 1841 | + | |
| 1842 | + | |
| 1843 | + | |
| 1844 | + | |
| 1845 | + | |
| 1846 | + | |
| 1847 | + | |
| 1848 | + | |
| 1849 | + | |
| 1850 | + | |
| 1851 | + | |
| 1852 | + | |
| 1853 | + | |
| 1854 | + | |
| 1855 | + | |
| 1856 | + | |
| 1857 | + | |
| 1858 | + | |
| 1859 | + | |
| 1860 | + | |
| 1861 | + | |
| 1862 | + | |
| 1863 | + | |
| 1864 | + | |
| 1865 | + | |
| 1866 | + | |
| 1867 | + | |
| 1868 | + | |
| 1869 | + | |
| 1870 | + | |
| 1871 | + | |
| 1872 | + | |
| 1873 | + | |
| 1874 | + | |
| 1875 | + | |
| 1876 | + | |
| 1877 | + | |
| 1878 | + | |
| 1879 | + | |
| 1880 | + | |
| 1881 | + | |
| 1882 | + | |
| 1883 | + | |
| 1884 | + | |
| 1885 | + | |
| 1886 | + | |
| 1887 | + | |
| 1888 | + | |
| 1889 | + | |
| 1890 | + | |
| 1891 | + | |
| 1892 | + | |
| 1893 | + | |
| 1894 | + | |
| 1895 | + | |
| 1896 | + | |
| 1897 | + | |
| 1898 | + | |
| 1899 | + | |
| 1900 | + | |
| 1901 | + | |
| 1902 | + | |
| 1903 | + | |
| 1904 | + | |
| 1905 | + | |
| 1906 | + | |
| 1907 | + | |
| 1908 | + | |
| 1909 | + | |
| 1910 | + | |
| 1911 | + | |
| 1912 | + | |
| 1913 | + | |
| 1914 | + | |
| 1915 | + | |
| 1916 | + | |
| 1917 | + | |
| 1918 | + | |
| 1919 | + | |
| 1920 | + | |
| 1921 | + | |
| 1922 | + | |
| 1923 | + | |
| 1924 | + | |
| 1925 | + | |
| 1926 | + | |
| 1927 | + | |
| 1928 | + | |
1789 | 1929 | | |
1790 | 1930 | | |
1791 | 1931 | | |
| |||
1830 | 1970 | | |
1831 | 1971 | | |
1832 | 1972 | | |
| 1973 | + | |
| 1974 | + | |
| 1975 | + | |
| 1976 | + | |
| 1977 | + | |
1833 | 1978 | | |
1834 | 1979 | | |
1835 | 1980 | | |
| |||
0 commit comments