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 *
from sympy_quantum_utils import *
omega_0, t, alpha = symbols("omega_0, t, alpha")
n = 8
a = BosonOp("a")
A = I * omega_0 * Dagger(a) * a * t
U = exp(A)
U
e = bch_expansion(A, Dagger(a) * a, n).doit()
normal_ordered_form(e)
unitary_transformation_auto(U, Dagger(a) * a)
unitary_transformation_auto(U, a)
e = bch_expansion(A, a, n).doit()
e = normal_ordered_form(expand(e))
e = collect(e, a)
e
e == (exp(-I * omega_0 * t).series(t, 0, n=n).removeO()) * a
True
unitary_transformation_auto(U, Dagger(a))
e = bch_expansion(A, Dagger(a), n).doit()
e = normal_ordered_form(expand(e))
e = collect(e, Dagger(a))
e
e == (exp(I * omega_0 * t).series(t, 0, n=n).removeO()) * Dagger(a)
True
H = Dagger(a) * alpha - conjugate(alpha) * a
U = exp(H)
U
unitary_transformation_auto(U, a)
unitary_transformation_auto(U, Dagger(a))
unitary_transformation_auto(U, Dagger(a) * a)
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) $$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")
a, b = BosonOp("a"), BosonOp("b")
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)
First we apply the unitary transformation $U = e^{i \omega_d a^\dagger a t}$:
U = exp(I * Dagger(a) * a * omega_d * t)
U
unitary_transformation_auto(U, H, independent=True)
H1 = hamiltonian_transformation_auto(U, H, independent=True)
H1
We can now perform a rotating-wave approximation (RWA) by eliminating all terms that rotate with frequencies $2\omega_d$:
H2 = drop_terms_containing(H1.expand(), [exp(-2*I*omega_d*t), exp(2*I*omega_d*t)])
Eq(Symbol("H_{rwa}"), H2)
Now we introduce the detuning $\Delta = \omega_a - \omega_d$:
H3 = H2.subs(omega_a, Delta + omega_d).expand()
H3
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}$:
alpha = symbols("alpha")
H = Dagger(a) * alpha - conjugate(alpha) * a
U = exp(H)
U
H4 = hamiltonian_transformation_auto(U, H3, independent=True)
H4
Now want to cancel out the drivng terms so we set $A - \Delta \alpha = 0$, i.e. $\alpha = A/\Delta$:
H5 = H4.expand().subs({A: alpha * Delta, conjugate(alpha): alpha})
H5 = collect(H5, [g * Dagger(a) * a, - alpha * g])
H5
Drop C-numbers from the hamiltonian:
H6 = drop_c_number_terms(H5)
H6
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:
H7 = drop_terms_containing(H6, [g * Dagger(a) * a]) # XXX not working
Eq(Hsym, H7)
%reload_ext version_information
%version_information sympy
Software | Version |
---|---|
Python | 3.4.0 (default, Apr 11 2014, 13:05:11) [GCC 4.8.2] |
IPython | 3.0.0-dev |
OS | posix [linux] |
sympy | 0.7.5-git |
Tue Jun 10 17:25:19 2014 JST |