计算化学公社

 找回密码 Forget password
 注册 Register
Views: 309|回复 Reply: 4
打印 Print 上一主题 Last thread 下一主题 Next thread

[算法与编程] 请问非限制开壳层的DIIS是怎么做的?

[复制链接 Copy URL]

345

帖子

7

威望

3175

eV
积分
3660

Level 5 (御坂)

跳转到指定楼层 Go to specific reply
楼主
大家好。


我知道闭壳层的DIIS是可以按照这个网址(https://www.chem.fsu.edu/~deprince/programming_projects/diis/)介绍的流程实现。可是非限制开壳层的DIIS该怎么做呢?

我的猜测是对两种自旋的Fock矩阵分别独立地插值,也就是说对两种自旋分别独立地做两次上述操作,获取两套插值系数c^alpha和c^beta,然后把F^alpha = Sum_i c^alpha_i F^alpha_i以及F^beta = Sum_i c^beta_i F^beta_i带到下一步计算。

可是我观察高斯做UHF的输出文件(加关键词#p scf(cdiis,nodamp)),发现每一轮SCF只打印一套插值系数。这是为什么呢?

1万

帖子

0

威望

9002

eV
积分
20758

Level 6 (一方通行)

2#
发表于 Post on 2025-3-20 08:52:51 | 只看该作者 Only view this author
要对alpha和beta分别计算DIIS error vector(也就是算一个alpha的FDS-SDF,一个beta的FDS-SDF),然后把两者拼成一个矢量,拿这个矢量做DIIS。
原因是当且仅当alpha和beta都满足FDS-SDF=0,才算收敛,而且alpha和beta轨道是互相耦合的。前者决定了不能把alpha和beta的误差矢量简单加起来,后者决定了不能分别求解alpha和beta的DIIS问题。
Zikuan Wang
山东大学光学高等研究中心 研究员
BDF(https://bdf-manual.readthedocs.io/zh_CN/latest/Introduction.html)、ORCA(https://orcaforum.kofo.mpg.de/index.php)开发团队成员
Google Scholar: https://scholar.google.com/citations?hl=zh-CN&user=XW6C6eQAAAAJ&view_op=list_works&sortby=pubdate
ORCID: https://orcid.org/0000-0002-4540-8734
主页:http://www.qitcs.qd.sdu.edu.cn/info/1034/1702.htm
本团队长期招收研究生,有意者可私信联系

345

帖子

7

威望

3175

eV
积分
3660

Level 5 (御坂)

3#
 楼主 Author| 发表于 Post on 2025-3-20 14:07:03 | 只看该作者 Only view this author
wzkchem5 发表于 2025-3-20 08:52
要对alpha和beta分别计算DIIS error vector(也就是算一个alpha的FDS-SDF,一个beta的FDS-SDF),然后把两 ...

谢谢解答。现在我用了您说的方式,对自旋多重度19的[Fe4S4]2+的收敛圈数可以和高斯相近了。看来高斯就是这么做的。

我会问这个问题,是因为我自认为想到了个比现有的DIIS更好的插值方式。思路如下:

DIIS的优化对象是Fock矩阵,但作为error vector的SDF - FDS其实是能量对(locally-parametrized的)密度矩阵的导数。虽然SCF将要成功时,Fock矩阵和密度矩阵会一起收敛,但是在收敛之前,能量对密度矩阵的导数可能不是更新Fock矩阵的最好的依据。毕竟密度矩阵的本征值是01,而Fock的本征值几乎没有什么限制,两者的scale都不一样。我就想, DIIS算出来的插值向量c应该其实是专门给密度矩阵插值用的,而不是给Fock矩阵插值用的。

如果是自旋限制闭壳层,因为F(D) = H + 2 J(D) - K(D)是对密度矩阵的线性函数(对于HF来说),所以给密度矩阵插值就相当于给Fock矩阵插值了,一切OK。对于DFT来说,K不是线性函数了,所以理论上DIIS在DFT上的性能要比在HF上的差些。这也符合我们做计算的经验。

然而,如果是自旋非限制,F^a(D^a, D^b) = H  + J(D^a) + J(D^b) - K(D^a),不再是对单个密度矩阵的线性函数了。所以我想,也许应该分别搞出两套(给密度矩阵用的)插值向量c^a和c^b,然后用这个关系式给Fock插值F^a = H + Sum_i c^a_i J^a_i + Sum_i c^b_i J^b_i - Sum_i c^a_i K^a_i(对F^b同理)。对F^a插值同时用到了两个插值向量,因为F^a的库伦矩阵也有b电子的贡献。

我以为这是个大发现呢,准备半场开香槟了。结果测试发现只对简单小分子奏效,在[Fe4S4]2+上要比您说的方式多跑一百来圈。直接给我干破防了。

您对这个思路有啥评价吗?如果您觉得这理论上就不行,不是小修小补能优化的,那我就不做了。

1万

帖子

0

威望

9002

eV
积分
20758

Level 6 (一方通行)

4#
发表于 Post on 2025-3-20 19:34:59 | 只看该作者 Only view this author
Freeman 发表于 2025-3-20 14:07
谢谢解答。现在我用了您说的方式,对自旋多重度19的[Fe4S4]2+的收敛圈数可以和高斯相近了。看来高斯就是 ...

可以这样想,如果这样能奏效的话,那你也可以把一个二聚体分子A-B的密度矩阵分成3部分:D_{AA}, D_{AB}, D_{BB},然后把F写作F(D_{AA},D_{AB},D_{BB}) = blablabla,最后结论是对D_{AA}、D_{AB}、D_{BB}三块分别求解DIIS问题,然后在给F插值的时候同时用到所有插值系数。
这么递归下来,最后可以得出结论:你对每个密度矩阵元都求一个单独DIIS问题也可以。但这个显然是不能work的。
原因还是在于DIIS的基本原理。按照我说的做法,你解DIIS方程解的是“求一套{D^a, D^b},使得它能最小化alpha Fock和beta Fock的误差之和”。而你的做法是“求一个D^a,使得它能最小化alpha Fock的误差;求一个D^b,使得它能最小化beta Fock的误差”。后者情况下不管优化D^a还是优化D^b,都不是优化的你真正关心的cost function(alpha Fock和beta Fock的误差之和),而是cost function的一部分。D^a的某些变化方向会把alpha Fock的误差多降一些,但代价是beta Fock的误差大幅升高;D^b同理。因为D^a看不见beta Fock的误差,D^b看不见alpha Fock的误差,所以总的来说优化密度矩阵的方向往往不是最优的。
至于Fock和密度矩阵不是线性关系的问题,其实在靠近收敛的时候这个问题并不显著,因为只要密度矩阵变化范围足够小,总可以做线性近似。
Zikuan Wang
山东大学光学高等研究中心 研究员
BDF(https://bdf-manual.readthedocs.io/zh_CN/latest/Introduction.html)、ORCA(https://orcaforum.kofo.mpg.de/index.php)开发团队成员
Google Scholar: https://scholar.google.com/citations?hl=zh-CN&user=XW6C6eQAAAAJ&view_op=list_works&sortby=pubdate
ORCID: https://orcid.org/0000-0002-4540-8734
主页:http://www.qitcs.qd.sdu.edu.cn/info/1034/1702.htm
本团队长期招收研究生,有意者可私信联系

1万

帖子

0

威望

9002

eV
积分
20758

Level 6 (一方通行)

5#
发表于 Post on 2025-3-20 19:38:19 | 只看该作者 Only view this author
Freeman 发表于 2025-3-20 14:07
谢谢解答。现在我用了您说的方式,对自旋多重度19的[Fe4S4]2+的收敛圈数可以和高斯相近了。看来高斯就是 ...

我是感觉,那些只用到SCF问题的很general的性质(例如smoothness)的收敛算法,可能差不多已经走到头了。要想有突破,得利用双电子积分的一些特有的性质,例如BDF的SMH方法(https://doi.org/10.1021/acs.jctc.4c00893)就是这样的。再进一步的话,可以考虑借鉴 @JohnCase 的ris系列方法
Zikuan Wang
山东大学光学高等研究中心 研究员
BDF(https://bdf-manual.readthedocs.io/zh_CN/latest/Introduction.html)、ORCA(https://orcaforum.kofo.mpg.de/index.php)开发团队成员
Google Scholar: https://scholar.google.com/citations?hl=zh-CN&user=XW6C6eQAAAAJ&view_op=list_works&sortby=pubdate
ORCID: https://orcid.org/0000-0002-4540-8734
主页:http://www.qitcs.qd.sdu.edu.cn/info/1034/1702.htm
本团队长期招收研究生,有意者可私信联系

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2025-8-17 03:52 , Processed in 0.147880 second(s), 21 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list