qojulia / qojulia/QuantumInputOutput.jl

Add High-Level Delay-Line and Interferometer APIs

Open
#25 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Julia
Stars
7
Forks
0
Avg merge
7h 15m
Merged PRs (30d)
26

Description

QuantumInputOutput.jl already has low-level tools for modeling finite pulse delays:

coupling_delay_in(u, v, T)
coupling_delay_out(u, v, T)

However, using them currently requires a lot of manual bookkeeping: defining delay-cavity modes, constructing the two-port SLH element, padding channels, managing time-dependent symbols, and assembling the network by hand.

It would be useful to expose delay lines as first-class network components, so users can write models closer to the physical diagram.

Add a high-level delay-line constructor:

delay = delay_line(
    :d,
    a_d;
    input = u,
    delay = τ,
    T = T,
)
G = G_input ▷ delay ▷ G_system ▷ G_output

For explicit input and output modes:

delay = delay_line(
    :d,
    a_d;
    input = u,
    output = v,
    T = T,
)

where output = v could be equivalent to output = delayed_mode(u, τ).

For common delayed interferometer geometries:

mz = mach_zehnder_delay(
    input = u,
    delays = (0.0, τ),
    beamsplitter = :balanced,
    T = T,
)

G_eff = mz ▷ G_atom

Possible optional arguments:

mz = mach_zehnder_delay(
    input = u,
    delays = (τ1, τ2),
    beamsplitter = :balanced,
    phase = ϕ,
    T = T,
)

The delay-line object should probably carry both the SLH component and the required time-dependent parameter mapping.
For example:

delay.G
delay.time_parameter

or:

G_delay, time_parameter = slh(delay)

This would allow composition while keeping translation ergonomic:

G_total = G_input ▷ delay.G ▷ G_system ▷ G_output

H_QO = translate_qo(
    hamiltonian(G_total),
    b;
    time_parameter = delay.time_parameter,
)

Longer term, this could become more seamless if composable network components carry their own time parameters.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the existing coupling_delay_in and coupling_delay_out tools and the SLH/network composition APIs they support. Define how delay_line and mach_zehnder_delay should represent their SLH components and time-parameter mappings. Done means the proposed constructors support the shown compositions and translation_qo workflow, including explicit modes and optional interferometer parameters.

Written by the indexing model from the issue text.

Assessment

Tech stack
julia
Domain
backend-api-design
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.