Как сделать две независимые полости, опосредованные каналом с подсказкой? - PullRequest
0 голосов
/ 29 апреля 2020

Я использую подсказку для имитации проблемы с открытой полостью - КЭД. Проблема состоит в том, что фотон происходит из первой полости (полости фидера), затем движется «достаточно долго», чтобы прибыть и взаимодействует со второй полостью. «В течение достаточно длительного времени» означает, что физика первой полости не зависит ни от чего из второй полости. Когда он попадает во вторую полость, он может взаимодействовать с ним и генерировать внутрирезонаторный фотон во второй полости, после чего он может покинуть вторую полость. Я заинтересован в отражении и использую «формализм ввода-вывода» для имитации этого. Поэтому мне нужно подключить режим вывода полости фидера (в котором есть фотон) к режиму ввода b_in второй полости (b_in = collapse_feed). Это то, что показано в минимальном примере здесь:

import matplotlib.pyplot as plt
import qutip
import numpy as np

fock_trunc = 3  # Fock space truncature
kappa_feed = 1  # damping rate of cavities
kappa = 1  # damping rate of cavities


# feeder cavity annihilation operator. the feeder cavity is to produce a single photon that will go inside the second cavity
a_feed = qutip.tensor(qutip.destroy(fock_trunc), qutip.qeye(fock_trunc))

# the second cavity annihilation operator
a = qutip.tensor(qutip.qeye(fock_trunc), qutip.destroy(fock_trunc))

# Initial state of the system, one photon inside the feeder cavity and no photons inside the second cavity.
vacuum = qutip.tensor(qutip.fock_dm(fock_trunc, 0), qutip.fock_dm(fock_trunc, 0))
rho_init = a_feed.dag() * vacuum * a_feed

# cavity losses defined with collapse operators
collapse_feed = np.sqrt(kappa_feed) * a_feed
collapse = np.sqrt(kappa) * a


# The photon that escapes the cavity should arrive inside the second one
# Point that is not working is here!
b_in = collapse_feed
# The output field of the cavity using the input-output formalism
b_out = b_in + np.sqrt(kappa) * a

# The cavity should be pumped by the photons originated from the feeder cavity.
H_pump = 1j * np.sqrt(kappa) * (a.dag() * b_in - a * b_in.dag())


# Master equation solver
times = np.linspace(0, 10)
result = qutip.mesolve(H_pump, rho_init, times, [collapse, collapse_feed], [])
exp_a_feed = qutip.expect(a_feed.dag() * a_feed, result.states)
exp_b_in = qutip.expect(b_in.dag() * b_in, result.states)
exp_b_out = qutip.expect(b_out.dag() * b_out, result.states)
exp_a = qutip.expect(a.dag() * a, result.states)

fig, ax = plt.subplots(1)
ax.plot(times, exp_a_feed, label="a feeder cav")
ax.plot(times, exp_b_in, label="b_in", linestyle="--")
ax.plot(times, exp_b_out, label="b_out")
ax.plot(times, exp_a, label="a")
ax.legend()
plt.show()


# It is not working properly as the interaction affects the feeder cavity. (normally exp_a_feed should be an exponential decay)
# I want to remove this interaction, so that the photon escape the feeder cavity in an isolated system,
# but the input field of the second cavity has a single photon statistics with the same properties as the feeder cavity.


Однако фотон, покидающий полость, должен сделать это с экспоненциальным затуханием, что здесь не так (существуют колебания для exp_a_feed (t) ) который я понимаю, так как есть взаимодействие со второй полостью. Это именно то, чего я хочу избежать: мне нужна однофотонная статистика и волновой пакет фотона, выходящего из резонатора, в качестве входной моды второй резонатора. Я не знаю, как реализовать это в подсказке и возможно ли это ... Возможный способ сделать это, установив b_in (t) = collapse_feed (t + t_0), чтобы физика питающей полости могла go до устойчивого состояния, прежде чем сможет взаимодействовать со второй полостью. Я не знаю, возможно ли это реализовать с помощью подсказки (и даже если это физически хорошее решение ...) Если есть несколько разных способов создать вход второй резонатора, который имеет желаемую фотонную статистику и волновые пакеты Я был бы счастлив узнать это. Дайте мне знать, если вам нужна дополнительная информация.

Спасибо

...