Hi,
Problem setup: I am trying to simulate the effect of dynamical decoupling pulses (specifically, CPMG ) on the entanglement of Bell state (|00>+|11>)/sqrt(2). My aim is to see how effectively the CPMG scheme (essentially, series of equispaced pi-pulses) preserves the entanglement of the Bell state exposed to dephasing noise. I consider simple model of photonic qubits under two-mode free-hamiltonian and dephasing noise and then plot concurrence (measure of entanglement) of the system. I compare 3 cases: (i) Ideal case i.e no dephasing, no pulses (ii) bell state affected by dephasing noise (iii) bell state + dephasing noise + CPMG pi-pulses. Please see attached image of resulting plots of concurrence & fidelity for these 3 cases.
Question:
(1) I do see 'kind' of advantage of CPMG pulses in the sense that entanglement dissipation is slowed down but I am not sure how to interpret the oscillation of concurrence aka entanglement. I was expecting a smooth dissipation curve for pulsed case because how can the amount of entanglement revive to C=~0.8 after it has dropped to C=~0.2? Also, this advantage is very fickle and sensitive to values of code parameters like omega, pulse_strength, t_span etc.
(2) Also, Is there any other efficient way to simulate this problem?
My code:
psi0 = bell_state(state='00').unit()
a1 = tensor(destroy(2), qeye(2)) # mode annihilation operators for both modes
a2 = tensor(qeye(2), destroy(2))
hbar = 1
omega = 4.0 #(arbitrary)
Tmax = 4 #Total duration of simulation
Nmax = 800 # Number of time steps
#============= Pulse setup ==============
pulse_strength = 3.0 #(arbitrary)
delta = 0.05 # pulse bandwidth
t_span = np.linspace(0.0, Tmax, Nmax)
def Gaussian(t, t0):
return 1.0*np.exp(-(t - t0)**2.0/(delta ** 2.0))
tau = 0.0 #time of the first pulse
inc = 0.15
pulse1 = np.zeros(Nmax,int)
pulse1 = Gaussian(t_span, tau)
pulse2 = np.zeros(Nmax,int)
pulse2 = Gaussian(t_span, tau+inc)
pulse3 = np.zeros(Nmax,int)
pulse3 = Gaussian(t_span, tau+2*inc)
pulse4 = np.zeros(Nmax,int)
pulse4 = Gaussian(t_span, tau+3*inc)
pulse5 = np.zeros(Nmax,int)
pulse5 = Gaussian(t_span, tau+4*inc)
pulse6 = np.zeros(Nmax,int)
pulse6 = Gaussian(t_span, tau+5*inc)
pulse7 = np.zeros(Nmax,int)
pulse7 = Gaussian(t_span, tau+6*inc)
pulse8 = np.zeros(Nmax,int)
pulse8 = Gaussian(t_span, tau+7*inc)
pulse9 = np.zeros(Nmax,int)
pulse9 = Gaussian(t_span, tau+8*inc)
pulse10 = np.zeros(Nmax,int)
pulse10 = Gaussian(t_span, tau+9*inc)
#======== ========= mesolve parameters ========================
H0 = hbar * omega * (a1.dag() * a1 + a2.dag() * a2) # Two-mode free Hamiltonian
H1 = tensor(pulse_strength*sigmax(), pulse_strength*sigmax()) #Pi-pulse (about X-axis)
H = [H0,[H1, pulse1],[H1, pulse2],[H1, pulse3],[H1, pulse4],[H1, pulse5],[H1, pulse6],
[H1, pulse7],[H1, pulse8],[H1, pulse9],[H1, pulse10]] # time-dependent total H
kappa = 0.5 #dephasing rate (arbitrary)
x1_x2 = tensor(sigmax(),sigmax()) # combined X operator for both qubits
z1_z2 = tensor(sigmaz(),sigmaz()) # combined Z operator for both qubits
deph1 = tensor(sigmaz(), qeye(2)) # Dephasing for 1st qubit
deph2 = tensor(qeye(2), sigmaz()) # Dephasing for 2nd qubit
c_ops = [kappa * deph1, kappa* deph2]
e_ops = [x1_x2, a1.dag() * a1, z1_z2]
opts = qutip.Odeoptions(store_states=True)
result0 = mesolve(H0, psi0, t_span, [], e_ops, options=opts) #no deph., no pulses
result1 = mesolve(H0, psi0, t_span, c_ops, e_ops, options=opts) #deph., no pulses
result2 = mesolve(H, psi0, t_span, c_ops, e_ops, options=opts) #deph., 10 pulses

Thanks & regards,
Pratik