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.
QuantumInputOutput.jl already has low-level tools for modeling finite pulse delays:
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:
For explicit input and output modes:
where
output = vcould be equivalent tooutput = delayed_mode(u, τ).For common delayed interferometer geometries:
Possible optional arguments:
The delay-line object should probably carry both the SLH component and the required time-dependent parameter mapping.
For example:
or:
This would allow composition while keeping translation ergonomic:
Longer term, this could become more seamless if composable network components carry their own time parameters.