计算化学公社

标题: RFC:CP2K的DFT-D4校正是否值得完全“内部”化? [打印本页]

作者
Author:
UW_0728.    时间: 2026-4-2 23:38
标题: RFC:CP2K的DFT-D4校正是否值得完全“内部”化?
本帖最后由 UW_0728. 于 2026-4-2 23:40 编辑

如果把CP2K的DFT-D4给做成内部功能(也就是不用再依赖外部库,不是必须安装额外的dftd4才能用d4校正),这样做是否值得,或者说对于用户而言相比目前实现能否带来明显收益?

目前的情况如下:
EEQ等最耗时的部分CP2K从2025.1版本起一直都有内部代码可以接管(支持MPI并行,因此对于CP2K可以真正做到和DFT-D3一样几乎零耗时;在DFTD4校正关键词所在section里加一行“D4_REFERENCE_CODE F”即可,这一关键词默认值为T)。最近的开发分支修复了这部分内部实现代码存在的一些问题,现在其色散校正能等结果数据可以和完全依赖外部库实现时的数据几乎精确一致;并且把D4_REFERENCE_CODE的默认值改成了F。目前的D4代码主要还剩一些参数和参数映射操作、以及最终的校正能计算操作,依然必须借助DFT-D4外部库来实现。要将剩余的这一部分集成进CP2K代码中,面临的主要难题,除了代码集成本身之外,还可能包括日后D4参数库中数据的调整带来的额外维护成本;但预期的好处也是显而易见的:不再需要DFT-D4这一外部依赖,同时与该外部依赖配置相关的问题也将不复存在。

希望能够听到大家都一些意见和看法,谢谢大家。


作者
Author:
Uus/pMeC6H4-/キ    时间: 2026-4-3 00:30
如果把参数文件放在data文件夹,那在维护上和其他已经放在那里的数据相比有什么特别的困难么?我反而是不能理解当初为什么搞出src/uff_vdw_radii_table.F和src/xtb_parameters.F这样的源文件。

顺便问两个问题:(1) 现在DFT-D4还有像https://github.com/cp2k/cp2k/issues/3961说的counterpoise计算问题不?(2) EEQ电荷的计算速度如果能超过Mulliken和Hirshfeld等的话,会不会有像https://github.com/cp2k/cp2k/issues/4227所说让plumed在做AIMD的metadynamics时读取、进而构建集合变量的可能?
作者
Author:
UW_0728.    时间: 2026-4-3 00:57
本帖最后由 UW_0728. 于 2026-4-3 10:04 编辑
Uus/pMeC6H4-/キ 发表于 2026-4-3 00:30
如果把参数文件放在data文件夹,那在维护上和其他已经放在那里的数据相比有什么特别的困难么?我反而是不能 ...

感觉那两个文件里面的数据规模都很小,可能也无可厚非吧;data里面的大都是数据规模很大的,要硬编码进Fortran源代码中完全是吃力不讨好,更别说基组可能还会随时有添加和更新。至于dftd4的数据,也许单另弄一个data/dftd4.dat确实会更合适。

(1) 我觉得应该没啥问题了,如果按照那个issue里面讨论中开发者认为应该看的标准和测试结果来看的话(内部代码问题修复后测试结果跟那里面的一模一样,而jpoto的话是“It seems to work”)
(2) 很抱歉,我对metadynamics不咋了解
作者
Author:
Uus/pMeC6H4-/キ    时间: 2026-4-3 01:21
UW_0728. 发表于 2026-4-3 00:57
感觉那两个文件里面的数据规模都很小,可能也无可厚非吧;data里面的大都是数据规模很大的,要硬编码进Fo ...

倒也不一定是metadynamics,我想表达的是如果EEQ电荷能比较快速计算且质量够好的话,或许从DFT-D4计算的流程中独立出来会有其他用处,比如和能量坐标受力一起输出作为机器学习势的训练数据以便描述极化作用之类的。

理论上DFT-D4有没有部分参数可以适配CP2K的赝势和基组做调优的空间,比如让其搭配常见泛函时更好复现二维材料实验晶胞参数、堆积层间距之类的?
作者
Author:
UW_0728.    时间: 2026-4-3 10:15
本帖最后由 UW_0728. 于 2026-4-3 10:26 编辑
Uus/pMeC6H4-/キ 发表于 2026-4-3 01:21
倒也不一定是metadynamics,我想表达的是如果EEQ电荷能比较快速计算且质量够好的话,或许从DFT-D4计算的 ...

这个我也没底

1. 也许还真有这样的应用价值;不过EEQ电荷在cp2k里本来就是独立模块,目前除了用在D4校正还用在GFN0-xTB上,但单另的关键词模块好像的确缺
2. 我觉得可以有,但需要多花费不少时间吧,改进应该也挺有限的
作者
Author:
UW_0728.    时间: 7 day ago
本帖最后由 UW_0728. 于 2026-4-6 23:42 编辑

我借助Claude尝试性地生成了一个Python脚本,用于将dftd4源码包中有用的参数文件整合、转化为CP2K中计算D4需要的且符合CP2K的Fortran代码格式要求的Fortran文件。脚本见附件。这个脚本应该生成两个文件,一个是qs_dispersion_data.F,储存与元素有关的一般参数,大小十几kB;另一个是qs_dispersion_ref.F,储存参考EEQ电荷、极化率等计算C6值需要的信息,大小400+kB。这个脚本将来可以放到tools子目录下一个单另的文件夹里。目前其具体效果还没有充分验证(这需要后续对d4模块的其他修改)。

如果后续验证表明没问题的话,那就不需要data/dftd4.dat了(D4的参数规模显著小于D3和D3-BJ);此外,源代码中也有其他自动生成的大文件,比如src/hfx_base下的三个文件,以及src/minimax下的minimax_exp_k53.F文件,它们的规模也都明显大于qs_dispersion_ref.F的规模,因此把这些参数放到里面硬编码进去应该是可取的,同时因为有了Python脚本,重新生成这两个文件也很方便(这样唯一需要“手动”关心的参数方面的东西就是会放在qs_dispersion_utils.F里面的泛函相关参数了)。

(, 下载次数 Times of downloads: 2)




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