Expand description
The symmetric split-step Fourier solvers of the nonlinear Schrödinger equation:
scalar (SplitStep, SplitStepF32, both built from the Steps of a span)
and dual-polarisation Manakov (ManakovSplitStep).
The same solver propagates a field through a fibre (comnum_channel::optical::fiber)
and back-propagates it at the receiver (comnum_dsp::compensation::dbp, with the
coefficients negated), so it lives here, below both.
§Model
$$ \frac{\partial A}{\partial z} = -\frac{\alpha}{2} A
- j \frac{\beta_{2}}{2} \frac{\partial^{2} A}{\partial t^{2}}
- j \gamma |A|^{2} A $$
Each step of length $h$ is a half linear step, the nonlinear phase $\gamma |A|^{2} h_{\mathrm{NL}}$ and a half linear step, with the linear operator applied in the frequency domain:
$$ \tilde{A}(\omega) \leftarrow \tilde{A}(\omega)\, e^{-\alpha h / 4}\, e^{j \beta_{2} \omega^{2} h / 4} $$
The nonlinear length $h_{\mathrm{NL}}$ is the step itself for the forward model; a back-propagation with coarse steps uses the effective length of the step instead.
§The Manakov equation
Averaged over the fast random rotations of the birefringence, the two polarisations $A_{x}$, $A_{y}$ obey
$$ \frac{\partial A_{x,y}}{\partial z} = -\frac{\alpha}{2} A_{x,y} - j \frac{\beta_{2}}{2} \frac{\partial^{2} A_{x,y}}{\partial t^{2}} + j \frac{8}{9} \gamma \left(|A_{x}|^{2} + |A_{y}|^{2}\right) A_{x,y}. $$
ManakovSplitStep is the symmetric scheme of OptiCommPy’s manakovSSF: a half
linear step, the nonlinear phase
$$ \phi(t) = \frac{8}{9} \gamma, \frac{P(z, t) + P(z + h, t)}{2}, h, \qquad P = |A_{x}|^{2} + |A_{y}|^{2}, $$
(the trapezoidal rule of OptiCommPy, iterated until the step converges since
$P(z + h)$ depends on the step itself, NonlinearStep::Trapezoidal; by default the
power at the middle of the step, NonlinearStep::Midpoint, as SplitStep) and a
half linear step. The step is either fixed or adapted so
that the largest nonlinear phase of a step is a given rotation (the nonlinear phase
rotation method of Sinkin et al., which concentrates the steps where the power is
high, at the beginning of the spans).
§Examples
use comnum_math::nlse::{Medium, SplitStep, Steps};
use comnum_math::C64;
// without loss and nonlinearity, forward then negated propagation is the identity
let m = Medium { alpha_np_km: 0.0, beta2_s2_km: -2.17e-23, gamma_w_km: 0.0, beta3_s3_km: 0.0 };
let x: Vec<C64> = (0..64).map(|n| C64::new((n % 3) as f64, (n % 2) as f64)).collect();
let mut e = x.clone();
SplitStep::new(&m, Steps::new(8, 10.0), 64, 64e9).run(&mut e);
SplitStep::new(&m.negated(), Steps::new(8, 10.0), 64, 64e9).run(&mut e);
assert!(x.iter().zip(&e).all(|(a, b)| (a - b).norm() < 1e-9));§References
- G. P. Agrawal, Nonlinear Fiber Optics, 5th ed., Academic Press, 2013.
- E. Ip and J. M. Kahn, “Compensation of dispersion and nonlinear impairments using digital backpropagation,” J. Lightw. Technol., 26(20), 2008.
- D. Marcuse, C. R. Menyuk and P. K. A. Wai, “Application of the Manakov-PMD equation to studies of signal propagation in optical fibers with randomly varying birefringence,” J. Lightw. Technol., 15(9), 1735–1746, 1997.
- O. V. Sinkin, R. Holzlöhner, J. Zweck and C. R. Menyuk, “Optimization of the split-step Fourier method in modeling optical-fiber communications systems,” J. Lightw. Technol., 21(1), 61–68, 2003.
Structs§
- Birefringence
- The birefringence of a span cut into sections of equal length (the PMD of
comnum_channel::optical::pmd::PmdLink): section $k$ starts with the frequency-independent rotationrotations[k](a row-major 2 × 2 matrix applied to $(A_{x}, A_{y})$) and then delays the two polarisations of its frame by $\mp \tau’{k} z / 2$, its DGD per kilometredgd_s_per_km[k]distributed along it. Without nonlinearity a span is the lumped response $\prod{k} D_{k}(\omega) R_{k}$, $D_{k}$ the DGD of the whole section. - Manakov
Split Step - The symmetric split-step solver of the Manakov equation (see the module).
- Medium
- The coefficients of the scalar NLSE, per kilometre.
- Propagation
Options - What a propagation adds to the loss and dispersion of the medium (see
ManakovSplitStep::run_fields). - Sampling
Check - The sampling conditions of a split-step simulation of a signal of bandwidth $B$
over a dispersive link (Musetti et al. 2018, Appendix B): the sampling rate must hold
the four-wave mixing that falls on the signal, at least $\frac{3}{2} B$ (all of the
first-order mixing needs $3 B$), and the block must be longer than the walk-off
across $B$ over the whole link, $|\beta_{2}| , 2\pi B , L$, or the circular
convolution wraps the fast channels onto the slow ones.
sampling_checkcomputes them;SamplingCheck::is_sufficientsays whether both hold. - Split
Step - The
Stepsof one span in double precision. - Split
Step F32 SplitStepin single precision: the field, the FFTs, the linear operator and the nonlinear phase are computed inf32(about twice as fast), with the sameSteps(a back-propagation included); the plans and their work space are cached per thread as those offft::plan.- Steps
- The steps of one span:
n_stepssymmetric steps ofstep_km, the nonlinear phase of each overnl_length_km(the step itself for the forward model, the effective length of a coarse step for a back-propagation). Shared bySplitStepandSplitStepF32, and given by a forward model to its back-propagation (comnum_dsp::compensation::dbp::Dbp::forward).
Enums§
- Nonlinear
Step - The nonlinear step of
ManakovSplitStep. - Step
Rule - The step size of
ManakovSplitStep. - Step
Update - The growth of the steps of
StepRule::Fwmalong a span, with the power attenuation $\alpha$ (Musetti et al. 2018, eqs. (9)–(10)).
Functions§
- manakov_
rotation - The nonlinear step of the Manakov equation with a phase that does not change during the step: both polarisations rotated by the same phase,
- sampling_
check - The
SamplingCheckoffieldssampled atfsthroughlength_kmofmedium. - signal_
bandwidth - The bandwidth (Hz) of the fields
fieldssampled atfs: the span of the frequencies whose power spectral density, summed over the fields, exceeds $10^{-4}$ of its peak ($-40$ dB). Measured on a clean signal (before any amplifier noise, which is white).
Type Aliases§
- Field
Gain - The gain of the field at every frequency bin (FFT order) between two positions of a
span (km):
gain(z_0, z_1, out)writes $\sqrt{G(z_{1}, f) / G(z_{0}, f)}$ intoout.