Cross Resonance Dynamics¶
In [ ]:
Copied!
import numpy as np
import qubex as qx
from qubex.simulator import Control, Coupling, QuantumSimulator, QuantumSystem, Transmon
import numpy as np
import qubex as qx
from qubex.simulator import Control, Coupling, QuantumSimulator, QuantumSystem, Transmon
\(\ket{n}_\mathrm{L} \otimes \ket{n}_\mathrm{H}\)¶
In [ ]:
Copied!
qubit_L = Transmon(
label="Q00",
dimension=4,
frequency=7.2,
anharmonicity=-7.2 / 19,
relaxation_rate=0.00005,
dephasing_rate=0.00005,
)
qubit_H = Transmon(
label="Q01",
dimension=4,
frequency=8.0,
anharmonicity=-8.0 / 19,
relaxation_rate=0.00005,
dephasing_rate=0.00005,
)
system = QuantumSystem(
objects=[
qubit_L,
qubit_H,
],
couplings=[
Coupling(
pair=(qubit_L, qubit_H),
strength=0.01,
),
],
)
simulator = QuantumSimulator(system)
qubit_L = Transmon(
label="Q00",
dimension=4,
frequency=7.2,
anharmonicity=-7.2 / 19,
relaxation_rate=0.00005,
dephasing_rate=0.00005,
)
qubit_H = Transmon(
label="Q01",
dimension=4,
frequency=8.0,
anharmonicity=-8.0 / 19,
relaxation_rate=0.00005,
dephasing_rate=0.00005,
)
system = QuantumSystem(
objects=[
qubit_L,
qubit_H,
],
couplings=[
Coupling(
pair=(qubit_L, qubit_H),
strength=0.01,
),
],
)
simulator = QuantumSimulator(system)
In [ ]:
Copied!
amplitude = 0.5 # GHz
duration = 200 # ns
ramptime = 30 # ns
pulse = qx.pulse.FlatTop(
duration=duration,
amplitude=2 * np.pi * amplitude,
tau=ramptime,
)
amplitude = 0.5 # GHz
duration = 200 # ns
ramptime = 30 # ns
pulse = qx.pulse.FlatTop(
duration=duration,
amplitude=2 * np.pi * amplitude,
tau=ramptime,
)
A. LOW → HIGH¶
- control qubit
- low frequency
- target qubit
- high frequency
In [ ]:
Copied!
control_qubit = qubit_L
target_qubit = qubit_H
control = Control(
target=control_qubit.label,
frequency=target_qubit.frequency,
waveform=pulse,
)
control.plot()
control_qubit = qubit_L
target_qubit = qubit_H
control = Control(
target=control_qubit.label,
frequency=target_qubit.frequency,
waveform=pulse,
)
control.plot()
A.1. \(\ket{0}_\mathrm{L} \otimes \ket{0}_\mathrm{H}\)¶
In [ ]:
Copied!
result = simulator.mesolve(
controls=[control],
initial_state={
qubit_L.label: "0",
qubit_H.label: "0",
},
)
result.plot_bloch_vectors(qubit_L.label)
result.plot_bloch_vectors(qubit_H.label)
result.display_bloch_sphere(qubit_L.label)
result.display_bloch_sphere(qubit_H.label)
result.plot_population_dynamics(qubit_L.label)
result.plot_population_dynamics(qubit_H.label)
result.plot_population_dynamics()
result = simulator.mesolve(
controls=[control],
initial_state={
qubit_L.label: "0",
qubit_H.label: "0",
},
)
result.plot_bloch_vectors(qubit_L.label)
result.plot_bloch_vectors(qubit_H.label)
result.display_bloch_sphere(qubit_L.label)
result.display_bloch_sphere(qubit_H.label)
result.plot_population_dynamics(qubit_L.label)
result.plot_population_dynamics(qubit_H.label)
result.plot_population_dynamics()
A.2. \(\ket{1}_\mathrm{L} \otimes \ket{0}_\mathrm{H}\)¶
In [ ]:
Copied!
result = simulator.mesolve(
controls=[control],
initial_state={
qubit_L.label: "1",
qubit_H.label: "0",
},
)
result.plot_bloch_vectors(qubit_L.label)
result.plot_bloch_vectors(qubit_H.label)
result.display_bloch_sphere(qubit_L.label)
result.display_bloch_sphere(qubit_H.label)
result.plot_population_dynamics(qubit_L.label)
result.plot_population_dynamics(qubit_H.label)
result.plot_population_dynamics()
result = simulator.mesolve(
controls=[control],
initial_state={
qubit_L.label: "1",
qubit_H.label: "0",
},
)
result.plot_bloch_vectors(qubit_L.label)
result.plot_bloch_vectors(qubit_H.label)
result.display_bloch_sphere(qubit_L.label)
result.display_bloch_sphere(qubit_H.label)
result.plot_population_dynamics(qubit_L.label)
result.plot_population_dynamics(qubit_H.label)
result.plot_population_dynamics()
B. HIGH → LOW¶
- control qubit
- high frequency
- target qubit
- low frequency
In [ ]:
Copied!
control_qubit = qubit_H
target_qubit = qubit_L
control = Control(
target=control_qubit.label,
frequency=target_qubit.frequency,
waveform=pulse,
)
control.plot()
control_qubit = qubit_H
target_qubit = qubit_L
control = Control(
target=control_qubit.label,
frequency=target_qubit.frequency,
waveform=pulse,
)
control.plot()
B.1. \(\ket{0}_\mathrm{L} \otimes \ket{0}_\mathrm{H}\)¶
In [ ]:
Copied!
result = simulator.mesolve(
controls=[control],
initial_state={
qubit_L.label: "0",
qubit_H.label: "0",
},
)
result.plot_bloch_vectors(qubit_L.label)
result.plot_bloch_vectors(qubit_H.label)
result.display_bloch_sphere(qubit_L.label)
result.display_bloch_sphere(qubit_H.label)
result.plot_population_dynamics(qubit_L.label)
result.plot_population_dynamics(qubit_H.label)
result.plot_population_dynamics()
result = simulator.mesolve(
controls=[control],
initial_state={
qubit_L.label: "0",
qubit_H.label: "0",
},
)
result.plot_bloch_vectors(qubit_L.label)
result.plot_bloch_vectors(qubit_H.label)
result.display_bloch_sphere(qubit_L.label)
result.display_bloch_sphere(qubit_H.label)
result.plot_population_dynamics(qubit_L.label)
result.plot_population_dynamics(qubit_H.label)
result.plot_population_dynamics()
B.2. \(\ket{0}_\mathrm{L} \otimes \ket{1}_\mathrm{H}\)¶
In [ ]:
Copied!
result = simulator.mesolve(
controls=[control],
initial_state={
qubit_L.label: "0",
qubit_H.label: "1",
},
)
result.plot_bloch_vectors(qubit_L.label)
result.plot_bloch_vectors(qubit_H.label)
result.display_bloch_sphere(qubit_L.label)
result.display_bloch_sphere(qubit_H.label)
result.plot_population_dynamics(qubit_L.label)
result.plot_population_dynamics(qubit_H.label)
result.plot_population_dynamics()
result = simulator.mesolve(
controls=[control],
initial_state={
qubit_L.label: "0",
qubit_H.label: "1",
},
)
result.plot_bloch_vectors(qubit_L.label)
result.plot_bloch_vectors(qubit_H.label)
result.display_bloch_sphere(qubit_L.label)
result.display_bloch_sphere(qubit_H.label)
result.plot_population_dynamics(qubit_L.label)
result.plot_population_dynamics(qubit_H.label)
result.plot_population_dynamics()