qojulia / qojulia/QuantumInputOutput.jl
Add High-Level Delay-Line and Interferometer APIs
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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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