Unitary transformations of boson operators

In [1]:
from sympy import *
init_printing()

from sympy.physics.quantum import *
from sympy.physics.quantum.boson import *
from sympy.physics.quantum.fermion import *
from sympy.physics.quantum.operatorordering import *
In [2]:
from sympy_quantum_utils import *
In [3]:
omega_0, t, alpha = symbols("omega_0, t, alpha")
n = 8
In [4]:
a = BosonOp("a")

Transformations with $U = \exp(i \omega_0 a^\dagger a t)$

In [5]:
A = I * omega_0 * Dagger(a) * a * t
U = exp(A)

U
Out[5]:
$$e^{i \omega_{0} t {{a}^\dagger} {a}}$$

$U a^\dagger a U^\dagger = e^{i \omega_0 a^\dagger a t} a^\dagger a e^{-i \omega_0 a^\dagger a t} = a^\dagger a$

In [6]:
e = bch_expansion(A, Dagger(a) * a, n).doit()

normal_ordered_form(e)
Out[6]:
$${{a}^\dagger} {a}$$
In [7]:
unitary_transformation_auto(U, Dagger(a) * a)
Out[7]:
$${{a}^\dagger} {a}$$

$U a U^\dagger = a e^{-i\omega_0t}$

In [8]:
unitary_transformation_auto(U, a)
Out[8]:
$$e^{- i \omega_{0} t} {a}$$
In [9]:
e = bch_expansion(A, a, n).doit()

e = normal_ordered_form(expand(e))

e = collect(e, a)

e
Out[9]:
$$\left(\frac{i \omega_{0}^{7}}{5040} t^{7} - \frac{\omega_{0}^{6} t^{6}}{720} - \frac{i \omega_{0}^{5}}{120} t^{5} + \frac{\omega_{0}^{4} t^{4}}{24} + \frac{i \omega_{0}^{3}}{6} t^{3} - \frac{\omega_{0}^{2} t^{2}}{2} - i \omega_{0} t + 1\right) {a}$$
In [10]:
e == (exp(-I * omega_0 * t).series(t, 0, n=n).removeO()) * a
Out[10]:
True

$U a^\dagger U^\dagger = a^\dagger e^{i\omega_0t}$

In [11]:
unitary_transformation_auto(U, Dagger(a))
Out[11]:
$$e^{i \omega_{0} t} {{a}^\dagger}$$
In [12]:
e = bch_expansion(A, Dagger(a), n).doit()

e = normal_ordered_form(expand(e))

e = collect(e, Dagger(a))

e
Out[12]:
$$\left(- \frac{i \omega_{0}^{7}}{5040} t^{7} - \frac{\omega_{0}^{6} t^{6}}{720} + \frac{i \omega_{0}^{5}}{120} t^{5} + \frac{\omega_{0}^{4} t^{4}}{24} - \frac{i \omega_{0}^{3}}{6} t^{3} - \frac{\omega_{0}^{2} t^{2}}{2} + i \omega_{0} t + 1\right) {{a}^\dagger}$$
In [13]:
e == (exp(I * omega_0 * t).series(t, 0, n=n).removeO()) * Dagger(a)
Out[13]:
True

Transformations with $U = D(\alpha) = e^{\alpha a^\dagger - \alpha^* a}$:

In [14]:
H = Dagger(a) * alpha - conjugate(alpha) * a
U = exp(H)

U
Out[14]:
$$e^{\alpha {{a}^\dagger} - \overline{\alpha} {a}}$$

$U a U^\dagger = a - \alpha$

In [15]:
unitary_transformation_auto(U, a)
Out[15]:
$$- \alpha + {a}$$

$U a^\dagger U^\dagger = a^\dagger - \alpha^*$

In [16]:
unitary_transformation_auto(U, Dagger(a))
Out[16]:
$$- \overline{\alpha} + {{a}^\dagger}$$

