voa in function: set_egress-amplifier
Tobelightbeam opened this issue · 2 comments
In gnpy.core.network, the function set_egress-amplifier is defined to set the parameters of EDFAs.
It sets delta_p or target_gain of an EDFA according to previous node's dp, out_voa and span loss. However, the process to iterate out_voa one by one seems wrong.
To be detailed:
In line 262, voa = node.out_voa if node.out_voa else 0
,voa is set as current node's out_voa.
Then, in line 308, set_amplifier_voa(node, power_target, power_mode)
, current node's out_voa is adjusted.
However, in line 310 - 313, where the current node begins to be transformed into a "previous" node,prev_voa = voa
, prev_voa is set as voa, rather than node.out_voa.
It seems that node.out_voa is not passed to prev_voa correctly.
The set_amplifier_voa
method also updates the current Edfas delta_p to compensate for the voa, which is not reflected in prev_dp = dp
. I think these two "errors" cancel each other when the target gain of the next Edfa is calculated, no? But the code definitely is a bit confusing.
hi @ojnas , I got your idea.
It's true that there is a balance between delta_p and out_voa for the set_amplifier_voa
method. But prev_dp = node.delta_p
and prev_voa = node.out_voa
are more direct than prev_dp = dp
and prev_voa = voa
, I think.
So maybe we can consider to do this to improve readability.