高小四,英文名G2C4,是Gaussian通过external关键词调用CFOUR的接口程序,进而可以在Gaussian中实现高级别post-HF方法的能量、梯度、频率计算,同时也避免了CFOUR结构优化必须用Z矩阵坐标、结构升级异常等问题。由于MRCC程序与CFOUR是无缝对接的,因此也可以通过CFOUR实现MRCC的各种更高理论级别的计算。 程序主页
https://github.com/zorkzou/G2C4
使用方法
1. 编译:
ifort -O3 g2c4.f90 -o g2c4.exe
也可使用gfortran、pgf90等编译器。 然后把g2c4.exe,以及scripts中的3个文件cfour.templet-*全部放入同一个目录下。例如:/home/Chemsoft/G2C4 2. 把scripts中run-cfour.sh放入Gaussian当前计算的目录下,修改run-cfour.sh: 第4行是MRCC可执行程序的路径,如果不需要MRCC的功能,不用写。
6-13行是关于CFOUR的设置,比较重要的有: 第7行是CFOUR 2.x版可执行程序的路径。如果编译用了动态链接库(如mkl),还要把环境变量加上。 第8行是CFOUR存储计算临时文件的位置。 第10行是每次计算都把临时文件夹删除,以防CFOUR出现莫名其妙的错误。但是如果做restart计算,要把这行注释掉。 第13行是CFOUR多核并行计算的核心数,对串行编译的CFOUR无效。 15-28行是关于G2C4的设置,比较重要的有: 第16行g2c4dir指定第一步的程序路径。 第19行指定CFOUR输入文件模板文件,见下一步。
其余参数的一般不需要改。
3. 编辑CFOUR输入文件模板文件
作为示例,程序给了三个模板,分别是CFOUR的HF、CCSD计算和MRCC的CCSDT计算。用户也可以定义自己的计算类型,包括加上收敛参数、自定义基组等。以cfour.templet-hf为例,模板文件有三个输入块,分别对应单点、解析梯度、解析频率计算,每个输入块内的结构都是一样的。 每个数据块内,首先是file_block区,这不是必须的。因为run-cfour.sh里没有定义CFOUR的基组文件GENBAS和赝势文件ECPDATA,就需要在这里定义。在某些版本中可能无法通过%的方式指定ECPDATA的路径,这时可以在run-cfour.sh脚本中加上一行复制CFOUR的赝势文件到工作目录下的语句。如果是restart计算,还可以定义其它的文件。 接下来calc_block区定义CFOUR的计算设置,也就是在CFOUR输入文件坐标之后的部分。以下四个关键词是必须出现的: UNITS=1 COORDINATES=1 CHARGE={C} MULT={M} 还可以定义REFERENCE={R},表示只考虑RHF和UHF两种REFERENCE,G2C4会根据自旋多重度自动设定;倘若用ROHF(或其它参考波函)就直接写REFERENCE=ROHF,不过这些参考波函支持的解析导数较少,需查看CFOUR手册。 解析梯度部分要有DERIV_LEVEL=1,解析频率部分要有VIB=ANALYTIC。如果某些方法没有解析梯度或解析频率,要删除相应的输入块,然后在Gaussian里指定数值梯度或数值频率(例如EOM在少数理论级别下能算激发态梯度,大部分理论级别下连梯度都没有)。不要直接用CFOUR算数值梯度和数值频率,否则很多数据找不到。 4. 把test中的Gaussian输入文件复制到run-cfour.sh同一目录下,把输入文件中的'G2C4/run-cfour.sh'改为'./run-cfour.sh',做单级别的QM结构优化时,应使用opt(nomicro)关键词,然后提交Gaussian任务,即可做测试计算。
5. 结构优化和频率计算还有个经常遇到的问题。如果分子带有一定的对称性,CFOUR可能把原子重新排序,导致读取的梯度和hessian错误(接口对此进行检查)。建议先用Gaussian调用CFOUR在HF/3-21G等较低级别做结构优化试算,完成一步优化就可停掉。然后打开CFOUR的梯度文件GRD,根据里面的原子顺序,把Gaussian输入文件里的原子做相应调整。