计算化学公社

标题: float和double在量化计算时精度有多大差异? [打印本页]

作者
Author:
chinder    时间: 2022-7-24 20:03
标题: float和double在量化计算时精度有多大差异?
如题,有没有大佬做过横向对比测试。
个人感觉迭代次数越多差异越大,那么一般来说跑100轮和200轮的差异有多大呢?


作者
Author:
wzkchem5    时间: 2022-7-24 22:16
orca早期允许(甚至鼓励)用户在MP2的时候用float,不过现在也不鼓励了,甚至可能都不支持了。原因就是个别情况下引入的误差还是不可忽略。
至于SCF,我觉得理论上讲只有基组比较小的时候可以用float,因为基组比较完备的时候,重叠矩阵会有ill-conditioned的问题,会放大误差,基本上重叠矩阵最小的本征值是x的话,误差会被放大至少1/x倍。一般用triple zeta基组,x很容易就到1e-5甚至1e-6了,而float的精度在1e-7~1e-8左右,这个误差一被放大,结果就不能要了。
作者
Author:
sobereva    时间: 2022-7-25 01:47
单精度用于量化计算专门有一些文章讨论,看比如J. Chem. Theory Comput. 2018, 14, 8, 4088–4096,J. Chem. Theory Comput. 2011, 7, 2, 320–326

我个人意见是,对于纯SCF型的计算,除非用于比如跑AIMD这样需要做大量次数,而每一步也用不着数值精度很高的任务,否则为了准确性和稳健性考虑,还是别打单精度的主意,免得得不偿失。





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