在上一次推送 【PySCF学习1】-分子结构之定义分子,定义分子时要对分子原子指定所用的计算基组,本文章则主要是介绍一下对原子指定基组时的一些操作。
所有原子均使用同一个基组
定义分子统一使用 STO-3G 基组
from pyscf import gto
mol = gto.Mole()
mol.atom = '''8 0 0 0; h:1 0 1 0; H@2 0 0 1'''
mol.unit = 'B'
mol.basis = 'sto-3g'
mol.build()
使用混合基组(不同原子使用不同基组)
定义分子中标记原子采用特定的基组
from pyscf import gto
mol = gto.Mole()
mol.atom = '''8 0 0 0; h:1 0 1 0; H@2 0 0 1'''
mol.unit = 'B'
mol.basis = {'O': 'sto-3g', 'H': 'cc-pvdz', 'H@2': '6-31G'}
mol.build()
自行定义基组(gto.basis.parse())
可以使用gto.basis.parse()函数自行定义描述元素原子轨道所用的轨道指数、收缩指数
mol.basis = {'O': gto.basis.parse('''
C S
71.6168370 0.15432897
13.0450960 0.53532814
3.5305122 0.44463454
C SP
2.9412494 -0.09996723 0.15591627
0.6834831 0.39951283 0.60768372
0.2222899 0.70011547 0.39195739
''')}
这里是使用了C元素对应的STO-3G基组信息来描述O元素
从数据库中调用任意基组(gto.basis.load())
可以使用gto.basis.load()函数从数据库中调用任意基组来描述原子轨道,比如调用C元素的STO-3G基组来描述H元素
mol.basis = {'H': gto.basis.load('sto3g', 'C')}
实际上H元素对应的STO-3G基组信息应该是:
H 0
S 3 1.00
0.3425250914D+01 0.1543289673D+00
0.6239137298D+00 0.5353281423D+00
0.1688554040D+00 0.4446345422D+00
而C元素对应的STO-3G基组信息是:
C S
0.7161683735E+02 0.1543289673E+00
0.1304509632E+02 0.5353281423E+00
0.3530512160E+01 0.4446345422E+00
C SP
0.2941249355E+01 -0.9996722919E-01 0.1559162750E+00
0.6834830964E+00 0.3995128261E+00 0.6076837186E+00
0.2222899159E+00 0.7001154689E+00 0.3919573931E+00
这里是实现了使用C元素对应STO-3G基组信息来描述H元素的原子轨道。