计算化学公社

标题: 请教波函数与空间的对应关系 [打印本页]

作者
Author:
Markmahao    时间: 2022-7-6 16:37
标题: 请教波函数与空间的对应关系
       各位老师好,最近在探索波函数与分子取向间的关系,有个不太好理解的地方请教各位老师。       我用高斯nosymm计算了相同分子不同空间位置或朝向的结果,读取fch文件时发现,他们的基函数,收缩系数等完全一样,只有后面的物理参数不同。我的问题是:真正计算时如何把坐标和取向的信息考虑进来的呢,或者说如何确定真正的波函数信息(我的理解是至少波函数的方向会不同)?坐标不同差别又在哪里体现? 感谢各位老师。


作者
Author:
hebrewsnabla    时间: 2022-7-6 16:52
基函数本来就是不变的,现代量化程序都是这样设定的,即px始终朝着x轴的方向。假如本来有个MO对应平行于x轴的sigma键,由两个原子的px基函数构成,那么你把分子转一下,就会变成由px py pz 混合构成,但MO的形状不变。
作者
Author:
zjxitcc    时间: 2022-7-6 17:18
高斯基组数据是定值,都在基组库里写着,你算或不算,它就在那里https://www.basissetexchange.org
分子轨道系数具有平移不变性。旋转的话,p角动量(及更高角动量)基函数的轨道系数会发生相应的变化,但是肉眼看轨道形状是不变的。
当你提供了坐标,这本身就已经体现了“坐标和取向的信息”。“真正的波函数信息”这个词本身是模糊的词汇,没有明确定义。
作者
Author:
Markmahao    时间: 2022-7-6 17:49
hebrewsnabla 发表于 2022-7-6 16:52
基函数本来就是不变的,现代量化程序都是这样设定的,即px始终朝着x轴的方向。假如本来有个MO对应平行于x轴 ...

谢谢您的回复,我明白基函数是不变的这个事情,您后面说的是我不太理解的。以高斯为例,既然计算时可以有标准朝向与随机朝向的区分,我自然会想到以标准朝向作为基准。结合楼下老师的回答,轨道系数会发生相应的变化,以保证其形状不变。那是不是跟把波函数转一下,再用之前的轨道系数组合是等价的操作呢?
作者
Author:
Markmahao    时间: 2022-7-6 17:55
zjxitcc 发表于 2022-7-6 17:18
高斯基组数据是定值,都在基组库里写着,你算或不算,它就在那里https://www.basissetexchange.org
分子轨 ...

谢谢您的解答,我所谓的“真正意义的波函数”其实是在一个标准朝向下的波函数,的确不太明确。其实我比较好奇的是:如果在已知一种取向的分子轨道和波函数的情况下,如何能很快获得另一个朝向的分子轨道和波函数。
作者
Author:
hebrewsnabla    时间: 2022-7-6 18:21
Markmahao 发表于 2022-7-6 17:55
谢谢您的解答,我所谓的“真正意义的波函数”其实是在一个标准朝向下的波函数,的确不太明确。其实我比较 ...

很简单,可以参考这里的实现 https://github.com/pyscf/pyscf/issues/1064
作者
Author:
hebrewsnabla    时间: 2022-7-6 18:23
Markmahao 发表于 2022-7-6 17:49
谢谢您的回复,我明白基函数是不变的这个事情,您后面说的是我不太理解的。以高斯为例,既然计算时可以有 ...

“把波函数转一下,再用之前的轨道系数组合”你是不是打错了,如果你想说“把基函数转一下,再用之前的轨道系数组合”,这是没问题的。
作者
Author:
Markmahao    时间: 2022-7-6 18:39
hebrewsnabla 发表于 2022-7-6 18:23
“把波函数转一下,再用之前的轨道系数组合”你是不是打错了,如果你想说“把基函数转一下,再用之前的轨 ...

是打错了,明白了,谢谢您。
作者
Author:
Markmahao    时间: 2022-7-6 18:51
hebrewsnabla 发表于 2022-7-6 18:21
很简单,可以参考这里的实现 https://github.com/pyscf/pyscf/issues/1064

就是您之前建议我看这段代码。这里面是应该是球谐函数通过Wigner D矩阵旋转的,不知我理解的对不对。普通高斯函数如何旋转呢?为啥不用?
作者
Author:
wzkchem5    时间: 2022-7-6 19:28
Markmahao 发表于 2022-7-6 11:51
就是您之前建议我看这段代码。这里面是应该是球谐函数通过Wigner D矩阵旋转的,不知我理解的对不对。普通 ...

