Matlab ODE 数值量子问题中的纳秒与皮秒

计算科学 matlab 非线性方程 量子力学
2021-12-01 00:38:57

您好,感谢您查看此问题。

这个问题与我之前的问题有关,因此我将使用类似的介绍,Choice of step size using ODEs in matlab

简介: 我目前正在研究二维激子旋量玻色-爱因斯坦凝聚体,并对这个系统的基态感到好奇。到达基态的数学方法称为虚时间法。

方法很简单。量子力学中的正常实时被虚数替换 这种替换导致系统中的高能粒子比低能粒子衰减得更快。在计算的每一步重新归一化粒子数量,我们最终得到了一个能量最低的粒子系统,也就是。基态。

t=iτ

所讨论的方程是非线性的,称为非线性薛定谔方程,有时也称为 Gross-Pitaevskii 方程。为了解决这个问题,我使用了 Matlabs ode45,它使系统及时向前发展并最终达到基态。

问题和问题: 这里有很多控制物理的参数。使用诸如微米、皮秒、毫电子伏等舒适维度的常数和变量是非常合适的。

然而,使用皮秒和毫电子伏似乎产生与使用纳秒和微电子伏截然不同的结果。

(ns,μeV)? ?(ps,meV)

我的问题是:如果所有参数都设置为使这两个表示正确对应,即实际上是同一件事,为什么结果会完全不同……

...在 ps 和 meV 的表示中

[~,y_out] = ode113(odefun,[0:100:10000],y_in, ...variables_in_ps_and_meV)...)

否则在 ns 和 ueV 的表示中?

[~,y_out] = ode113(odefun,[0:0.1:10],y_in, ...variables_in_ns_and_ueV...)

如您所见,时间步长 100ps 对应于 0.1ns。

注意: 在使用纳秒的情况下,即时间步长 0.1,ODE 的计算速度要快得多。这让我倾向于相信使用纳秒的方法有点匆忙且不准确。

感谢您的任何想法!

更新1: 这是两张显示完全不同结果的图片

更新 2: 我刚刚发现使用 eV 或 meV 都没有关系。显示相同的结果!这将问题缩小到仅选择适合 ode 的时间维度。μ

更新 3: 重大突破。我决定在谐波势中写一个简单的一维薛定谔方程,并尝试了纳秒与皮秒。结果可以在这里找到。

如您所见,使用纳秒或皮秒没有区别(这并不奇怪)。但现在只需要弄清楚到底是什么导致了我的二维非线性薛定谔方程中的这种奇怪行为。

2个回答

你应该用量纲分析重写方程无量纲适当的步长应该很明显,并且可以更容易地进行比较。

繁荣解决!

抱歉,我很高兴能找到一个让我在过去五天里质疑现实的人。

在 odefun 里面有一条线是我的一个朋友建议的,他在这些事情上很有经验(他在印度做恶作剧,否则我会马上联系他)。

这条线将一部分粒子恢复到系统中,这在虚时间方法中非常重要。否则,粒子会全部衰减,留下一个空系统。这条线是我之前关于时间步长大小和归一化选择问题的解决方案。

function y_out = odefun(t,y_in,...variables...) 

    ...
    [ Nonlinear equations evaluated ]  
    ...


    y_out = y_out + 0.1*y_in*(N0-Ntemp) ;
end

我知道在最后一行中选择 0.1 从来都不是完全任意的,但我不知道它与 ODE 中使用的时间步长类型有如此明确的联系。纳秒的结果表明大部分粒子似乎已经衰变了,所以我将 0.1 更改为 100,因为这是皮秒和纳秒之间的数量级,瞧!结果与我使用皮秒的情况完全相同。

感谢所有考虑过这个问题的人。我很高兴它解决了!