qiskit.providers.aer.pulse.duffing_system_model¶

duffing_system_model(dim_oscillators, oscillator_freqs, anharm_freqs, drive_strengths, coupling_dict, dt)[source]

Returns a PulseSystemModel representing a physical model for a collection of Duffing oscillators.

In the model, each individual oscillator is specified by the parameters:

• Frequency: $$\nu$$, specified in the list oscillator_freqs

• Anharmonicity: $$\alpha$$, specified in the list anharm_freqs, and

• Drive strength: $$r$$, specified in the list drive_strengths.

For each oscillator, the above parameters enter into the Hamiltonian via the terms:

$\pi(2 \nu - \alpha)a^\dagger a + \pi \alpha (a^\dagger a)^2 + 2 \pi r D(t) (a + a^\dagger),$

where $$a^\dagger$$ and $$a$$ are, respectively, the creation and annihilation operators for the oscillator, and $$D(t)$$ is the drive signal for the oscillator.

Each coupling term between a pair of oscillators is specified by:

• Oscillator pair: $$(i,k)$$, and

• Coupling strength: $$j$$,

which are passed in the argument coupling_dict, which is a dict with keys being the tuple (i,k), and values the strength j. Specifying a coupling results in the Hamiltonian term:

$2 \pi j (a_i^\dagger a_k + a_i a_k^\dagger).$

Finally, the returned PulseSystemModel is setup for performing cross-resonance drives between coupled qubits. The index for the ControlChannel corresponding to a particular cross-resonance drive channel is retreived by calling PulseSystemModel.control_channel_index() with the tuple (drive_idx, target_idx), where drive_idx is the index of the oscillator being driven, and target_idx is the target oscillator (see example below).

Note: In this model, all frequencies are in frequency units (as opposed to radial).

Example

Constructing a three Duffing Oscillator :class:PulseSystemModel.

# cutoff dimensions
dim_oscillators = 3

# single oscillator drift parameters
oscillator_freqs = [5.0e9, 5.1e9, 5.2e9]
anharm_freqs = [-0.33e9, -0.33e9, -0.33e9]

# drive strengths
drive_strengths = [0.02e9, 0.02e9, 0.02e9]

# specify coupling as a dictionary; here the qubit pair (0,1) is coupled with
# strength 0.002e9, and the qubit pair (1,2) is coupled with strength 0.001e9
coupling_dict = {(0,1): 0.002e9, (1,2): 0.001e9}

# time
dt = 1e-9

# create the model
three_qubit_model = duffing_system_model(dim_oscillators=dim_oscillators,
oscillator_freqs=oscillator_freqs,
anharm_freqs=anharm_freqs,
drive_strengths=drive_strengths,
coupling_dict=coupling_dict,
dt=dt)


In the above model, qubit pairs (0,1) and (1,2) are coupled. To perform a cross-resonance drive on qubit 1 with target 0, use the ControlChannel with index:

three_qubit_model.control_channel_index((1,0))

Paramètres
• dim_oscillators (int) – Dimension of truncation for each oscillator.

• oscillator_freqs (list) – Oscillator frequencies in frequency units.

• anharm_freqs (list) – Anharmonicity values in frequency units.

• drive_strengths (list) – Drive strength values in frequency units.

• coupling_dict (dict) – Coupling graph with keys being edges, and values the coupling strengths in frequency units.

• dt (float) – Sample width for pulse instructions.

Renvoie

The generated Duffing system model

Type renvoyé

PulseSystemModel