xt
您要做的是光束传播方法的伪装版本,用于通过横截面不同(类似于时变电势)的波导进行光传播,因此对它进行查找也将很有帮助。
我查看SSFM / BPM的方式如下。它的基础是李理论的Trotter产品公式:
limm→∞(exp(Dtm)exp(Vtm))m=exp((D+V)t)(1)
x−yx−y−zψ(x,y,z)tNΨ1024×1024N=10242=1048576
dtΨ=KΨ=(D+V(t))Ψ(2)
K=D+VN×Nu(N)Ψexp(Kt)iℏK=D+VNU(N)D+Viℏ∇2/(2m)−iℏ−1V0+iℏ−1(V0−V(x,y,z,t0))V0
我们让:
DV==iℏ2m∇2−iℏ−1V0iℏ−1(V0−V(x,y,z,t))(3)
我为什么将它们分成这样,将在下面阐明。
DΨ↦exp(ΔtD)Ψ
- ΨΨ~x,y,zkx,ky,kz
- Ψ~↦exp(ΔtD)Ψ~exp(iΔt(V0−k2x+k2y+k2z)/ℏ)
exp(ΔtD)Ψ
VV
Ψ↦exp(ΔtV)Ψexp(iΔt(V0−V(x,y,z,t))/ℏ)
ΔtV(x,y,z,t)
Δtexp(D+VΔt)≈exp(DΔt)exp(VΔt)VD
请注意,即使在离散的世界中,您也只会赋予一元运算符:FFT和纯相位因子。
ΔtΔxΔx/Δtc
这种事情的第二个“经验”点-我几乎愿意打赌,这就是您如何遵循自己的想法。我们经常有想要进行简单,快速和肮脏的仿真的想法,但这种方法永远无法实现!我从上面介绍的SSFM开始,因为它非常容易运行,您将很快看到其结果是否是物理的。稍后,您可以使用Mathematica SSFM代码检查可能最终构建的更复杂代码的结果,例如,按照Kyle Kanos的答案创建Crank Nicolson代码。
错误界限
Baker-Campbell-Hausdorff定理的Dynkin公式实现:
exp(DΔt)exp(V)Δt)=exp((D+V)Δt+12[D,V]Δt2+⋯)
Δt>0
exp(DΔt)exp(V)Δt)exp(−12[D,V]Δt2)=exp((D+V)Δt+O(Δt3))
exp(V)Δt)exp(−12[D,V]Δt2)Δt
Δt22[D,V]=−iΔt22m(∂2xV(x,t)+2∂xV(x,t)∂x)
是一个简单的乘法运算符。所以你必须对 exp感到满意[D,V],并使用此来估算误差,通过加工出(我ð - (exp(−12[D,V]Δt2)≈e−iφΔt2(id−(12[D,V]−iφ(t))Δt2)(id−(12[D,V]−iφ(t))Δt2)ψψ(x,t)Δtφ(12[D,V]−iφ(t))Δt2exp(∫φdt)。
有关SSFM / BPM中的错误的相关文章是:
拉斯·泰伦(LarsThylén)。“光束传播方法:其适用性分析”,《光学与量子电子学》 15(1983)pp433-439。
拉尔斯·泰伦(LarsThylén)用非李理论上的术语来思考错误(李群是我的直觉,所以我想寻找它们的解释),但他的想法与上述观点基本相同。