qiskit-documentation/docs/api/qiskit/0.29/qiskit.providers.aer.pulse....

101 lines
4.6 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: duffing_system_model (v0.29)
description: API reference for qiskit.providers.aer.pulse.duffing_system_model in qiskit v0.29
in_page_toc_min_heading_level: 1
python_api_type: function
python_api_name: qiskit.providers.aer.pulse.duffing_system_model
---
<span id="qiskit-providers-aer-pulse-duffing-system-model" />
# qiskit.providers.aer.pulse.duffing\_system\_model
<Function id="qiskit.providers.aer.pulse.duffing_system_model" isDedicatedPage={true} github="https://github.com/qiskit/qiskit-aer/tree/stable/0.8/qiskit/providers/aer/pulse/system_models/duffing_model_generators.py" signature="duffing_system_model(dim_oscillators, oscillator_freqs, anharm_freqs, drive_strengths, coupling_dict, dt)">
Returns a [`PulseSystemModel`](qiskit.providers.aer.pulse.PulseSystemModel "qiskit.providers.aer.pulse.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`](qiskit.providers.aer.pulse.PulseSystemModel "qiskit.providers.aer.pulse.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()`](qiskit.providers.aer.pulse.PulseSystemModel#control_channel_index "qiskit.providers.aer.pulse.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`.
```python
# 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:
```python
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**
[PulseSystemModel](qiskit.providers.aer.pulse.PulseSystemModel "qiskit.providers.aer.pulse.PulseSystemModel")
</Function>