def add_inline_amplifier(network, fiber): next_node = next(network.successors(fiber)) if isinstance(next_node, elements.Fiber) or isinstance( next_node, elements.RamanFiber): # no amplification for fused spans or TRX network.remove_edge(fiber, next_node) amp = elements.Edfa(uid=f'Edfa_{fiber.uid}', params={}, metadata={ 'location': { 'latitude': (fiber.lat + next_node.lat) / 2, 'longitude': (fiber.lng + next_node.lng) / 2, 'city': fiber.loc.city, 'region': fiber.loc.region, } }, operational={ 'gain_target': None, 'tilt_target': 0, }) network.add_node(amp) network.add_edge(fiber, amp, weight=fiber.params.length) network.add_edge(amp, next_node, weight=0.01)
def add_roadm_preamp(network, roadm): prev_nodes = [ n for n in network.predecessors(roadm) if not (isinstance(n, elements.Transceiver) or isinstance( n, elements.Fused) or isinstance(n, elements.Edfa)) ] # no amplification for fused spans or TRX for prev_node in prev_nodes: network.remove_edge(prev_node, roadm) amp = elements.Edfa( uid=f'Edfa_preamp_{roadm.uid}_from_{prev_node.uid}', params={}, metadata={ 'location': { 'latitude': roadm.lat, 'longitude': roadm.lng, 'city': roadm.loc.city, 'region': roadm.loc.region, } }, operational={ 'gain_target': None, 'tilt_target': 0, }) network.add_node(amp) if isinstance(prev_node, elements.Fiber): edgeweight = prev_node.params.length else: edgeweight = 0.01 network.add_edge(prev_node, amp, weight=edgeweight) network.add_edge(amp, roadm, weight=0.01)
def add_roadm_booster(network, roadm): next_nodes = [ n for n in network.successors(roadm) if not (isinstance(n, elements.Transceiver) or isinstance( n, elements.Fused) or isinstance(n, elements.Edfa)) ] # no amplification for fused spans or TRX for next_node in next_nodes: network.remove_edge(roadm, next_node) amp = elements.Edfa(uid=f'Edfa_booster_{roadm.uid}_to_{next_node.uid}', params={}, metadata={ 'location': { 'latitude': roadm.lat, 'longitude': roadm.lng, 'city': roadm.loc.city, 'region': roadm.loc.region, } }, operational={ 'gain_target': None, 'tilt_target': 0, }) network.add_node(amp) network.add_edge(roadm, amp, weight=0.01) network.add_edge(amp, next_node, weight=0.01)
def add_egress_amplifier(network, node): next_nodes = [ n for n in network.successors(node) if not (isinstance(n, elements.Transceiver) or isinstance( n, elements.Fused) or isinstance(n, elements.Edfa)) ] # no amplification for fused spans or TRX for i, next_node in enumerate(next_nodes): network.remove_edge(node, next_node) amp = elements.Edfa(uid=f'Edfa{i}_{node.uid}', params={}, metadata={ 'location': { 'latitude': (node.lat + next_node.lat) / 2, 'longitude': (node.lng + next_node.lng) / 2, 'city': node.loc.city, 'region': node.loc.region, } }, operational={ 'gain_target': None, 'tilt_target': 0, }) network.add_node(amp) if isinstance(node, elements.Fiber): edgeweight = node.params.length else: edgeweight = 0.01 network.add_edge(node, amp, weight=edgeweight) network.add_edge(amp, next_node, weight=0.01)
def edfa_nf(gain_target, variety_type, equipment): amp_params = equipment['Edfa'][variety_type] amp = elements.Edfa(uid='calc_NF', params=amp_params.__dict__, operational={ 'gain_target': gain_target, 'tilt_target': 0 }) amp.pin_db = 0 amp.nch = 88 return amp._calc_nf(True)
"type": "Edfa", "type_variety": "simple edfa", "operational": params } # write json data into a file with open("Amp_Parameters2.json", "w") as write_file: js.dump(data, write_file, indent=4) # 4. instantiate an EDFA using the json file you just created. Edfa_par = ut.get_edfa_parameters( "Amp_Parameters2.json", "/Users/Tuna/PycharmProjects/OpenOptical/Lesson_4-Amplifiers/eqp2.json") EDFA = gnel.Edfa(**Edfa_par) #print(Edfa) # 5. instantiate a noiseless WDM comb according to the parameters described # in eqpt.json file # read json data from a file with open("eqp2.json", "r") as read_file: data = js.load(read_file) # From the json data, extract only the values needed for the spectral info (SI) si_data = data['SI'][0] # Compute the WDM for the interested Spectral info si = gn.create_input_spectral_information(
data = { "uid": "amp_id", "type": "Edfa", "type_variety": "simple edfa", "operational": params } # write json data into a file with open("Amp_Parameters.json", "w") as write_file: js.dump(data, write_file, indent=4) Edfa_par = ut.get_edfa_parameters( "Amp_Parameters.json", "/Users/Tuna/PycharmProjects/OpenOptical/Lesson_7-Control_Plan/eqp.json") EDFA = gnel.Edfa(**Edfa_par) # 4. Instantiate the fiber from the JSON file. with open("Fiber_Parameters.json", "r") as read_file: data = js.load(read_file) fiber = gnel.Fiber(**data) # 5. Build a line composed of 10 span (fiber - amplifier). The line has to # be a vector of tuples, each containing a fiber and an amplifier with the # configuration of Exercise 1. num_span = 10 line_system = [{}] * 10 tupla_i = dict() for i in range(0, num_span): tupla_i = {"fiber": gnel.Fiber(**data), "edfa": gnel.Edfa(**Edfa_par)}