Telecominfraproject/oopt-gnpy

The connection between delta_p, pref.span0 and power_dbm.

Tobelightbeam opened this issue · 5 comments

delta_p is a key atribute for an EDFA. the target output power per channel target_pch_out_db is determined by delta_p and pref.span0 as shown in line 639, gnpy.core.elements.
pref.span0, As @ojnas said, it's the reference power for a span of 20 dB loss. But actually, pref.span0 is usually set the same value as the initial channel power for the SI, while the initial channel power is usually set as power_dbm. (Leaving power_range_db alone for simplicity) So, from some aspect, pref.span0 = power_dbm .

In power mode, when delta_p for a EDFA is null, gnpy will set it according to the span loss after that EDFA: delta_p = 1/3*(span_loss - 20). (Leaving delta_power_range_db alone for simplicity)
It's said that the hardcoded factor "1/3" and "20" are two good choices according to the GN model. However, under the circumstances where pref.span0 is bounded with the initial output power tightly, the value of delta_p will be bad for practical applications, since the target output power will varies from different initial output power even though span loss stays unchanged.

For example, when span loss is 20 dB, then delta_p will be set to 0 dB. After that, the target output power of the EDFA will equal to the initial output power. That is to say, when initial power is 10dBm, the auto-set delta_p will also be 10dBm and power launched into the fiber will also be 10 dBm. A 10dBm launch power is ridiculous considering nonlinear interference.

So, is it necessary to cut off the line between pref.span0 and initial power? And is it better to set pref.span0 according to experimental results rather than setting it freely?

ojnas commented

However, under the circumstances where pref.span0 is bounded with the initial output power tightly, the value of delta_p will be bad for practical applications, since the target output power will varies from different initial output power even though span loss stays unchanged.

Right, so don't think of power_dbm as the initial output power but rather as the reference power to which delta_p relates. It is true that currently the create_input_spectral_information method in info.py uses the same value for setting pref.p_span0 and initial channel power. This is misleading and should probably be changed so that it is possible to set the initial power independently. In most practical cases where the Tx is connected to a ROADM it does not matter since the ROADM will anyway change the channel power.

FYI, there is a related ongoing discussion about how to modify the spectral info in case of flexgrid/mixed channels here:
https://review.gerrithub.io/c/Telecominfraproject/oopt-gnpy/+/497149

@ojnas , thanks for your reply and your suggestion for sperating reference power from the initial power through a ROADM.

But, since power_range_db which is used to sweep power can't impose on a ROADM's target_pch_oout_db, power sweep would be useless as if we use a ROADM to adjust transmitted power.

Hope for a better create_input_spectral_information. haha

ojnas commented

Maybe I wasn't very clear. I agree that the separation should be done in create_input_spectral_information. Just saying that what you set initial power to in that case will not matter when a Tx is connected to a ROADM. And if it is separated I think power sweep should be applied to the reference channel power, not to the initial power.

@ojnas , I did misunderstand.
As what you said, ojnas, the power sweep is used to find the optimal reference power, rather than to find the optimal initial power. Is that what you mean?

ojnas commented

@ojnas , I did misunderstand.
As what you said, ojnas, the power sweep is used to find the optimal reference power, rather than to find the optimal initial power. Is that what you mean?

Yes