在 python 中通过绝热通道模拟简单的激光诱导种群转移

计算科学 量子力学 计算物理学
2021-12-05 15:31:35

我正在尝试使用 Scipy 和 Numpy 模拟与两个激光场相互作用的三能级原子中两个能级之间的绝热通道。三能级原子.

我不确定我的模型是否是错误的,因为我在 python 中错误地制定了方程式或 Scipy ODE 求解器出现错误。

为了获得我使用的三种状态中的每一种的系数

iddt(c1c2c3)=(0Ω1(t)0Ω1(t)0Ω2(t)0Ω2(t)0)(c1c2c3)

其中给出了由两个激光束产生的电场幅度的(慢)时间依赖性。初始条件为Ω1,2(t)c1()=1,c2()=c3()=0

的高斯形式Ω1,2(t)

Ω1(t)=exp((tτ)2/T2)

Ω2(t)=exp((t+τ)2/T2)

其中的正值意味着场 2 在场 1 之前打开设置脉冲的持续时间。ττT

import numpy as np
import scipy as sp
from scipy.integrate import odeint
import matplotlib.pyplot as plt
from math import exp
from collections import defaultdict
import pylab as p

tau = 2
T = 1

def omega1(t,tau=tau,T=T):
    return exp(-(t - tau)**2/T**2)

def omega2(t,tau=tau,T=T):
    return exp(-(t + tau)**2/T**2)

def g(y, t,tau=tau,T=T):
    c1_i = y[0]
    c2_i = y[1]
    c3_i = y[2]

    g1 = omega1(t, tau, T)*c2_i
    g2 = omega1(t, tau, T)*c1_i + omega2(t)*c3_i
    g3 = omega2(t, tau, T)*c2_i
    return [g1, g2, g3]

# initial conditions
c1_0 = 1
c2_0 = 0
c3_0 = 0

y0 = [c1_0, c2_0, c3_0]

step_size = 1000
t_max = 10.
t_min = 0.
delta_t = (t_max - t_min)/step_size

t = np.linspace(t_max, t_min, step_size) # time grid
soln = odeint(g, y0, t)
c1 = soln[:, 0]
c2 = soln[:, 1]
c3 = soln[:, 2] 

# plot results
plt.figure()
plt.plot(t, np.abs(c1), label='c1')
plt.plot(t, np.abs(c2), label='c2')
plt.plot(t, np.abs(c3), label='c3')

plt.xlabel('time')
plt.ylabel('energy level population')
plt.title('initial attempt')
plt.legend(loc=0)

初步结果

结果似乎是错误的,因为它显示的系数值大于 1。此外,我似乎无法找到产生非零最终值。τTc3

可能造成影响的一个问题是,目前我的答案不包括乘以我不确定如何将它包含在我的 python 方程中。i

谢谢您的帮助!

0个回答
没有发现任何回复~