计算化学公社

 找回密码 Forget password
 注册 Register
楼主 Author: JohnCase
打印 Print 上一主题 Last thread 下一主题 Next thread

[量化理论] Davidson 算法的preconditioner是如何推导出来的?

[复制链接 Copy URL]

928

帖子

1

威望

8262

eV
积分
9210

Level 6 (一方通行)

16#
发表于 Post on 2025-7-31 16:25:45 | 只看该作者 Only view this author
SHENLIN 发表于 2025-7-31 16:11
好的,谢谢。一定要设定max space吗?直接用最大迭代圈数控制可以吗?

我不清楚你的程序有没有trial vector的space,也就是个数的概念,如果没有的话,大概是求n个根就只有n个trial vector?那效率应该是比较低的。
如果有space的概念,每一步会扩大space,但是没有max space(超过了就重来),也可能会有收敛问题,但也不一定。

47

帖子

2

威望

885

eV
积分
972

Level 4 (黑子)

17#
 楼主 Author| 发表于 Post on 2025-8-7 18:19:19 | 只看该作者 Only view this author
SHENLIN 发表于 2025-7-31 16:11
好的,谢谢。一定要设定max space吗?直接用最大迭代圈数控制可以吗?

讲道理不需要设定max space。或者说设定max space不能大于A矩阵大小

47

帖子

2

威望

885

eV
积分
972

Level 4 (黑子)

18#
 楼主 Author| 发表于 Post on 2025-8-7 18:29:19 | 只看该作者 Only view this author
SHENLIN 发表于 2025-7-31 13:48
do j = 1, lowest
            do i=1,nocc
                do a=1,nvir

diag(i)是什么,i是nocc*vir这个维度吗

9

帖子

0

威望

97

eV
积分
106

Level 2 能力者

19#
发表于 Post on 2025-9-2 10:36:42 | 只看该作者 Only view this author
本帖最后由 SHENLIN 于 2025-9-2 10:56 编辑
JohnCase 发表于 2025-8-7 18:29
diag(i)是什么,i是nocc*vir这个维度吗

是这个维度,就是对角线元素。我还是没搞明白  之前preconditiner是这样写得
我看MRCC程序,把分母改成下面的这样

就没有问题了。我觉得是等价的啊

9

帖子

0

威望

97

eV
积分
106

Level 2 能力者

20#
发表于 Post on 2025-9-2 10:50:57 | 只看该作者 Only view this author
本帖最后由 SHENLIN 于 2025-9-2 10:57 编辑
wzkchem5 发表于 2025-7-7 10:38
感觉大体还是有收敛趋势的,可能preconditioner实现得有问题?可以对角化一个对角矩阵,看是不是一步收敛 ...

再次感谢老师,不然这个bug不知道要找到什么时候。请问还有什么加速收敛的策略吗?我看每一圈计算norm的时候,前面小的特征值收敛比较快,后面大的收敛圈数要多得多,请问这里有什么改进的方法吗?另外我用高斯迭代的圈数好像要少很多,它是用了什么策略吗?

1万

帖子

0

威望

9855

eV
积分
22090

Level 6 (一方通行)

21#
发表于 Post on 2025-9-2 10:58:26 | 只看该作者 Only view this author
SHENLIN 发表于 2025-9-2 10:50
再次感谢老师,不然这个bug不知道要找到什么时候?请问还有什么加速收敛的策略吗?我看每一圈计算norm的 ...

大的特征值收敛慢是正常的,比如你算10个特征值,第10个特征值和第11个特征值的距离一般很接近,导致需要迭代很多轮才能把第10个特征值和第11个特征值之间的矩阵非对角元消干净。
迭代次数少一般是因为第一步求解比较多的特征值,收敛后再把高能量的解扔掉。比如第一步求解20个根,但从第二步开始只计算前10个根的residual vector,后10个根仍然放在Krylov子空间里,但不产生新的vector,也就是Krylov子空间按照20->30->40...的规律增加
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?user=XW6C6eQAAAAJ
ORCID: https://orcid.org/0000-0002-4540-8734
主页:http://www.qitcs.qd.sdu.edu.cn/info/1133/1776.htm
GitHub:https://github.com/wzkchem5
本团队长期招收研究生,有意者可私信联系

47

帖子

2

威望

885

eV
积分
972

Level 4 (黑子)

22#
 楼主 Author| 发表于 Post on 2025-9-3 12:37:01 | 只看该作者 Only view this author
本帖最后由 JohnCase 于 2025-9-3 14:23 编辑
SHENLIN 发表于 2025-9-2 10:50
再次感谢老师,不然这个bug不知道要找到什么时候。请问还有什么加速收敛的策略吗?我看每一圈计算norm的 ...

初猜数量是多少?算10个态的话,最好是设置前18个态作为初猜。

lowest等于size(residues, 2)吗

9

帖子

0

威望

97

eV
积分
106

Level 2 能力者

23#
发表于 Post on 2025-9-3 16:54:34 | 只看该作者 Only view this author
本帖最后由 SHENLIN 于 2025-9-3 17:03 编辑
JohnCase 发表于 2025-9-3 12:37
初猜数量是多少?算10个态的话,最好是设置前18个态作为初猜。

lowest等于size(residues, 2)吗

是等于这个,就是要算的态的个数。为啥最好取这个,我看高斯前两圈取的都是nstate*3

47

帖子

2

威望

885

eV
积分
972

Level 4 (黑子)

24#
 楼主 Author| 发表于 Post on 2025-9-3 18:18:06 | 只看该作者 Only view this author
SHENLIN 发表于 2025-9-3 16:54
是等于这个,就是要算的态的个数。为啥最好取这个,我看高斯前两圈取的都是nstate*3

感觉这是两段代码最不一样的地方

本版积分规则 Credits rule

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

GMT+8, 2026-2-19 03:35 , Processed in 0.169529 second(s), 22 queries , Gzip On.

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