About cookies on this site Our websites require some cookies to function properly (required). In addition, other cookies may be used with your consent to analyze site usage, improve the user experience and for advertising. For more information, please review your options. By visiting our website, you agree to our processing of information as described in IBM’sprivacy statement. To provide a smooth navigation, your cookie preferences will be shared across the IBM web domains listed here.
qiskit_aer.pulse.duffing_system_model
duffing_system_model(dim_oscillators, oscillator_freqs, anharm_freqs, drive_strengths, coupling_dict, dt)
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: , specified in the list
oscillator_freqs
- Anharmonicity: , specified in the list
anharm_freqs
, and- Drive strength: , specified in the list
drive_strengths
.
For each oscillator, the above parameters enter into the Hamiltonian via the terms:
where and are, respectively, the creation and annihilation operators for the oscillator, and is the drive signal for the oscillator.
Each coupling term between a pair of oscillators is specified by:
- Oscillator pair: , and
- Coupling strength: ,
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:
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))
Parameters
- 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.
Returns
The generated Duffing system model
Return type
Was this page helpful?
Report a bug or request content on GitHub.