计算化学公社

标题: 数值求解薛定谔方程有哪些不用基组展开的方法?为何它们不流行? [打印本页]

作者
Author:
北大-陶豫    时间: 2022-4-27 17:57
标题: 数值求解薛定谔方程有哪些不用基组展开的方法?为何它们不流行?
最近看到了一些不用基组数值求解薛定谔方程的方法,如Numerov法(参考:Numerov法解一维定态问题 - Triborg的文章 - 知乎 https://zhuanlan.zhihu.com/p/78619365)。想请教一下,除了Numerov法还有哪些方法可以用来数值求解薛定谔方程呢?它们比起基组方法的主要缺点是什么(个人理解,Numerov法仅仅适用于1维体系,不知道理解得是否正确)?谢谢!

作者
Author:
chands    时间: 2022-4-27 19:26
不知道Numerov方法能不能解势能项很复杂Schroedinger方程?你给出的例子似乎都没涉及球形势(V正比于1/r)。一般的热传导方程,如各种输送方程,Navier-Stokes方程都没见过用基组解的。个人理解,Schroedinger方程之所以与一般的热传导方程不同,是因为(1)势能项很复杂,(2)解是复数?求方家指教。
作者
Author:
wzkchem5    时间: 2022-4-27 19:50
chands 发表于 2022-4-27 12:26
不知道Numerov方法能不能解势能项很复杂Schroedinger方程?你给出的例子似乎都没涉及球形势(V正比于1/r)。 ...

可能有一个因素在于热传导方程、Navier-Stokes方程等等经常涉及y=0的边界条件?比如飞机发动机里气体的流动,气体密度在发动机腔壁和叶片里为0,如果不为0的话体系能量就是无穷大。但是不可能为各种发动机以及叶片的形状都设计一套特制的基组,所以只能是用数值方法。热传导也是,如果要算一个奇形怪状的物体(比如计算机主板)的散热,温度在物体表面是不可导的,所以也涉及到需要针对物体设计基组的问题
作者
Author:
卡开发发    时间: 2022-4-27 21:19
Numerov的方法不大好处理一维以上的问题,这个和Tayor展开之后出现复杂的交叉项有关,4#这是我以前写的一个文档。无基组或者说数值解法可以使用一般的有限差分(比如Octupus\GPAW),除了这些也可以使用Becke他们提出的Fuzzy Cell的方法,也就是将方程改写成Poisson方程的形式,再空间利用Becke划分成小的球形区域,然后使用多极展开,每个区域将会被分解成L个角动量依赖的一维方程(此时一些用于一维的方法就可以使用了),然后再用有限差分求解径向方程,另外需要边值条件,如r在0点和+∞点的行为。

数值解法的问题是,比较难逼近核的cusp,类似于有限元和平面波。虽然可以使用对数格点,但是会破坏解的Fock矩阵的Hermite对称性,数值上不大好处理。另外类似于有限元和平面波的问题就是构造出来的Fock矩阵尺寸很大,对角化就必须使用子空间迭代的方法。但优势是,对于复杂的势场,逼近速度未必会比LCAO慢,而且数值精度上能比较容易系统性达到收敛,另外一些简单的无基组格式可能运算不复杂,更容易并行化以及更适合GPU进行处理。
作者
Author:
北大-陶豫    时间: 2022-4-27 21:29
chands 发表于 2022-4-27 19:26
不知道Numerov方法能不能解势能项很复杂Schroedinger方程?你给出的例子似乎都没涉及球形势(V正比于1/r)。 ...

其实是可以涉及球形势的,https://zhuanlan.zhihu.com/p/464405384
作者
Author:
北大-陶豫    时间: 2022-4-27 21:33
卡开发发 发表于 2022-4-27 21:19
Numerov的方法不大好处理一维以上的问题,这个和Tayor展开之后出现复杂的交叉项有关,4#这是我以前写的一个 ...

可以推荐一些相关的参考文献吗?谢谢!
作者
Author:
卡开发发    时间: 2022-4-27 21:43
本帖最后由 卡开发发 于 2022-4-27 21:45 编辑
北大-陶豫 发表于 2022-4-27 21:33
可以推荐一些相关的参考文献吗?谢谢!

Numerov我应该是Google随便找了一点资料,上面的文档是我自己总结出来的。Becke他们基于fuzzy cells的方法可以参考doi: 10.1063/1.457869,其实他们文献当中提到动量空间的无基组方法有J Monkhorst他们提出来的也在这篇参考文献中提到。有限差分可以参考GPAW的文献(网页上的资料更多),就是用xi+1,xi-1和xi(i=1,2,3)周围七个点的stencil差分,但是在求解本征方程上面有些技巧,例如一些precondition和multigrid的技巧。
作者
Author:
chands    时间: 2022-4-27 22:15
卡开发发 发表于 2022-4-27 21:19
Numerov的方法不大好处理一维以上的问题,这个和Tayor展开之后出现复杂的交叉项有关,4#这是我以前写的一个 ...

我口多问一句,如果有几个核,当然势能有头疼死的交叉项,数值解法好处理吗?
作者
Author:
卡开发发    时间: 2022-4-27 22:18
本帖最后由 卡开发发 于 2022-4-27 22:20 编辑
chands 发表于 2022-4-27 22:15
我口多问一句,如果有几个核,当然势能有头疼死的交叉项,数值解法好处理吗?

直接有限差分肯定可以做,也比较简单。基于径向的方程可以处理,但说不上是好处理,上面的fuzzy cells就是解决这个问题的。
作者
Author:
chands    时间: 2022-4-27 22:49
谢谢陶豫开贴,谢谢各位的回答。
作者
Author:
卡开发发    时间: 2022-4-28 07:32
chands 发表于 2022-4-27 19:26
不知道Numerov方法能不能解势能项很复杂Schroedinger方程?你给出的例子似乎都没涉及球形势(V正比于1/r)。 ...

另外,NS我虽然没去解过(主要不是我常规关注的问题),但一般的有限元基函数就是分段多项式,剩下的问题就是一样的Rayleigh-Ritz变分,积分可能是通过划分网格实现,基函数同时也就是插值函数,方便数值积分。量子化学上要找现成案例的话,OpenMX里面产生赝势基组的程序所采用的就是这样的方案,使用Lagrange多项式有限元求解固体KS方程的我前几年见到过,其他还有用B样条作为径向函数逼近的,这些文献我没存下来,但估计现找不难。
作者
Author:
chands    时间: 2022-4-28 08:54
卡开发发 发表于 2022-4-28 07:32
另外,NS我虽然没去解过(主要不是我常规关注的问题),但一般的有限元基函数就是分段多项式,剩下的问题 ...

谢谢!这一块了解得少,正在瞄Becke的文章,学习一下。
作者
Author:
Freeman    时间: 2022-4-28 12:23
话说有人尝试过用numerov算二维无限深阱吗?我曾经参照levine《量子化学》里介绍的算一维的,写了个二维的程序,结果无论怎么调参数,都只能给出nx=ny=1的波函数(就是从x方向和y方向看都是个sin函数),最后不了了之了,至今不知何故。
另外,我好像听说numerov和有限差分有同样的毛病:格点如果取得太密,结果反而会出错。我尝试过,确实如此,即使是最简单的一维无限深阱。
作者
Author:
卡开发发    时间: 2022-4-28 13:23
Freeman 发表于 2022-4-28 12:23
话说有人尝试过用numerov算二维无限深阱吗?我曾经参照levine《量子化学》里介绍的算一维的,写了个二维的 ...

高维情况Numerov不是不能做,就是很繁琐,顺手找了下别人的工作。一般差分间距在分母上,过小的间距容易导致数值上的不稳定,解具备大梯度且非光滑的情况都比较棘手一些。




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3