Iran Journal of Computer Science (2018) 1:129–132 https://doi.org/10.1007/s42044-018-0018-1
SHORT COMMUNICATION
QuTiP-package applications to five-level atom with one mode Ahmed Salah1,2,3 Received: 6 December 2017 / Accepted: 12 March 2018 / Published online: 23 March 2018 © Springer International Publishing AG, part of Springer Nature 2018
Abstract In this poster, we apply the Quantum Toolbox in Python (QuTiP) to study the interaction between a five-level atom and a single-mode cavity field. The non-classical statistical aspects such as the Mandel Q parameter, squeezing parameter, and linear entropy are investigated. Keywords QuTiP · Five-level atom · Non-classical aspects
1 Introduction The high-performance computers need the high-performance software. Until recently, Fortran and C++ are still a good software to develop high-performance programs but complicated codes. Recently, the high-level programming language Python has emerged as an alternative to compiled languages. Since that, many programs have been built to solve many mathematical problems. The quantum optics and information are the one of these problems which can be solved by Python codes. For this reason, Johansson et al. [1] have presented an object-oriented open-source framework for solving the dynamics of open quantum systems written in Python, which is called Quantum Toolbox in Python (QuTiP). It is open-source software for calculations and numerical simulations of dynamics of open quantum systems. Lately, we [2] study a double -type five-level atom interacting with a single-mode electromagnetic cavity field in the (off) nonresonate case. In this poster, we present a very simple code by QuTiP to investigate the non-classical aspects for the double five-level atom interacting with a single-mode cavity field. The aim of this poster is describe an effective Python code using QuTiP to study the interaction between a five-level
B
Ahmed Salah
[email protected]
1
Mathematics and Theoretical Physics Department, Nuclear Research Centre, Atomic Energy Authority, Cairo, Egypt
2
Mathematics Department, Faculty of Science, South Valley University, Qena, Egypt
3
Abdus Salam International Centre for Theoretical Physics, Strada Costiera, 11, 34151 Trieste, Italy
atom and a single-mode cavity field. For more information about QuTiP, see the project web page: http://qutip.org/. To use QuTiP in a Python program, first include the QuTiP module: from qutip import * import matplotlib.pyplot as plt import numpy as np from pylab import * from scipy import arange, conj, prod import scipy.sparse as sp from qutip.qobj import Qobj from qutip.operators import destroy, jmat from qutip.tensor import tensor
2 Setup the Hamiltonian model, operators, and initial state We consider here a model for the interaction between a five-level atom with a single mode with frequency of the electromagnetic field in an optical cavity, the total Hamiltonian of the model can be written as Hˆ = Hˆ 0 + Hˆ I ,
(1)
where the free part Hˆ 0 of Hamiltonian is given by ˜ 3 − 2 )σˆ 44 + 4 σˆ 55 Hˆ 0 = 1 σˆ 22 + 2 σˆ 33 + (
(2)
where σˆ i j = |i j| , (i = j = 1, 2, . . . , 5) are the atomic operators for i = j, which they can be written by QuTiP as follows: sigma11=tensor(qeye(N),basis(5,0)*basis(5,0).dag()) sigma22=tensor(qeye(N),basis(5,1)*basis(5,1).dag()) sigma33=tensor(qeye(N),basis(5,2)*basis(5,2).dag()) sigma44=tensor(qeye(N),basis(5,3)*basis(5,3).dag()) sigma55=tensor(qeye(N),basis(5,4)*basis(5,4).dag())
123
130
Iran Journal of Computer Science (2018) 1:129–132
with H0= H12= H21= H13= H31= H15= H51= H34= H43= args
delta1*sigma22+delta2*sigma33+\ (delta3+delta2)*sigma44+delta4*sigma55 lambd1 * A * sigma12 lambd1 * A.dag() * sigma12.dag() lambd2 * A * sigma13 lambd2 * A.dag() * sigma13.dag() lambd3 * A * sigma15 lambd3 * A.dag() * sigma15.dag() lambd4 * A * sigma34 lambd4 * A.dag() * sigma34.dag() = (H0, H12, H21, H13, H31, H15, H51, H34, H43).
Fig. 1 Energy-level scheme for a five-level atom with a single-mode cavity
From the considered initial conditions, the initial state vector of the atom-field system can be written as
and for j = k are the polarization operators which they can be written as
|ψ(t = 0) =
N=60 # The detuning parameters delta1 = 0.0 delta2 = 0.0 delta3 = 0.0 delta4 = 0.0.
¯ qn = e−n/2
(3)
where aˆ † (a) ˆ is the creation (extinction) operator with the †field frequency satisfying the commutation relations a, ˆ aˆ = 1, and can be written as follows (Fig. 1): # cavity operators a = tensor(destroy(N), qeye(5)).
The number of photon aˆ † aˆ is given by nc = a.dag() * a xc = a + a.dag()
where λi is the coupling constants between an atom and a field: 1.0 1.0 1.0 1.0.
The total Hamiltonian (1) can be written as def hamiltonian_t(t, args): H0 = args[0] H12 = args[1] H21 = args[2] H13 = args[3] H31 = args[4] H15 = args[5] H51 = args[6] H34 = args[7] H43 = args[8] H=H0+(H12+H21)+\ (H13+H31)+\ (H34+H43)+\ (H15+H51) return H
123
α0n , n!
(5)
where n¯ = |α0 |2 is the initial mean photon number. The coherent state by QuTiP is given by
The interaction part Hˆ I is defined as
= = = =
(4)
where Pn = |qn |2 is the distribution function for the coherent field. The field will be considered, for example, in a coherent state. Hence, qn is given by
with detuning parameters are defined as
lambd1 lambd2 lambd3 lambd4
qn |n,
n
sigma12=tensor(qeye(N),basis(5,0)*basis(5,1).dag()) sigma13=tensor(qeye(N),basis(5,0)*basis(5,2).dag()) sigma15=tensor(qeye(N),basis(5,0)*basis(5,4).dag()) sigma34=tensor(qeye(N),basis(5,2)*basis(5,3).dag()) I = tensor(qeye(N), qeye(4))
ˆ 1 σˆ 12 + λ2 σˆ 13 + λ3 σˆ 15 + λ4 σˆ 34 ) + h.c. Hˆ I = a(λ
# The atom is initially prepared in coherent state def CS(N, alpha, offset=0, method=’operator’): x = basis(N, 0) a = destroy(N) D = (alpha * a.dag() - conj(alpha) * a).expm() return D * x.
If we consider the field to be in the squeezed state. Hence, Pn is given by 1 2† † ∗ ∗ 2 |0. qn = exp α aˆ − α aˆ exp ζ aˆ − ζ aˆ 2
(6)
The squeezed state by QuTiP is given by # The atom is initially prepared in squeezed state def squeezed_state(N, alpha ,r, theta): x = basis(N,0) a=destroy(N) zeta=r*exp(1j*theta) D=(alpha * a.dag() - conj(alpha) * a).expm()*\ ((1/2)*((zeta * a.dag()**2 - conj(zeta) * a**2))).expm() return D*x.
At this point, the QuTiP can be calculated the time evolution of the system. In the following example, we use the master equation ODE solver mesolve. In addition to the Hamiltonian, initial state, and the list of collapse operator, we pass a list tlist to the solver that contains the times at which we wish to evaluate the density matrix: c_ops = [] psi0 = tensor(CS(N, sqrt(10)), (basis(5,0)).unit()) tlist = linspace(0, 100, 1500) res = mesolve(hamiltonian_t, psi0, tlist, c_ops,[],args).
In the following section. we shall investigate numerically the effect of the detuning on the dynamical behavior
Iran Journal of Computer Science (2018) 1:129–132
131
of collapse and revival, second-order correlation function, the Mandel Q function, the normal squeezing, and the linear entropy.
3 Collapse and revival phenomena
6 Calculate normal squeezing
The probability of finding the atom in its state | j is given by 2
Pn A j (n, t) . σˆ j j (t) =
(7)
n
The mean photon number aˆ † (t)a(t) ˆ can be expressed as
aˆ † (t)a(t) ˆ = n¯ + σˆ 22 + σˆ 33 + 2 σˆ 44 + σˆ 55 .
NC1 = expect(nc, states) NCC1 = expect(ncc, states) Q=(NCC1-NC1**2)/NC1 return Q.
(8)
Squeezed light is a radiation field without a classical analogue. To study the normal squeezing phenomena, we define 1 1 S2 = (V2 )2 − , Sx = (V1 )2 − , 4 4
1 †2 2 2 † aˆ + aˆ + 2 aˆ aˆ (V1 ) = 4 2 , +1 − aˆ † + aˆ
(11)
(12)
The mean photon number code can be written as (Fig. 2): def Normal_Sqx(level_n, states): a= tensor(destroy(N), qeye(level_n)) nc = a.dag() * a nf = a + a.dag() aa = a**2 ad = a.dag()**2 aae= expect(aa, states) ade= expect(ad, states) nfe= expect(nf, states) NC1 = expect(nc, states) Sx = 0.25*(2*NC1+ aae+ ade+ 1- (nfe)**2)-0.25 return Sx
def Mean_photon(level_n, states): a= tensor(destroy(N), qeye(level_n)) nc = a.dag() * a NC1 = expect(nc, states) return NC1.
4 Calculate second-order correlation function
and the normal squeezing in y direction is defined as (Fig. 4):
The second-order correlation function is defined as
2 †
†2 † − aˆ (t)a(t) ˆ ˆ aˆ (t)aˆ 2 (t) aˆ (t)a(t) . g (t) =
2 =
2 aˆ † (t)a(t) aˆ † (t)a(t) ˆ ˆ 2
(9)
The pervious expression can be written by QuTiP as follows: # The second-order correlation function for N level atom def Second_order(level_n, states): a= tensor(destroy(N), qeye(level_n)) ncc= (a.dag() * a)**2 nc = a.dag() * a NC1 = expect(nc, states) NCC1 = expect(ncc, states) Gt=(NCC1-NC1)/NC1**2 return Gt.
5 Mandel Q function The sub-Poissonian photon statistics of the state is one of the most remarkable non-classical effect. To analyze such effects, we study the Mandel Q parameter which is given by Q(t) =
ˆ aˆ †2 (t)aˆ 2 (t) − aˆ † (t)a(t) , 2 aˆ † (t)a(t) ˆ
which can be written by Python as (Fig. 3): # The Mandel Q function for N level atom def Mandel(level_n, states): a= tensor(destroy(N), qeye(level_n)) ncc= a.dag()**2*a**2 nc = a.dag() * a
(10)
1 1 S2 = (V2 )2 − , S y = (V2 )2 − , 4 4
1 †2 2 aˆ + aˆ + 2 aˆ † aˆ (V2 )2 = − 4 2 +1 − aˆ † − aˆ .
(13)
(14)
def Normal_Sqy(level_n, states): a= tensor(destroy(N), qeye(level_n)) nc = a.dag() * a nf = a - a.dag() aa = a**2 ad = a.dag()**2 aae= expect(aa, states) ade= expect(ad, states) nfe= expect(nf, states) NC1 = expect(nc, states) Sy = 2*NC1- aae- ade + (nfe)**2 return Sy.
7 Linear entropy Linear entropy as a quantitative measure is employed to evaluate the temporal behavior of DEM. However, due to the strong relation between the purity and the linear entropy, we can employ the concept of the purity to measure the degree of entanglement. The linear entropy is defined as P(t) = 1 − T r {ρˆ 2f (t)}.
(15)
123
132
Iran Journal of Computer Science (2018) 1:129–132
Fig. 2 Plots of aˆ † (t)a(t) ˆ for the five-level system (lower
curves) and aˆ † (t)a(t) ˆ + 1 for the considered four-level system (upper curves) as a function of the scaled time λt; with (n¯ = 10) and a (s = 0), b (s = 5)
Fig. 3 Plot of g 2 (t) for the five-level system (lower curves) and of g 2 (t) + 0.05 for the considered four-level system (upper curves) for the same data as in Fig. 2
Fig. 4 Plots of the squeezing parameter S with the same data, as shown in Fig. 2; red curves are for the five-level fan system and blue curves are for the considered four-level system (color figure online)
entropy = zeros(shape(tlist)) entropy_cavity = zeros(shape(tlist)) def entropy_linear(rho): if rho.type == ’ket’ or rho.type == ’bra’: rho = ket2dm(rho) return float(real(1.0 - (rho ** 2).tr())) for idx, rho in enumerate(res.states): entropy_cavity = ptrace(rho, 0) entropy[idx]= entropy_linear(entropy_cavity).
8 Conclusions In this poster, the interaction between a five-level atom and a single-mode electromagnetic cavity field has been studied
123
using QuTiP. We investigate the collapse-revival, the antibunching, the normal squeezing, and the linear entropy using the Python code when the input field is in a coherent state and squeezing state.
References 1. Johansson, J.R., et al.: QuTiP 2: a Python framework for the dynamics of open quantum systems. Comp. Phys. Commun. 183, 1760 (2012) 2. Abdel-Wahab, N.H., Salah, A.: Dynamic evolution of double fivelevel atom interacting with one-mode electromagnetic cavity field. Pramana J Phys 89, 87 (2017)