$U a^\dagger a U^\dagger = a^\dagger a - \alpha a^\dagger - \alpha^* a + |\alpha|^2$

In [17]:
unitary_transformation_auto(U, Dagger(a) * a)
Out[17]:
$$\left(- \overline{\alpha} + {{a}^\dagger}\right) \left(- \alpha + {a}\right)$$

Optomechanical system

Consider the standard Hamiltonian for an optomechanical syste, including a classical driving signal on the optical mode:

$$ H = \hbar\omega_a a^\dagger a + \hbar \omega_b b^\dagger b + \hbar g a^\dagger a (b + b^\dagger) + (A e^{-i\omega_d t} + A^* e^{i\omega_d t})(a + a^\dagger) $$
In [33]:
n = 6
omega_a, omega_b, g, A, Delta = symbols("omega_a, omega_b, g, A, Delta", positive=True)
Hsym, omega_d = symbols("H, omega_d")
In [34]:
a, b = BosonOp("a"), BosonOp("b")
In [35]:
H = omega_a * Dagger(a) * a + omega_b * Dagger(b) * b + g * Dagger(a) * a * (b + Dagger(b)) \
    + (A * exp(-I * omega_d * t) + conjugate(A) * exp(I * omega_d * t)) * (a + Dagger(a))

Eq(Hsym, H)
Out[35]:
$$H = g {{a}^\dagger} {a} \left({{b}^\dagger} + {b}\right) + \omega_{a} {{a}^\dagger} {a} + \omega_{b} {{b}^\dagger} {b} + \left(A e^{i \omega_{d} t} + A e^{- i \omega_{d} t}\right) \left({{a}^\dagger} + {a}\right)$$

Linearized interaction

First we apply the unitary transformation $U = e^{i \omega_d a^\dagger a t}$:

In [36]:
U = exp(I * Dagger(a) * a * omega_d * t)

U
Out[36]:
$$e^{i \omega_{d} t {{a}^\dagger} {a}}$$
In [37]:
unitary_transformation_auto(U, H, independent=True)
Out[37]:
$$g {{a}^\dagger} {a} \left({{b}^\dagger} + {b}\right) + \omega_{a} {{a}^\dagger} {a} + \omega_{b} {{b}^\dagger} {b} + \left(A e^{i \omega_{d} t} + A e^{- i \omega_{d} t}\right) \left(e^{i \omega_{d} t} {{a}^\dagger} + e^{- i \omega_{d} t} {a}\right)$$
In [38]:
H1 = hamiltonian_transformation_auto(U, H, independent=True)

H1
Out[38]:
$$g {{a}^\dagger} {a} \left({{b}^\dagger} + {b}\right) + \omega_{a} {{a}^\dagger} {a} + \omega_{b} {{b}^\dagger} {b} - \omega_{d} {{a}^\dagger} {a} + \left(A e^{i \omega_{d} t} + A e^{- i \omega_{d} t}\right) \left(e^{i \omega_{d} t} {{a}^\dagger} + e^{- i \omega_{d} t} {a}\right)$$

We can now perform a rotating-wave approximation (RWA) by eliminating all terms that rotate with frequencies $2\omega_d$:

In [39]:
H2 = drop_terms_containing(H1.expand(), [exp(-2*I*omega_d*t), exp(2*I*omega_d*t)])

Eq(Symbol("H_{rwa}"), H2)
Out[39]:
$$H_{{rwa}} = A {{a}^\dagger} + A {a} + g {{a}^\dagger} {a} {{b}^\dagger} + g {{a}^\dagger} {a} {b} + \omega_{a} {{a}^\dagger} {a} + \omega_{b} {{b}^\dagger} {b} - \omega_{d} {{a}^\dagger} {a}$$

Now we introduce the detuning $\Delta = \omega_a - \omega_d$:

In [40]:
H3 = H2.subs(omega_a, Delta + omega_d).expand()

