new field 'out_voa_auto': true/false in eqpt_config json for elligible
amplifiers
if the field is set to true and the power_mode (in
eqpt_config[Spans]) is also set to true, a VOA value is calculated based
on available gain and power margins (EOL) to maximize amplifier gain and
improve its NF
Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
can pick up the best NF amplifier among several amplifiers
sharing the same gain and/or power requirements when these requirements
are not satisfied (used to take the highest gain or the highest power)
Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
amplifier selection in autodesign now takes into account
-required design gain
-required design power
-lowest NF among amplifiers satisfying the requirements
Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
separate in the code:
* add egress amplifier
* vs setting the amplifier parameters
=> prepare improvments in select_edfa and target_power code
regroup all network optimization operations in network.py (remove from
transmission_main)
Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
* toggle true/false in eqpt_config json file to allow the use of a given amplifier type in automatic design: eqpt_config[Edfa][allowed_for_design] : true/false
* automatic design is picking the best amplifier (gain, NF constraints)
among the available ones: if toggle to false, the type is deemed non
available. Only alternative before this feature was to remove the
amplifier from eqpt_config library.
* if set to false, the amplifier type can still be input in the network
topology file: it will be recongized.
Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
* automatic design (when amplifiers are missing from network topology
input) finds the optimum power difference between spans
* The range of this optimum power difference is defined in
eqpt_config[Spans][delta_power_range_db] = [min, max, step]
Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
=>small span padding now looks at the total loss of all spans spliced
together instead of individual span losses
=>the att_in padding attenuator is placed at the input of the 1st span
(the 1st of the serie of spans spliced together with Fused ne)
squashed with the fix to implement att_in attenuation in Fiber.propagate
Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
intermediate bug fix to be squashed
Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
read [Spans][padding] in eqpt_config json file
* add input attenuator on all fibers in the network with loss < padding
* create new Fiber attribute: att_in, which is a fixed attenuator for
padding purposes
* define "padding" : 0 in eqpt_config will disable the feature
effectively
improve fiber splitting to take into account the padding target in the
min fiber length and the target length is set accordingly to this min
length
Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
* Fiber or Edfa type_variety in the the network topology that are not
defined in the eqpt_config json (for example Fiber ELEAF) no longer
crash the code: instead there is a clear error message and the code exit
gracioulsy
* remove outdated network topology json files
Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
read fiber spans default values from eqpt_config.json[Spans]
=>if con_in/con_out is None or not defined in params
Rename connector_loss_in/out to con_in/out for consistency
update parser tests to accept the new con_in/out syntax and the new default
values
Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
bugs from the last refactor merge
- fix#1: update fiber length after split
- fix#2: add egress amp after fiber split
Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
network design when no amplifiers are input in the json file
select_edfa chose the best amplifier in equipment list _from
eqpt_config.json_ wiht the following criteria in order:
1-amplifier wih sufficient gain
2-amplifier wiht sufficient power TODO
3-best NF amplifier staisfying 1 & 2
Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
xls convert:
sanity check Nodes vs Links sheets
column parsing limitation so user can add non code related
fields/information
code fix and eqpt_exists to check if an equipment is defined in the eqpt_config.json library
Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
fix bug in Fused span: adding ingress and egress directions
=> do not share the same NE between 2 directions
Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
*new Fused spans class to support the connection between 2 fibers
without amplification
*add_egress_amplifier adjust the edfa gain to compensate the loss
of n fused spans
*eqpt not found in eqpt library is caught and stop the code
Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
code fix for the eqpt sheet reading in xls parser
Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
amplifier design and eqpt parser code fix
Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
improve code reading and clarity of topology parser:
*modify the connections binding
=>def fiber_dest_from_source to find all dest_city connected to a source_city
=>def fiber_link to return the fiber link from source_city to dest_city
*makes the parser algorithm more understandable
*prepare for the equipment parser
Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
-read eqpt_config.json with various EDFA and fiber type definitions
-std low gain and medium gain EDFA available
-clearer differentiation between the 2 edfa models:
is the advanced_config_from_json field present or not?
Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
* Add EDFA unitary pytests
check nf calculation, nf models comparison, ase noise profile
elements.py edfa _gain_profile: add div 0 checks when no ripple
Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
* support of coronet.conus network and add class __repr__
adaptation of convert.py to new code json formating
add_egress_amplifier, split_fiber and calculate_new_length
subs in network.py
elements.py:
code cleaning
adding new attributes in Edfa class (pin_db, pout_db...)
adding or augmenting class __repr__
Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
* augment amplifier unitary tests and code cleaning
add new tests in amplifier_test.py for pytest
Edfa class code cleaning in elements.py
recheck code coherence and results
Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
* ROADM support in network.py, convert.py, coronet json, ROADM class
creation of a ROADM class with 20dB loss
convert.py json parser modification to include roadms
network.py modification to automate amplifier placing after roadm
elements.py inclusion of Roadm class
Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>