Пример #1
0
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
Пример #2
0
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
Пример #3
0
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
Пример #4
0
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
Пример #5
0
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