计算化学公社

标题: pyscf如何载入外部的分子轨道积分 [打印本页]

作者
Author:
banxia    时间: 2023-3-23 16:24
标题: pyscf如何载入外部的分子轨道积分
本帖最后由 banxia 于 2023-3-23 22:18 编辑

各位老师好,我想知道pyscf如何导入使用外部,比如其他软件计算得到的分子轨道积分。通过查阅教程,我目前只看到了pyscf可以通过hdf5文件载入储存在其中的双电子积分,那么单电子积分是否有办法读入并使用呢

作者
Author:
zjxitcc    时间: 2023-3-23 16:31
为啥要这样?还不如从别的程序传进来分子轨道,然后使用PySCF的积分。
作者
Author:
hebrewsnabla    时间: 2023-3-23 16:50
本帖最后由 hebrewsnabla 于 2023-3-23 16:51 编辑

可以的。看这个例子 https://github.com/pyscf/pyscf/b ... zing_hamiltonian.py

作者
Author:
hebrewsnabla    时间: 2023-3-23 16:53
zjxitcc 发表于 2023-3-23 16:31
为啥要这样?还不如从别的程序传进来分子轨道,然后使用PySCF的积分。

有时是有意义的,例如读入某种模型哈密顿所需的积分。但是如果是pyscf本身就能算的积分的话,就没什么意义了。
作者
Author:
banxia    时间: 2023-3-23 16:57
hebrewsnabla 发表于 2023-3-23 16:50
可以的。看这个例子 https://github.com/pyscf/pyscf/blob/master/examples/scf/40-customizing_hamiltonia ...

好的,非常感谢!
作者
Author:
banxia    时间: 2023-3-23 18:25
hebrewsnabla 发表于 2023-3-23 16:50
可以的。看这个例子 https://github.com/pyscf/pyscf/blob/master/examples/scf/40-customizing_hamiltonia ...

麻烦请问一下,我看scf和mcscf两个目录下给出的这种,都是针对开始的hf读入的单双电子积分等信息,假如我做casci,想使用我自己的积分,我是应该在casci这一步中替换成我自己的积分吗?我试着这样做了一下,看输出感觉和之前pyscf直接做casci没什么区别。我在想是不是我利用
mycas.get_h1cas = lambda *args: oei,constant;
mycas.get_h2cas = lambda *args: tei
这里写的有问题,导致没有读入
作者
Author:
hebrewsnabla    时间: 2023-3-23 19:02
本帖最后由 hebrewsnabla 于 2023-3-23 19:19 编辑
banxia 发表于 2023-3-23 18:25
麻烦请问一下,我看scf和mcscf两个目录下给出的这种,都是针对开始的hf读入的单双电子积分等信息,假如我 ...

如果你按照这个来写 https://github.com/pyscf/pyscf/b ... zing_hamiltonian.py
相当于你提供所有的AO积分,然后pyscf来完成ao2mo。这样casscf的耗时步骤(假设活性空间不大的话)确实和原来没什么区别,但是是确实用上了你提供的AO积分的。

如果你想要的是提供MO积分,那是另一回事。
  1. mycas.get_h1cas = lambda *args: oei,constant;
  2. mycas.get_h2cas = lambda *args: tei
  3. 这里写的有问题,导致没有读入
复制代码

应该是get_h1eff get_h2eff

不过要注意h1eff 和通常的MO积分是不同的,需要吸收一部分活性空间外的积分。



作者
Author:
banxia    时间: 2023-3-23 22:17
hebrewsnabla 发表于 2023-3-23 19:02
如果你按照这个来写 https://github.com/pyscf/pyscf/b ... zing_hamiltonian.py
相当于你提供所有的AO ...

那老师您最后一句话的意思是说,假如我仅仅提供了活性空间内的积分(这部分是您说的通常的MO积分吗),想要利用get_h1eff是不行的,还得需要活性空间外的部分积分,那请问活性空间外的积分是还要包括哪些轨道呢。
还有老师我查阅了casci这部分定义的函数,get_h1eff和get_h1cas好像是一样的,不知道是不是我哪里理解的还不到位。这两个函数的定义截图我修改放在了主楼
pyscf也是刚接触,这部分也了解不是很多,问题比较多,麻烦老师啦,谢谢老师!
作者
Author:
hebrewsnabla    时间: 2023-3-24 00:09
banxia 发表于 2023-3-23 22:17
那老师您最后一句话的意思是说,假如我仅仅提供了活性空间内的积分(这部分是您说的通常的MO积分吗),想 ...
get_h1eff和get_h1cas好像是一样的,


是一样的,但是casci计算调用的是get_h1eff。而修改get_h1cas应该不会改变get_h1eff。

,想要利用get_h1eff是不行的,还得需要活性空间外的部分积分,那请问活性空间外的积分是还要包括哪些轨道呢。


是的。看一下h1e_for_cas的写法就知道了。这个是一种通用策略,各种程序的FCI/DMRG接口都是这样的。
作者
Author:
banxia    时间: 2023-3-25 10:34
hebrewsnabla 发表于 2023-3-24 00:09
是一样的,但是casci计算调用的是get_h1eff。而修改get_h1cas应该不会改变get_h1eff。

好的,老师我先看一下。有问题再请教,非常感谢老师!!!




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