def split_fiber(network, fiber, bounds, target_length, equipment): new_length, n_spans = calculate_new_length(fiber.params.length, bounds, target_length) if n_spans == 1: return try: next_node = next(network.successors(fiber)) prev_node = next(network.predecessors(fiber)) except StopIteration: raise NetworkTopologyError( f'Fiber {fiber.uid} is not properly connected, please check network topology' ) network.remove_node(fiber) fiber.params.length = new_length xpos = [ prev_node.lng + (next_node.lng - prev_node.lng) * (n + 0.5) / n_spans for n in range(n_spans) ] ypos = [ prev_node.lat + (next_node.lat - prev_node.lat) * (n + 0.5) / n_spans for n in range(n_spans) ] for span, lng, lat in zip(range(n_spans), xpos, ypos): new_span = elements.Fiber(uid=f'{fiber.uid}_({span+1}/{n_spans})', type_variety=fiber.type_variety, metadata={ 'location': { 'latitude': lat, 'longitude': lng, 'city': fiber.loc.city, 'region': fiber.loc.region, } }, params=fiber.params.asdict()) if isinstance(prev_node, elements.Fiber): edgeweight = prev_node.params.length else: edgeweight = 0.01 network.add_edge(prev_node, new_span, weight=edgeweight) prev_node = new_span if isinstance(prev_node, elements.Fiber): edgeweight = prev_node.params.length else: edgeweight = 0.01 network.add_edge(prev_node, next_node, weight=edgeweight)
} # 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)} line_system[i] = tupla_i # 6. Instantiate the spectral information according to eqpt.json file # read json data from a file with open("eqp.json", "r") as read_file: # Exercise 2: ../eqp2.json"
"length_units": "km", "att_in": 0, "con_in": 0.5, "con_out": 0.5, "type_variety": "SSMF", "dispersion": 1.67e-5, "gamma": 0.00127 } data = {"uid": "fiber_id", "params": params} with open("Fiber_Parameters.json", "w") as write_file: js.dump(data, write_file, indent=4) with open("Fiber_Parameters.json", "r") as read_file: data = js.load(read_file) fiber = gnel.Fiber(**data) # instantiate an EDFA params = { "gain_target": 17, "tilt_target": 0, "out_voa": 0 } # Exercise 2: "gain_target": 17 data = { "uid": "amp_id", "type": "Edfa", "type_variety": "simple edfa", "operational": params } with open("Amp_Parameters.json", "w") as write_file: js.dump(data, write_file, indent=4)