H3
Out[40]:
$$A {{a}^\dagger} + A {a} + \Delta {{a}^\dagger} {a} + g {{a}^\dagger} {a} {{b}^\dagger} + g {{a}^\dagger} {a} {b} + \omega_{b} {{b}^\dagger} {b}$$

To eliminate the coherent part of the state of the cavity mode we apply the unitary displacement operator $U = e^{\alpha a^\dagger - \alpha^*a}$:

In [41]:
alpha = symbols("alpha")
In [42]:
H = Dagger(a) * alpha - conjugate(alpha) * a
U = exp(H)

U
Out[42]:
$$e^{\alpha {{a}^\dagger} - \overline{\alpha} {a}}$$
In [43]:
H4 = hamiltonian_transformation_auto(U, H3, independent=True)

H4
Out[43]:
$$A \left(- \alpha + {a}\right) + A \left(- \overline{\alpha} + {{a}^\dagger}\right) + \Delta \left(- \overline{\alpha} + {{a}^\dagger}\right) \left(- \alpha + {a}\right) + g \left(- \overline{\alpha} + {{a}^\dagger}\right) \left(- \alpha + {a}\right) {{b}^\dagger} + g \left(- \overline{\alpha} + {{a}^\dagger}\right) \left(- \alpha + {a}\right) {b} + \omega_{b} {{b}^\dagger} {b}$$

Now want to cancel out the drivng terms so we set $A - \Delta \alpha = 0$, i.e. $\alpha = A/\Delta$:

In [44]:
H5 = H4.expand().subs({A: alpha * Delta, conjugate(alpha): alpha}) 

H5 = collect(H5, [g * Dagger(a) * a, - alpha * g])

H5
Out[44]:
$$- \Delta \alpha^{2} + \Delta {{a}^\dagger} {a} + \alpha^{2} g \left({{b}^\dagger} + {b}\right) + \alpha g \left(- {{a}^\dagger} {{b}^\dagger} - {{a}^\dagger} {b} - {a} {{b}^\dagger} - {a} {b}\right) + g {{a}^\dagger} {a} \left({{b}^\dagger} + {b}\right) + \omega_{b} {{b}^\dagger} {b}$$

Drop C-numbers from the hamiltonian:

In [45]:
H6 = drop_c_number_terms(H5)

H6
Out[45]:
$$\Delta {{a}^\dagger} {a} + \alpha^{2} g \left({{b}^\dagger} + {b}\right) + \alpha g \left(- {{a}^\dagger} {{b}^\dagger} - {{a}^\dagger} {b} - {a} {{b}^\dagger} - {a} {b}\right) + g {{a}^\dagger} {a} \left({{b}^\dagger} + {b}\right) + \omega_{b} {{b}^\dagger} {b}$$

Now, if driving strength is large, so that $\alpha \gg 1$, we can drop the nonlinear interaction term, and we have an linear effective coupling:

In [46]:
H7 = drop_terms_containing(H6, [g * Dagger(a) * a])  # XXX not working

Eq(Hsym, H7)
Out[46]:
$$H = \Delta {{a}^\dagger} {a} + \alpha^{2} g \left({{b}^\dagger} + {b}\right) + \alpha g \left(- {{a}^\dagger} {{b}^\dagger} - {{a}^\dagger} {b} - {a} {{b}^\dagger} - {a} {b}\right) + g {{a}^\dagger} {a} \left({{b}^\dagger} + {b}\right) + \omega_{b} {{b}^\dagger} {b}$$

Versions

In [47]:
%reload_ext version_information

%version_information sympy
Out[47]:
SoftwareVersion
Python3.4.0 (default, Apr 11 2014, 13:05:11) [GCC 4.8.2]
IPython3.0.0-dev
OSposix [linux]
sympy0.7.5-git
Tue Jun 10 17:25:19 2014 JST
In [47]:
 
In [ ]: