当前位置:主页»新闻动态»行业动态»

将Gaussian与ORCA联用搜索悦博体育app过渡态、发生IRC、做振动阐明

文章出处:网络整理 人气:发表时间:2021-07-25 20:59

将Gaussian与ORCA联用搜索过渡态、发生IRC、做振动阐明


文/Sobereva @北京科音

First release: 2018-May-31  Last update: 2020-Feb-12
  

1 媒介

在《将Gaussian与Grimme的xtb措施联用搜索过渡态、发生IRC、做振动阐明》()中笔者先容了Gaussian的external成果的利用,以及如何操作这个成果,借用xtb措施发生的能量、受力、Hessian来举办过渡态搜索、IRC、振动阐明任务。雷同地,只要本身写一个接口,也可以令Gaussian借用知名的、用户数目仅次于Gaussian的ORCA措施发生的这些信息来做这些任务,本文就先容详细怎么实现。看本文前必然先把上文看了。ORCA的一些粗浅先容可以参看《概略系弱彼此浸染计较的办理之道》()。

这种Gaussian与ORCA联用的做法可以带来以下长处:
(1)可以令Gaussian做上述任务的时候支持ORCA才支持的理论要领,好比PBEh-3c、B97-3c、PWPB95-D3、NEVPT2、MRCI、DLPNO-CCSD(T)等。固然个中有的理论要领并没有理会梯度,但道理上,我们可以通过自写剧本以有限差分方法获得Gaussian所需的梯度信息
(2)固然Gaussian支持的DFT泛函很广,速度也快,可是由于ORCA的RI做得十分精彩,借用ORCA来发生能量和导数可以使得上述任务耗时更低,尤其是对付概略系、大基组而言
(3)固然ORCA也能直接做几许优化和找过渡态,但Gaussian在这方面算法上明明更成熟、更稳健,选项也更富厚、更易用
(4)ORCA今朝没有IRC成果,和Gaussian联用使得ORCA中的理论要领也可以用来发生IRC
(5)使得ORCA发生的Hessian所对应的振动模式可以或许通过gview来寓目

实际上,ORCA有个要害词ExtOpt,即在ORCA优化进程中通过外部文件读入能量、导数信息,这和Gaussian的external要害词颇为相似,但ORCA的optimizer的算法跟Gaussian比照旧有差距,并且也只能用来优化,所以没太大意义。

本文利用Gaussian 09 E.01版,ORCA是4.0.1.2版,系统是CentOS 7.2。本文涉及的所有文件都可以在此处下载:

假如各人的实际研究中利用了本文的接口,请这样引用:Tian Lu, gau_orca: A Gaussian interface for ORCA program, (accessed month day, year)

2 Gaussian与ORCA联用的external剧本的写法 文件包里的orca.sh就是笔者编写的接口剧本,Gaussian输入文件里写上external='./orca.sh'要害词就代表需要能量和导数信息的时候会挪用当前目次下的orca.sh。下面表明一下此剧本的内容。

剧本一开始的部门,需要由用户本身填写ORCA运行时候是几核并行、内存用多大,用什么计较级别,以及数值精度方面的设定,好比SCF收敛限、积分格点精度。为了导数计较精确,剧本默认带了tightscf grid4。还要设ORCA可执行文件路径。这些信息都需要用户利用前按照实际环境修改
#Set the number of parallel cores and maximum memory utilized by each core (MB)
nprocs=1
maxcore=1000
#Set calculation level
level="BLYP def2-svp def2/J"
#Set parameters for numerical aspects
numset="tightscf grid4"
#ORCA executable path
orcapath="/sob/orca/orca"

之后,用read呼吁从Gaussian自动发生的InputFile中读取原子数、需要的导数阶数、净电荷、自旋多重度到相应变量
read atoms derivs charge spin < $2

下面的语句判定当前任务要用的要害词。ORCA内里engrad(即energy+gradient)要害词和Gaussian里的force要害词等价,用来计较当前布局下能量和受力,并输出到当前目次下与输入文件同名的.engrad文件中。假如写上freq,则管帐算Hessian而且输出到当前目次下与输入文件同名的.hess文件中。这俩文件都是文本文件。
if [ $derivs == "2" ] ; then
task="engrad freq"
elif [ $derivs == "1" ] ; then
task="engrad"
fi

之后发生ORCA输入文件mol.inp。由于从InputFile读过来的坐标单元是Bohr,所以用了BOHRS要害词。
#Create ORCA input file
echo "Generating mol.inp"
cat >> mol.inp <<EOF
! $level $numset $task BOHRS nopop
%pal nprocs $nprocs end
%maxcore $maxcore
* xyz $charge $spin
$(sed -n 2,$(($atoms+1))p < $2 | cut -c 1-72)
*
EOF
值得一提的是,ORCA在计较上面语句发生的mol.inp的时候,会在当前目次下发生mol.gbw。ORCA默认是开启了autostart设定的,即假如计较时候发明当前目次下已经有了后缀为.gbw的与当前输入文件同名的文件,就会自动从中读取波函数作为初猜波函数。整个Gaussian任务在运行期间是把mol.gbw一直保存在当前目次的,因此假如Gaussian和ORCA联用做几许优化,ORCA在计较当前布局的时候会自动读取上一次运算时候发生的.gbw里的波函数当做初猜,这样一方面节省了计较时间(究竟比从头发生的初猜好),另一方面有助于保持所处的电子态的持续性。(稍有Gaussian常识的人都知道,Gaussian做几许优化的时候,每一步的初猜用的就是上一步收敛的波函数,通过orca.sh将Gaussian与ORCA联用时也借助gbw文件同样发挥了这种结果)

再往后是挪用ORCA运行mol.inp
#Run ORCA
echo "Running ORCA..."
$orcapath mol.inp > mol.out
echo "ORCA running finished!"

下面通过笔者用Fortran自写的extorca措施从ORCA发生的.engrad和.hess文件中提取能量以及导数信息,写入到与$3参数对应的OutputFile文件中
echo "Extracting data from ORCA outputs via extderi"
./extorca $3 $atoms $derivs
extorca的源措施是extorca.f90,内容并不巨大,就不多说了。
 
最后,orca.sh用以下呼吁清空ORCA运行半途发生的各类mol和mol_开头的文件以保持当前目次的洁净。但为了保存下来mol.gbw,用rm之前姑且改了个名字。
mv mol.gbw tmp.gbw -f
rm mol.* mol_* -f
mv tmp.gbw mol.gbw -f

通过Gaussian与ORCA联用可以留下chk文件,但内里显然是没有波函数信息的,因此之后没法用Multiwfn等措施来看轨道、做波函数阐明。不外,由于mol.gbw文件被保存了下来,这内里记录了ORCA计较最后一个布局时发生的波函数信息,因此可以转换为.molden名目,然后载入到Multiwfn里看轨道和做波函数阐明。怎么把.gbw转换成.molden看《详谈Multiwfn支持的输入文件范例、发生要领以及彼此转换》()。


3 实例:HCN->CNH异构化的过渡态搜索、振动阐明以及IRC生成 在本文的压缩包的example目次里有HCN->CNH异构化的所有输入输出文件,悦博手机版,用的是RI-BLYP/def2-SVP级别。由于这个别系很是小,用的计较级别也较低,因此实际上完全发挥不出借用ORCA计较能量和梯度的优势,反倒比纯粹用Gaussian还慢。而对付较概略系,ORCA仗着开挂般的RI,就完全不是同样的景物了。

首先运行找过渡态的任务,要把TS.gjf、orca.sh、extorca三个文件都放到当前目次下,而且按照实际环境得当修改orca.sh开头的变量,出格是ORCA的可执行文件路径。TS.gjf中的坐标是初猜的过渡态布局,文件前三行为
%chk=TS.chk
%nproc=1
#P opt(nomicro,calcfc,ts,noeigen) external='./orca.sh'
用诸如g09 < TS.gjf |tee TS.out运行即可。留意Gaussian用external成果时该当确保以串行方法计较,因而今意写了%nproc=1,不然在通过orca.sh挪用ORCA期间,Link401会有很高无意义的CPU占用。

过渡态任务完成后,可以做振动阐明检讨有无虚频。对应的输入文件freq.gjf总共就三行,其它信息通过geom=allcheck从找过渡态后发生的TS.chk里读
%chk=TS.chk
%nproc=1
# freq geom=allcheck external='./orca.sh'

用gview寓目输出文件freq.out,可确认有且只有一个虚频,振动模式正是期望的,虚频数值为1089.0cm-1。同样在BLYP/def2-SVP下,完全由Gaussian计较所给出的虚频为1088.4 cm-1,可见相符极好。

最厥后跑一下IRC,对应的输入文件IRC.gjf内容也只有以下三行。此任务从TS.chk里读取过渡态布局,由于用了%oldchk又制止了此任务改写TS.chk。
%oldchk=TS.chk
%nproc=1
# IRC=calcfc geom=allcheck external='./orca.sh'

读者可用gview打开IRC.out绘制IRC曲线图,可以看到曲线很平滑,并且IRC轨迹正常,证明Gaussian和ORCA联用很是乐成。

同类文章排行

最新资讯文章