Optical Channel

Models for simulation of optical fiber channels.

This module introduces the abstract OpticalChannel class for general optical fibers. It also defines the QuantumChannel class for transmission of qubits/photons and the ClassicalChannel class for transmission of classical control messages. OpticalChannels must be attached to nodes on both ends.

class src.components.optical_channel.ClassicalChannel(name: str, timeline: Timeline, distance: int, delay=- 1)

Optical channel for transmission of classical messages.

Classical message transmission is assumed to be lossless.

name

label for channel instance.

Type:

str

timeline

timeline for simulation.

Type:

Timeline

sender

node at sending end of optical channel.

Type:

Node

receiver

node at receiving end of optical channel.

Type:

Node

distance

length of the fiber (in m).

Type:

float

delay

delay (in ps) of message transmission (default distance / light_speed).

Type:

float

set_ends(sender: Node, receiver: str) None

Method to set endpoints for the classical channel.

This must be performed before transmission.

Parameters:
  • sender (Node) – node sending classical messages.

  • receiver (str) – name of node receiving classical messages.

transmit(message: Message, source: Node, priority: int) None

Method to transmit classical messages.

Parameters:
  • message (Message) – message to be transmitted.

  • source (Node) – node sending the message.

  • priority (int) – priority of transmitted message (to resolve message reception conflicts).

Side Effects:

Receiver node may receive the qubit (via the receive_qubit method).

class src.components.optical_channel.OpticalChannel(name: str, timeline: Timeline, attenuation: float, distance: int, polarization_fidelity: float, light_speed: float)

Parent class for optical fibers.

name

label for channel instance.

Type:

str

timeline

timeline for simulation.

Type:

Timeline

sender

node at sending end of optical channel.

Type:

Node

receiver

node at receiving end of optical channel.

Type:

Node

attenuation

attenuation of the fiber (in dB/m).

Type:

float

distance

length of the fiber (in m).

Type:

int

polarization_fidelity

probability of no polarization error for a transmitted qubit.

Type:

float

light_speed

speed of light within the fiber (in m/ps).

Type:

float

init() None

Method to initialize entity (abstract).

Entity init methods are invoked for all timeline entities when the timeline is initialized. This method can be used to perform any necessary functions before simulation.

class src.components.optical_channel.QuantumChannel(name: str, timeline: Timeline, attenuation: float, distance: int, polarization_fidelity=1.0, light_speed=0.0002, frequency=80000000.0)

Optical channel for transmission of photons/qubits.

name

label for channel instance.

Type:

str

timeline

timeline for simulation.

Type:

Timeline

sender

node at sending end of optical channel.

Type:

Node

receiver

node at receiving end of optical channel.

Type:

Node

attenuation

attenuation of the fiber (in dB/m).

Type:

float

distance

length of the fiber (in m).

Type:

int

polarization_fidelity

probability of no polarization error for a transmitted qubit.

Type:

float

light_speed

speed of light within the fiber (in m/ps).

Type:

float

loss

loss rate for transmitted photons (determined by attenuation).

Type:

float

delay

delay (in ps) of photon transmission (determined by light speed, distance).

Type:

int

frequency

maximum frequency of qubit transmission (in Hz).

Type:

float

init() None

Implementation of Entity interface (see base class).

schedule_transmit(min_time: int) int

Method to schedule a time for photon transmission.

Quantum Channels are limited by a frequency of transmission. This method returns the next available time for transmitting a photon.

Parameters:

min_time (int) – minimum simulation time for transmission.

Returns:

simulation time for next available transmission window.

Return type:

int

set_ends(sender: Node, receiver: str) None

Method to set endpoints for the quantum channel.

This must be performed before transmission.

Parameters:
  • sender (Node) – node sending qubits.

  • receiver (str) – name of node receiving qubits.

transmit(qubit: Photon, source: Node) None

Method to transmit photon-encoded qubits.

Parameters:
  • qubit (Photon) – photon to be transmitted.

  • source (Node) – source node sending the qubit.

Side Effects:

Receiver node may receive the qubit (via the receive_qubit method).