计算化学公社

 找回密码 Forget password
 注册 Register

Dieict SCF的简单实现

查看数: 4138 | 评论数: 4 | 收藏 Add to favorites 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-2-18 11:33

正文摘要:

本帖最后由 zha23 于 2022-2-18 16:29 编辑 在内存中存储N^4数目的双电子积分显然是不现实的,而用硬盘存储读取速度又是一大问题,现在的自洽场所用的基本都是直接方法。我自己写了一个简单的direct SCF,具体实 ...

回复 Reply

zjxitcc 发表于 Post on 2022-4-2 01:00:06
zha23 发表于 2022-2-18 16:14
我没有进行并行化处理,我觉得不应该复制指针,而是直接复制数据,因为如果是多线程有访问冲突的问题,对 ...

简单体系如果SCF不收敛,在2个能量值之间振荡的话,就要用DIIS了。
Freeman 发表于 Post on 2022-4-2 00:18:44
zha23 发表于 2022-2-18 16:14
我没有进行并行化处理,我觉得不应该复制指针,而是直接复制数据,因为如果是多线程有访问冲突的问题,对 ...

你说得对
zha23 发表于 Post on 2022-2-18 16:14:45
Freeman 发表于 2022-2-18 16:01
其实只要利用施瓦茨不等式屏蔽掉绝对值很小的积分,利用双电子积分的八重对称性和分子的点群对称性避免重复 ...

我没有进行并行化处理,我觉得不应该复制指针,而是直接复制数据,因为如果是多线程有访问冲突的问题,对于多进程其内存是不共享的。
我最大的问题是计算完积分后如何更新Fock矩阵,我计算的结果和gaussian的结果有些不同,并且用6-311g计算乙烷不收敛,而用6-31g**都可以。
Freeman 发表于 Post on 2022-2-18 16:01:58
其实只要利用施瓦茨不等式屏蔽掉绝对值很小的积分,利用双电子积分的八重对称性和分子的点群对称性避免重复计算等价的积分,存储成稀疏矩阵的形式,一般的计算节点其实是存得下中等大小的分子的双电子积分的。还不够的话就用密度拟合。
有的程序搞并行,可能把双电子积分复制了好几份分给每个进程,内存就不够用了,但是我猜只要把指向双电子积分所在的内存的指针分成好几份分给每个进程,就避免了复制双电子积分,也就节省了内存。

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

GMT+8, 2025-8-14 20:06 , Processed in 1.695395 second(s), 26 queries , Gzip On.

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