2 coupled qubits
In [ ]:
Copied!
from qubex.simulator import Control, Coupling, QuantumSimulator, QuantumSystem, Transmon
from qubex.simulator import Control, Coupling, QuantumSimulator, QuantumSystem, Transmon
In [ ]:
Copied!
# Create the quantum system with two coupled transmon qubits (unit: GHz)
qubits = [
Transmon(
label="Q0",
dimension=3,
frequency=7.648,
anharmonicity=-0.33,
relaxation_rate=0.0,
dephasing_rate=0.0,
),
Transmon(
label="Q1",
dimension=3,
frequency=8.275,
anharmonicity=-0.33,
relaxation_rate=0.0,
dephasing_rate=0.0,
),
]
system = QuantumSystem(
objects=qubits,
couplings=[
Coupling(
pair=(qubits[0], qubits[1]),
strength=0.01,
),
],
)
simulator = QuantumSimulator(system)
# Create the quantum system with two coupled transmon qubits (unit: GHz)
qubits = [
Transmon(
label="Q0",
dimension=3,
frequency=7.648,
anharmonicity=-0.33,
relaxation_rate=0.0,
dephasing_rate=0.0,
),
Transmon(
label="Q1",
dimension=3,
frequency=8.275,
anharmonicity=-0.33,
relaxation_rate=0.0,
dephasing_rate=0.0,
),
]
system = QuantumSystem(
objects=qubits,
couplings=[
Coupling(
pair=(qubits[0], qubits[1]),
strength=0.01,
),
],
)
simulator = QuantumSimulator(system)
In [ ]:
Copied!
system.hamiltonian
system.hamiltonian
In [ ]:
Copied!
static_zz = system.get_static_zz(("Q0", "Q1"))
print(f"static_zz: {static_zz * 1e6:.2f} kHz")
static_zz = system.get_static_zz(("Q0", "Q1"))
print(f"static_zz: {static_zz * 1e6:.2f} kHz")
In [ ]:
Copied!
frequency_shift_0 = system.get_frequency_shift("Q0")
print(f"frequency_shift_0: {frequency_shift_0 * 1e6:.2f} kHz")
frequency_shift_1 = system.get_frequency_shift("Q1")
print(f"frequency_shift_1: {frequency_shift_1 * 1e6:.2f} kHz")
frequency_shift_0 = system.get_frequency_shift("Q0")
print(f"frequency_shift_0: {frequency_shift_0 * 1e6:.2f} kHz")
frequency_shift_1 = system.get_frequency_shift("Q1")
print(f"frequency_shift_1: {frequency_shift_1 * 1e6:.2f} kHz")
In [ ]:
Copied!
effective_frequency_0 = system.get_effective_frequency("Q0")
print(f"effective_frequency_0: {effective_frequency_0:.6f} GHz")
effective_frequency_1 = system.get_effective_frequency("Q1")
print(f"effective_frequency_1: {effective_frequency_1:.6f} GHz")
effective_frequency_0 = system.get_effective_frequency("Q0")
print(f"effective_frequency_0: {effective_frequency_0:.6f} GHz")
effective_frequency_1 = system.get_effective_frequency("Q1")
print(f"effective_frequency_1: {effective_frequency_1:.6f} GHz")
Static ZZ interaction¶
In [ ]:
Copied!
# Duration for 1 period of the ZZ interaction
duration = abs(1 / static_zz) # ns
controls = [
Control(
target=qubits[0],
waveform=[0],
durations=[duration],
frequency=effective_frequency_0,
),
Control(
target=qubits[1],
waveform=[0],
durations=[duration],
frequency=effective_frequency_1,
),
]
# Duration for 1 period of the ZZ interaction
duration = abs(1 / static_zz) # ns
controls = [
Control(
target=qubits[0],
waveform=[0],
durations=[duration],
frequency=effective_frequency_0,
),
Control(
target=qubits[1],
waveform=[0],
durations=[duration],
frequency=effective_frequency_1,
),
]
In [ ]:
Copied!
result = simulator.mesolve(
controls=controls,
initial_state={
qubits[0].label: "0",
qubits[1].label: "+",
},
n_samples=101,
)
result.plot_bloch_vectors(qubits[0].label, frame="drive")
result.plot_bloch_vectors(qubits[1].label, frame="drive")
result.display_bloch_sphere(qubits[0].label, frame="drive")
result.display_bloch_sphere(qubits[1].label, frame="drive")
result = simulator.mesolve(
controls=controls,
initial_state={
qubits[0].label: "0",
qubits[1].label: "+",
},
n_samples=101,
)
result.plot_bloch_vectors(qubits[0].label, frame="drive")
result.plot_bloch_vectors(qubits[1].label, frame="drive")
result.display_bloch_sphere(qubits[0].label, frame="drive")
result.display_bloch_sphere(qubits[1].label, frame="drive")
In [ ]:
Copied!
result = simulator.mesolve(
controls=controls,
initial_state={
qubits[0].label: "1",
qubits[1].label: "+",
},
n_samples=101,
)
result.plot_bloch_vectors(qubits[0].label, frame="drive")
result.plot_bloch_vectors(qubits[1].label, frame="drive")
result.display_bloch_sphere(qubits[0].label, frame="drive")
result.display_bloch_sphere(qubits[1].label, frame="drive")
result = simulator.mesolve(
controls=controls,
initial_state={
qubits[0].label: "1",
qubits[1].label: "+",
},
n_samples=101,
)
result.plot_bloch_vectors(qubits[0].label, frame="drive")
result.plot_bloch_vectors(qubits[1].label, frame="drive")
result.display_bloch_sphere(qubits[0].label, frame="drive")
result.display_bloch_sphere(qubits[1].label, frame="drive")
In [ ]:
Copied!
result = simulator.mesolve(
controls=controls,
initial_state={
qubits[0].label: "+",
qubits[1].label: "+",
},
n_samples=101,
)
result.plot_bloch_vectors(qubits[0].label, frame="drive")
result.plot_bloch_vectors(qubits[1].label, frame="drive")
result.display_bloch_sphere(qubits[0].label, frame="drive")
result.display_bloch_sphere(qubits[1].label, frame="drive")
result = simulator.mesolve(
controls=controls,
initial_state={
qubits[0].label: "+",
qubits[1].label: "+",
},
n_samples=101,
)
result.plot_bloch_vectors(qubits[0].label, frame="drive")
result.plot_bloch_vectors(qubits[1].label, frame="drive")
result.display_bloch_sphere(qubits[0].label, frame="drive")
result.display_bloch_sphere(qubits[1].label, frame="drive")