def target_power(dp_from_gain, network, node, equipment): #get_fiber_dp SPAN_LOSS_REF = 20 POWER_SLOPE = 0.3 power_mode = equipment['Spans']['default'].power_mode dp_range = list(equipment['Spans']['default'].delta_power_range_db) node_loss = span_loss(network, node) dp_gain_mode = 0 try: dp_power_mode = round2float((node_loss - SPAN_LOSS_REF) * POWER_SLOPE, dp_range[2]) dp_power_mode = max(dp_range[0], dp_power_mode) dp_power_mode = min(dp_range[1], dp_power_mode) except KeyError: print(f'invalid delta_power_range_db definition in eqpt_config[Spans]' f'delta_power_range_db: [lower_bound, upper_bound, step]') exit() if dp_from_gain: dp_power_mode = dp_from_gain dp_gain_mode = dp_from_gain if isinstance(node, Roadm): dp_power_mode = 0 dp = dp_power_mode if power_mode else dp_gain_mode #print(f'{repr(node)} delta power in:\n{dp}dB') return dp
def set_amplifier_voa(amp, power_target, power_mode): VOA_MARGIN = 1 # do not maximize the VOA optimization if amp.out_voa is None: if power_mode and amp.params.out_voa_auto: voa = min(amp.params.p_max - power_target, amp.params.gain_flatmax - amp.effective_gain) voa = max(round2float(voa, 0.5) - VOA_MARGIN, 0) amp.delta_p = amp.delta_p + voa amp.effective_gain = amp.effective_gain + voa else: voa = 0 # no output voa optimization in gain mode amp.out_voa = voa
def set_amplifier_voa(amp, pref_total_db, power_mode): VOA_MARGIN = 0 if amp.operational.out_voa is None: if power_mode: gain_target = amp.operational.gain_target pout = pref_total_db + amp.dp_db voa = min(amp.params.p_max - pout, amp.params.gain_flatmax - amp.operational.gain_target) voa = round2float(max( voa, 0), 0.5) - VOA_MARGIN if amp.params.out_voa_auto else 0 amp.dp_db = amp.dp_db + voa amp.operational.gain_target = amp.operational.gain_target + voa else: voa = 0 # no output voa optimization in gain mode amp.operational.out_voa = voa
def target_power(network, node, equipment): # get_fiber_dp if isinstance(node, elements.Roadm): return 0 SPAN_LOSS_REF = 20 POWER_SLOPE = 0.3 dp_range = list(equipment['Span']['default'].delta_power_range_db) node_loss = span_loss(network, node) try: dp = round2float((node_loss - SPAN_LOSS_REF) * POWER_SLOPE, dp_range[2]) dp = max(dp_range[0], dp) dp = min(dp_range[1], dp) except IndexError: raise ConfigurationError(f'invalid delta_power_range_db definition in eqpt_config[Span]' f'delta_power_range_db: [lower_bound, upper_bound, step]') return dp
def target_power(network, node, equipment): #get_fiber_dp SPAN_LOSS_REF = 20 POWER_SLOPE = 0.3 power_mode = equipment['Span']['default'].power_mode dp_range = list(equipment['Span']['default'].delta_power_range_db) node_loss = span_loss(network, node) try: dp = round2float((node_loss - SPAN_LOSS_REF) * POWER_SLOPE, dp_range[2]) dp = max(dp_range[0], dp) dp = min(dp_range[1], dp) except KeyError: print(f'invalid delta_power_range_db definition in eqpt_config[Span]' f'delta_power_range_db: [lower_bound, upper_bound, step]') exit() if isinstance(node, Roadm): dp = 0 return dp