Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
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(
Ejemplo n.º 7
0
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)}