simulate

The Boulder Opal Toolkits are currently in beta phase of development. Breaking changes may be introduced.

simulate(transmons, cavities, interactions, gate_duration, sample_count=128, cutoff_frequency=None, initial_state=None)

Simulate a system composed of transmons and cavities.

Parameters
  • transmons (list[Transmon]) – List of objects containing the physical information about the transmons. It must not contain any optimizable coefficients. It can be an empty list, but at least one transmon or cavity must be provided.

  • cavities (list[Cavity]) – List of objects containing the physical information about the cavities. They must not contain any optimizable coefficients. It can be an empty list, but at least one transmon or cavity must be provided.

  • interactions (list[TransmonTransmonInteraction or TransmonCavityInteraction or CavityCavityInteraction]) – List of objects containing the physical information about the interactions in the system. They must not contain any optimizable coefficients. It can be an empty list.

  • gate_duration (float) – The duration of the gate to be simulated, \(t_\mathrm{gate}\). It must be greater than zero.

  • sample_count (int, optional) – The number of times between 0 and gate_duration (included) at which the evolution is sampled. Defaults to 128.

  • cutoff_frequency (float, optional) – The cutoff frequency of a linear sinc filter to be applied to the piecewise-constant signals you provide for the coefficients. If not provided, the signals are not filtered. If the signals are filtered, a larger sample count leads to a more accurate numerical integration. If the signals are not filtered, the sample count has no effect on the numerical precision of the integration.

  • initial_state (np.ndarray, optional) – The initial state of the system, \(|\Psi_\mathrm{initial}\rangle\), as a 1D array of length D = np.prod([system.dimension for system in transmons + cavities]). If not provided, the function only returns the system’s unitary time-evolution operators.

Returns

A dictionary containing information about the time evolution of the system, with keys

sample_times

The times at which the system’s evolution is sampled, as an array of shape (T,).

unitaries

The system’s unitary time-evolution operators at each sample time, as an array of shape (T, D, D).

state_evolution

The time evolution of the initial state at each sample time, as an array of shape (T, D). This is only returned if you provide an initial state.

Return type

dict

See also

superconducting.optimize()

Find optimal pulses or parameters for a system composed of transmons and cavities.

Notes

The Hamiltonian of the system is of the form

\[H = \sum_i H_{\mathrm{transmon}_i} + \sum_i H_{\mathrm{cavity}_i} + \sum_{i,j} H_{\mathrm{transmon}_i-\mathrm{transmon}_j} + \sum_{i,j} H_{\mathrm{transmon}_i-\mathrm{cavity}_j} + \sum_{i,j} H_{\mathrm{cavity}_i-\mathrm{cavity}_j}\]

where i and j mark the i-th and j-th transmon or cavity. For their definition of each Hamiltonian term, see its respective class.

The Hilbert space of the system is defined as the outer product of all the transmon Hilbert spaces (in the order they’re provided in transmons) with the cavity Hilbert spaces (in the order they’re provided in cavities), that is:

\[\mathcal{H} = \mathcal{H}_{\mathrm{transmon}_1} \otimes \mathcal{H}_{\mathrm{transmon}_2} \otimes \ldots \otimes \mathcal{H}_{\mathrm{cavity}_1} \otimes \mathcal{H}_{\mathrm{cavity}_2} \otimes \ldots\]

The system dimension D is then the product of all transmon and cavity dimensions.

See the superconducting systems namespace classes for a list of the relevant objects to describe transmons and cavities.