Exemplo n.º 1
0
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)
Exemplo n.º 2
0
}

# 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)