计算化学公社
标题:
Molden/NBO47/wfn/wfx/mwfn等文件一个隐含的内部冲突及解决方案
[打印本页]
作者Author:
beefly
时间:
2025-1-31 16:49
标题:
Molden/NBO47/wfn/wfx/mwfn等文件一个隐含的内部冲突及解决方案
本帖最后由 beefly 于 2025-1-31 16:57 编辑
首先以Molden格式为例,解释这个内部冲突是如何发生的。下面是HeH+分子HF/STO-3G计算产生的Molden文件(部分):
[Molden Format]
[Atoms] AU
He 1 2 0.0000 0.0000 0.0000
H 2 1 0.0000 0.0000 1.5117
[GTO]
1 0
S 3 1.0
0.6362421400D+01 0.1543289705D+00
0.1158923000D+01 0.5353281416D+00
0.3136497900D+00 0.4446345413D+00
2 0
S 3 1.0
0.3425250900D+01 0.1543289707D+00
0.6239137300D+00 0.5353281424D+00
0.1688554000D+00 0.4446345420D+00
[MO]
Sym= 1.1
Ene= -1.61320000
Spin= Alpha
Occup= 2.00000000
1 0.8802
2 0.2018
【第二个MO,略】
复制代码
在这个Molden文件中,存在两个原子序号:一个在原子坐标[Atoms]部分,1是He,2是H;第二个位于基函数[GTO]部分:先是通过“1 0”给出了第一个原子He的STO-3G基函数,然后是“2 0” 给出第二个原子H的STO-3G基函数,各有1个s函数,仍然是He为1,H为2。接下来的[MO]数据部分中,给出了每个MO的因子。本计算采用的STO-3G基组导致两个基函数,故每个MO只有两个因子。上例显示了第一个MO在基函数1(也就是He的s函数)的因子0.8802,和在基函数2(H的s函数)的因子0.2018。
接下来,我们把两个基函数交换。根据Molden格式的要求,[GTO]部分要改成下面的形式:
[GTO]
2 0
S 3 1.0
0.3425250900D+01 0.1543289707D+00
0.6239137300D+00 0.5353281424D+00
0.1688554000D+00 0.4446345420D+00
1 0
S 3 1.0
0.6362421400D+01 0.1543289705D+00
0.1158923000D+01 0.5353281416D+00
0.3136497900D+00 0.4446345413D+00
复制代码
先出现的原子对应[Atoms]中的H,后出现的原子对应[Atoms]中的He。也就是说,在[GTO]部分,1是H,2是He,与[Atoms]部分的原子顺序恰好相反。
问题来了:在[MO]部分,基函数1是He的s函数呢,还是H的s函数呢?换句话说,[MO]中的原子顺序遵从[Atoms]定义,还是[GTO]定义?Molden格式对此没有规定,于是就带来了歧义。
一般情况下,所有能输出Molden数据的量子化学程序都不会无聊到随意交换基组顺序,因此[GTO]中的原子顺序与[Atoms]的原子顺序应当保持一致,从而回避了上面的问题。但是有一种特例,就是当存在对称等价原子的时候,比如水分子H2O(两个H在计算中采用相同的基组),由于程序的内部缺陷或者程序作者的个人理解不同,导致两个H的坐标发生交换但是[GTO]部分的H原子编号没有换过来(或者相反),于是Molden文件就出现了上面的问题。目前已知存在问题的有Molpro(原子顺序遵从[GTO]定义),和CFour(原子顺序遵从[Atoms]定义)。【注:水分子在实际计算中是非常安全的。只有对称等价原子较多时,比如甲烷、乙烷,Molpro和CFour偶尔会遇到上面的问题。】
在NBO47、wfn、wfx、mwfn等其它格式的文件中,由于存在CENTER、<Primitive Centers>、$Shell centers等一类的字段,对应[GTO]中的原子编号,因此原则上也有出现上面冲突的可能性,只不过Molpro和CFour目前还不能输出上述格式【注:Molpro有NBO接口但未尝试】。
解决方法有两种,就是在数据格式的定义中加一些限制,只保留一种原子顺序:要么限制[GTO],规定原子序号必须是升序的,这样[Atoms]和[GTO]中的原子顺序始终一致;要么限制[MO],规定原子顺序遵从[Atoms]、[GTO]之一,其中[Atoms]中的原子顺序比较符合人类习惯。
作者Author:
sobereva
时间:
2025-2-1 16:38
当前这样交换的情况,轨道展开系数的顺序也需要交换,应遵循基函数的顺序
欢迎光临 计算化学公社 (http://bbs.keinsci.com/)
Powered by Discuz! X3.3