comnum.raman_profile#
- comnum.raman_profile(fiber, freqs, power_dbm, raman)#
The power profiles of a span with distributed Raman amplification: the coupled equations of stimulated Raman scattering for the co-propagating channels and any number of co- and counter-propagating pumps (RK4, forward-backward sweeps), and the spontaneous Raman noise of every channel (see
comnum_channel::optical::raman).- Parameters:
fiber (FiberParams) – the span (length, attenuation, carrier frequency).
freqs (array_like) – centre frequencies of the channels relative to the carrier (Hz).
power_dbm (float | array_like) – launch power of every channel (dBm, both polarisations).
raman (dict) – the keys of
fiber.ramanin a specification:pumps(a list of{wavelength_nm | frequency_thz, power_mw, direction: "co" | "counter", alpha_db_km}),aeff_um2(80),temperature_k(300),isrs(True: the channels also exchange power),step_km(0.1),slice_hz(25e9, for the split-step solvers) andgain({offsets_thz, gain_m_w, reference_thz}, the gain spectrumg_R A_eff; standard single-mode fibre by default).
- Returns:
z_km,freqs_hz(absolute, the channels then the pumps),power_dbm(one row per wave),net_gain_dbandon_off_gain_db(per channel),ase_psd(W/Hz, both polarisations, per channel at the end of the span) anditerations.- Return type:
- Raises:
ValueError – for an invalid parameter or input (the message names it).
Examples
>>> import comnum >>> p = comnum.raman_profile(comnum.FiberParams(span_km=100), [0.0], -10.0, ... {"pumps": [{"wavelength_nm": 1450, "power_mw": 400, "direction": "counter"}]}) >>> bool(10 < p["on_off_gain_db"][0] < 16) True