什么叫“普通高斯函数”?
AO基函数是径向函数和球谐函数的积,其中对于高斯基函数而言,这里的径向函数是高斯函数。径向函数因为和角度无关,本来就无所谓旋转一说。至于整个高斯基函数,如果这里的球谐函数是s函数,那Wigner D矩阵刚好是1x1的单位阵,所以乘了等于没乘,也就是不需要旋转。
作者
Author:
Markmahao    时间: 2022-7-6 19:58
wzkchem5 发表于 2022-7-6 19:28
什么叫“普通高斯函数”?
AO基函数是径向函数和球谐函数的积,其中对于高斯基函数而言,这里的径向函数 ...

抱歉,我说的不是很专业,其实我想问的是笛卡尔型高斯函数如何实现旋转?
作者
Author:
hebrewsnabla    时间: 2022-7-6 20:08
Markmahao 发表于 2022-7-6 19:58
抱歉,我说的不是很专业,其实我想问的是笛卡尔型高斯函数如何实现旋转?

这段代码里面mol.cart代表是否使用cartesian型基函数。你可以看到mol.cart=True的话就多了一些步骤。

本来cartesian型和球谐型是可以相互变换的,大不了你先变换,再旋转,再变换回去。
作者
Author:
Markmahao    时间: 2022-7-6 20:09
hebrewsnabla 发表于 2022-7-6 20:08
这段代码里面mol.cart代表是否使用cartesian型基函数。你可以看到mol.cart=True的话就多了一些步骤。

...

好的,我去试试,感谢两位老师的耐心解答!
作者
Author:
zjxitcc    时间: 2022-7-6 20:40
Markmahao 发表于 2022-7-6 19:58
抱歉,我说的不是很专业,其实我想问的是笛卡尔型高斯函数如何实现旋转?

最常用的还是球谐型
作者
Author:
Markmahao    时间: 2022-7-7 18:36
hebrewsnabla 发表于 2022-7-6 20:08
这段代码里面mol.cart代表是否使用cartesian型基函数。你可以看到mol.cart=True的话就多了一些步骤。

...

最后还是旋转了系数矩阵,s和p的部分很快完成但又遇到一个问题,就是高角动量的笛卡尔型(比如d轨道),目前是先把6个系数变回5个,再旋转然后再拆成6个,还没有得到自洽的结果。
作者
Author:
zjxitcc    时间: 2022-7-7 18:49
本帖最后由 zjxitcc 于 2022-7-7 19:13 编辑
Markmahao 发表于 2022-7-7 18:36
最后还是旋转了系数矩阵,s和p的部分很快完成但又遇到一个问题,就是高角动量的笛卡尔型(比如d轨道), ...

5个展开成6个,展开系数是已知的,写程序时可以直接写进去,比较方便。但6个变回5个的时候,需要解线性方程组(示例),没法简单通过已知的一些系数线性组合得到,不知道你是不是这么做的。

作者
Author:
Markmahao    时间: 2022-7-7 22:11
zjxitcc 发表于 2022-7-7 18:49
5个展开成6个,展开系数是已知的,写程序时可以直接写进去,比较方便。但6个变回5个的时候,需要解线性方 ...

完全不是这么做的,我学习一下,谢谢老师指点
作者
Author:
Markmahao    时间: 2022-9-13 17:18
zjxitcc 发表于 2022-7-7 18:49
5个展开成6个,展开系数是已知的,写程序时可以直接写进去,比较方便。但6个变回5个的时候,需要解线性方 ...


作者
Author:
zjxitcc    时间: 2023-6-26 00:11
本帖最后由 zjxitcc 于 2023-6-26 00:12 编辑

MOKIT已支持轨道系数随分子朝向旋转,此功能无需计算AO基重叠积分,没用到Wigner-D矩阵。对球谐型和Cartesian型基函数都支持,以下是一个例子(在python中使用)
  1. from mokit.lib.mirror_wfn import rotate_atoms_wfn
  2. rotate_atoms_wfn('ZnMe2F.fch', 'ZnMe2F_new.gjf')
复制代码
第一个文件含一套已知的轨道系数,在旧的朝向下;第二个文件含新朝向下的坐标,支持gjf和xyz两种格式。运行后会产生ZnMe2F_r.fch文件,内含新朝向的坐标和轨道系数,SCF可1圈收敛。




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