#[non_exhaustive]pub enum StepRule {
Fixed(f64),
NonlinearPhase(f64),
Fwm {
phase_rad: f64,
bandwidth_hz: Option<f64>,
update: StepUpdate,
max_nl_phase_rad: Option<f64>,
},
}Expand description
The step size of ManakovSplitStep.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Fixed(f64)
Steps of a fixed length (km); the last step of a span is shortened.
NonlinearPhase(f64)
Steps whose largest nonlinear phase $\max_{t} \phi(t)$ is this rotation (rad).
Fwm
The four-wave-mixing-aware rule of Musetti, Serena and Bononi (2018): the first step of every span bounds the phase mismatch of the four-wave mixing across the signal bandwidth $B$ (eq. (13)),
$$ h_{1} = \frac{\Phi_{\mathrm{FWM}}}{|\beta_{2}| (2\pi B)^{2}}, $$
and the next steps grow with the attenuation by update. The rule does not depend on
the power: the error it leaves on the SNR is fixed by $\Phi_{\mathrm{FWM}}$ (about
0.01 dB for 20 rad with the constant local error, 4 rad with the nonlinear-phase
update, Sec. IV-B).
Fields
bandwidth_hz: Option<f64>$B$ (Hz): the bandwidth of the signal; None measures it on the fields at the
start of the propagation (signal_bandwidth).
update: StepUpdateThe growth of the steps along a span.
max_nl_phase_rad: Option<f64>Also bound the largest nonlinear phase of a step to this rotation (rad), the
rule of StepRule::NonlinearPhase: the four-wave-mixing rule alone lets the
steps of a single channel exceed its dispersion length at high power.
Implementations§
Source§impl StepRule
impl StepRule
Sourcepub const FWM_DEFAULT: StepRule
pub const FWM_DEFAULT: StepRule
The default rule: Musetti et al. for an SNR error of about 0.01 dB in WDM
($\Phi_{\mathrm{FWM}}$ = 20 rad, the constant local error, the bandwidth measured on
the fields), and at most 0.02 rad of nonlinear phase per step, which a single
channel at high power needs: one DP-16QAM channel of 32 GBd over 10 × 80 km at
2 to 8 dBm gets 0.3 to 0.7 dB too much SNR with the four-wave-mixing rule alone,
the converged values with both (validation/cards/musetti2018_fig7.yaml).