Author: Neill Lambert (nwlambert@gmail.com) Anubhav Vardhan (anubhavvardhan@gmail.com)
For more information about QuTiP see http://qutip.org
Reference: link.aps.org/doi/10.1103/PhysRevA.90.032114
In this model, we take a quantum system coupled to a bosonic environment and map to a model in which a collective mode of the environment, known as the reaction coordinate (RC), is incorporated within an effective system Hamiltonian. We then treat the residual environment within a full second-order Born-Markov master equation formalism. Thus, all important system-bath, and indeed intrabath, correlations are incorporated into the system-RC Hamiltonian in the regimes we study.
%pylab inline
from qutip import *
Populating the interactive namespace from numpy and matplotlib
from qutip import rcsolve
Del = 1.0 # The number of qubits in the system.
wq = 0.5 # Energy of the 2-level system.
Hsys = 0.5 * wq * sigmaz() + 0.5 * Del * sigmax()
Q = sigmaz()
wc = 0.05 # Cutoff frequency.
alpha = 2.5/pi # Coupling strength.
N = 10 # Number of cavity fock states.
Temperature = 1/0.95 # Tempertaure.
tlist = np.linspace(0, 40, 600)
initial_state = basis(2,1) * basis(2,1).dag() # Initial state of the system.
return_vals = [Q] # List for which to calculate expectation value
options = Options(nsteps=15000, store_states=True) # Options for the solver.
output = rcsolve(Hsys, initial_state, tlist, return_vals, Q, wc, alpha, N,
Temperature, options=options)
fig, axes = subplots(1, 1, sharex=True, figsize=(8,4))
axes.plot(tlist, real(output.expect[0]), 'b', linewidth=2, label="P12")
axes.legend(loc=0)
<matplotlib.legend.Legend at 0x119460cc0>
output.states[0]
t_idx_vec = range(0,len(tlist),200)
fig, axes = subplots(len(t_idx_vec), 1, sharey=True, figsize=(8,2*len(t_idx_vec)))
for idx, t_idx in enumerate(t_idx_vec):
psi_a = ptrace(output.states[t_idx], 0)
cont1 = axes[idx].bar(range(0, N), real(psi_a.diag()))
fig.tight_layout()
xvec = linspace(-5,5,200)
t_idx_vec = range(0,len(tlist),200)
fig, axes = subplots(len(t_idx_vec), 1, sharex=True, sharey=True, figsize=(8,4*len(t_idx_vec)))
for idx, t_idx in enumerate(t_idx_vec):
psi_a = ptrace(output.states[t_idx], 0)
W_a = wigner(psi_a, xvec, xvec)
cont1 = axes[idx].contourf(xvec, xvec, W_a, 100)
from qutip.ipynbtools import version_table
version_table()
Software | Version |
---|---|
QuTiP | 4.3.0.dev0+6e5b1d43 |
Numpy | 1.13.1 |
SciPy | 0.19.1 |
matplotlib | 2.0.2 |
Cython | 0.25.2 |
Number of CPUs | 2 |
BLAS Info | INTEL MKL |
IPython | 6.1.0 |
Python | 3.6.2 |Anaconda custom (x86_64)| (default, Jul 20 2017, 13:14:59) [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] |
OS | posix [darwin] |
Thu Jul 20 22:41:41 2017 MDT |