计算化学公社

标题: 请问有那些XC库支持ROKS? [打印本页]

作者
Author:
Freeman    时间: 2025-9-28 21:26
标题: 请问有那些XC库支持ROKS?
大家好。

我想实现ROKS,但不想自己写XC相关的代码。现有的XC库,对电子密度好像只有R和U的区分,没有RO的。请问那些库支持RO呢?或者,有没有办法使用R和U的XC势拼凑出来RO的呢?

谢谢


作者
Author:
sobereva    时间: 2025-9-29 01:46
R、U、RO这是自己写的SCF代码层面的,libXC是更底层的算交换-相关能密度及其导数的部分,因此不区分这个
作者
Author:
wzkchem5    时间: 2025-9-29 07:28
RO计算都是用泛函库里U的代码。U和RO的区别完全体现在SCF代码层面,泛函库方面没有区别。
作者
Author:
zjxitcc    时间: 2025-9-29 08:37
本帖最后由 zjxitcc 于 2025-9-29 09:11 编辑

泛函库与R/RO/U无关。PySCF已经拥有目前世上几乎最强的ROHF/ROKS功能,不需要自己写,否则写完之后会跟很多用户一样,三天两头询问ROKS不收敛怎么办、试了一堆关键词都没用,然后还是选择用MOKIT的小程序从PySCF/ORCA/Gaussian传轨道给目标程序(例如GAMESS, ORCA, OpenQP, Q-Chem)。
作者
Author:
Freeman    时间: 2025-9-29 11:51
本帖最后由 Freeman 于 2025-9-29 11:56 编辑
sobereva 发表于 2025-9-29 01:46
R、U、RO这是自己写的SCF代码层面的,libXC是更底层的算交换-相关能密度及其导数的部分,因此不区分这个

就我所知,libxc是区分u和r的。当然了,r相当于u的语法糖。理论上,只用u也能实现r。不过我就是不太懂ro怎么实现。
作者
Author:
Freeman    时间: 2025-9-29 11:55
zjxitcc 发表于 2025-9-29 08:37
泛函库与R/RO/U无关。PySCF已经拥有目前世上几乎最强的ROHF/ROKS功能,不需要自己写,否则写完之后会跟很多 ...

请问PySCF用到了哪些RO收敛的技巧?我输入RO和pyscf两个关键词,没搜出来什么方法论文章。
作者
Author:
zjxitcc    时间: 2025-9-29 12:48
本帖最后由 zjxitcc 于 2025-9-29 12:49 编辑
Freeman 发表于 2025-9-29 11:55
请问PySCF用到了哪些RO收敛的技巧?我输入RO和pyscf两个关键词,没搜出来什么方法论文章。

默认DIIS(很一般);支持ROHF/ROKS的二阶轨道优化算法(很强),可通过mf.newton使用。这两个单独使用并没什么太大用处,需要二者联合,外加python脚本的灵活性,可以实现类似Gaussian的scf(xqc,maxcycle=N)的特点(注意是xqc,不是qc),可以看我在这个issue里的回答示例https://github.com/Open-Quantum-Platform/openqp/issues/40
但Gaussian/ORCA的RO方法暂时不支持这种功能。
作者
Author:
sobereva    时间: 2025-9-29 13:52
Freeman 发表于 2025-9-29 11:51
就我所知,libxc是区分u和r的。当然了,r相当于u的语法糖。理论上,只用u也能实现r。不过我就是不太懂ro ...

你当前语境说的R和U是另一码事,是交换-相关泛函是否是自旋极化形式,而非SCF用的形式,用R和U来形容有极大的歧义。下文说过相关信息
DFT交换相关泛函库的使用方法
http://sobereva.com/211


用RO的情况必然不是闭壳层,libxc的交换-相关泛函自然要用考虑自旋极化的形式

作者
Author:
Freeman    时间: 2025-11-4 17:21
我发现了个问题。如果限定高自旋态,那么密度的两个成分(成对电子密度和单电子密度)确实可以和alpha总密度和beta总密度建立一一对应的关系。但是,如果考虑低自旋的话,密度就有三个成分了(成对电子密度、alpha单电子密度、beta单电子密度),这样就不能和alpha总密度和beta总密度一一对应了。虽然通过三个成分可以算出两个自旋的总密度,但是从libxc给出的\partial e / partial rho_alpha和\partial e / partial rho_beta变不到\partial e / partial rho_pair、\partial e / partial rho_single_alpha、\partial e / partial rho_single_beta,计算就无从进行了。就我所知,确实没有哪个程序实现了低自旋ROKS,估计就是因为这个。
作者
Author:
Freeman    时间: 2025-11-4 17:39
本帖最后由 Freeman 于 2025-11-4 17:41 编辑
Freeman 发表于 2025-11-4 17:21
我发现了个问题。如果限定高自旋态,那么密度的两个成分(成对电子密度和单电子密度)确实可以和alpha总密 ...

我一时糊涂了。其实用多元函数的链式法则就能计算了。哈哈
作者
Author:
wzkchem5    时间: 2025-11-4 18:58
Freeman 发表于 2025-11-4 17:21
我发现了个问题。如果限定高自旋态,那么密度的两个成分(成对电子密度和单电子密度)确实可以和alpha总密 ...

低自旋ROKS对泛函本身的设计也有很高要求,这种情况现在更主流的做法可能是多参考DFT方法,比如MCPDFT(ORCA最近支持了)
作者
Author:
Freeman    时间: 2025-11-4 19:27
wzkchem5 发表于 2025-11-4 18:58
低自旋ROKS对泛函本身的设计也有很高要求,这种情况现在更主流的做法可能是多参考DFT方法,比如MCPDFT(O ...

谢谢提醒




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