4
def probevolve(E,kappa,gamma,g,wc,w0,wl,N,tlist):
9
# Define cavity field and atomic operators
10
a = tensor(destroy(N),idatom)
11
sm = tensor(ida,sigmam())
14
H = (w0-wl)*sm.dag()*sm + (wc-wl)*a.dag()*a + 1j*g*(a.dag()*sm - sm.dag()*a) + E*(a.dag()+a)
23
psi0 = tensor(basis(N,0),basis(2,1))
24
rho0 = psi0 * trans(psi0);
26
# Calculate the Liouvillian
29
L = -1j * (spre(H) - spost(H))
30
for m in range(0, n_op):
31
cdc = c_op_list[m].dag() * c_op_list[m]
32
L += spre(c_op_list[m])*spost(c_op_list[m].dag())-0.5*spre(cdc)-0.5*spost(cdc)
35
# Calculate solution as an exponential series
36
start_time=time.time()
37
rhoES = ode2es(L,rho0);
38
print 'time elapsed (ode2es) = ' +str(time.time()-start_time)
40
# Calculate expectation values
41
start_time=time.time()
42
count1 = esval(scalar_expect(C1dC1,rhoES),tlist);
43
count2 = esval(scalar_expect(C2dC2,rhoES),tlist);
44
infield = esval(scalar_expect(a,rhoES),tlist);
45
print 'time elapsed (esval) = ' +str(time.time()-start_time)
47
return count1, count2, infield
50
#-----------------------------------------------------------------------------
52
#--------------------------------------------------------------------------
62
tlist = linspace(0,10,200);
64
start_time=time.time()
65
[count1,count2,infield] = probevolve(E,kappa,gamma,g,wc,w0,wl,N,tlist);
66
print 'time elapsed = ' +str(time.time()-start_time)
68
plot(tlist,real(count1))
69
plot(tlist,real(count2))
71
ylabel('Transmitted Intensity and Spontaneous Emission')