Skip to content

Add High-Level Delay-Line and Interferometer APIs #25

Description

@oameye

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions