# sf.apps.sample.vibronic¶

vibronic(t, U1, r, U2, alpha, n_samples, loss=0.0)[source]

Generate samples for computing vibronic spectra. The following gates are applied to input vacuum states:

1. Two-mode squeezing on all $$2N$$ modes with parameters t

2. Interferometer U1 on the first $$N$$ modes

3. Squeezing on the first $$N$$ modes with parameters r

4. Interferometer U2 on the first $$N$$ modes

5. Displacement on the first $$N$$ modes with parameters alpha

A sample is generated by measuring the number of photons in each of the $$2N$$ modes. In the special case that all of the two-mode squeezing parameters t are zero, only $$N$$ modes are considered, which speeds up calculations.

Example usage:

>>> formic = data.Formic()
>>> w = formic.w
>>> wp = formic.wp
>>> Ud = formic.Ud
>>> delta = formic.delta
>>> T = 0
>>> t, U1, r, U2, alpha = vibronic.gbs_params(w, wp, Ud, delta, T)
>>> sample.vibronic(t, U1, r, U2, alpha, 2, 0.0)
[[0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

Parameters
• t (array) – two-mode squeezing parameters

• U1 (array) – unitary matrix for the first interferometer

• r (array) – squeezing parameters

• U2 (array) – unitary matrix for the second interferometer

• alpha (array) – displacement parameters

• n_samples (int) – number of samples to be generated

• loss (float) – loss parameter denoting the fraction of generated photons that are lost

Returns

a list of samples from GBS

Return type

list[list[int]]