1. 前言 在之前的《使用PyVibMS可视化分子和固体中的振动模式》一文中,笔者介绍了PyVibMS插件的基本使用方法。目前对于量子化学程序计算的分子体系,PyVibMS已经可以原生支持高斯、ORCA、xtb和Q-Chem四款主流软件。然而对于CFOUR、MOLPRO、BDF等较少使用的量子化学程序计算的振动分析的结果,PyVibMS支持通过先载入XYZ坐标文件、再载入mode文本文件的方式进行振动可视化。其中,mode文本文件的准备可能需要用户有一定的脚本编写水平。 本文介绍一种不需要用户编写脚本制作mode文件就可以对非主流量子化学程序计算得到的振动分析结果进行可视化的方法。此方法的基本原理是先利用UniMoVib程序读取量子化学计算程序给出的Hessian矩阵信息,然后生成可以让PyVibMS读取的统一格式的XYZ和mode文件,最后将这两个文件载入PyVibMS即可。 UniMoVib是一款可以从近30种量子化学计算程序中读取Hessian、坐标等数据计算谐振频率和(可选)红外强度的Fortran程序。可以将它理解成一个加强版的freqchk程序。目前UniMoVib的代码、手册和例子文件在GitHub上托管:
https://github.com/zorkzou/UniMoVib
2. UniMoVib的安装 前往UniMoVib的GitHub页面后点击Code -> Download ZIP下载压缩包到本地后解压得到UniMoVib-master文件夹。Windows系统下可以直接打开win32文件夹的可执行文件运行代码。下面介绍Linux和Mac系统的安装方法。
打开终端窗口,进入UniMoVib-master文件夹后输入
cd src
mkdir object
which gfortran
如果此时返回了gfortran相应的路径,则说明Fortran编译器已经安装了。接着输入
make
则可以编译代码,在UniMoVib-master文件夹中得到一个名为unimovib.exe的可执行文件。
3. 例子 本文相关的实例文件可以在PyVibMS的GitHub档案中下载:
https://github.com/smutao/PyVibMS/
3.1 CFOUR CFOUR是一款主打耦合簇方法的量化计算程序,目前最近的版本号为2.1。
卢天老师曾写过一篇关于CFOUR程序使用的文章,见
http://sobereva.com/150
本例的文件位于PyVibMS文件夹的 examples/with-UniMoVib/CFOUR目录下,其中ZMAT为水分子振动分析的输入文件,h2o.out是CFOUR计算的输出文件(包含了Hessian信息), GRD输出文件包含了分子结构信息和每个原子的梯度分量(梯度应该接近为0)。
接着我们编写UniMoVib的输入文件 job.inp:
H2O without symmetry
$contrl
qcprog="cfour"
ifpyvibms=.true.
$end
$qcdata
fchk="h2o.out"
geom="GRD"
$end
CFOUR主输出文件和GRD文件是UniMoVib在处理CFOUR输出时必备的。为了后面让我们使用PyVibMS查看分子振动,ifpyvibms这个选项需要设置为 .true. 。接着我们运行UniMoVib:
./unimovib.exe
一路回车就可以得到job.out输出文件了。job.out输出文件给出了所有振动的频率、对称性、振动模式矢量、红外强度(可选)以及热力学量。此外,UniMoVib还产生了system.xyz和pyvibms_mode_full.txt两个文件。 我们打开PyMOL程序并运行PyVibMS插件,然后在 Input File处载入刚刚得到的system.xyz文件,接着在Mode File处载入pyvibms_mode_full.txt文件,这样CFOUR计算得到的振动结果就可以可视化了。PyVibMS界面的设置可以见下图:
3.2 Molpro 本例的文件位于PyVibMS文件夹的examples/with-UniMoVib/Molpro目录下,其中ch4.inp为甲烷分子的结构优化+振动分析输入文件,输出文件有两个,分别是ch4.log和ch4.out。其中.out后缀的输出文件为UniMoVib所需要的。UniMoVib的输入文件job.inp如下
a test job
$contrl
qcprog="molpro"
ifpyvibms=.true.
$end
$qcdata
fchk="ch4.out"
$end
再运行UniMoVib之后,得到的XYZ和mode文件即可用于PyVibMS的可视化了。
3.3 BDF BDF是国产的一款侧重于相对论效应的量子化学计算程序,相关文章请参见
https://aip.scitation.org/doi/abs/10.1063/1.5143173
本例是由BDF计算的HCN异构化过渡态结构下的振动分析,位于PyVibMS文件夹的 examples/BDF 目录下。其中test076.inp和test076.out分别是BDF计算的输入、输出文件。test076.umv是BDF产生的包含了体系坐标、Hessian矩阵等信息的格式化文件,可以被UniMoVib直接读取。test076.unimovib.input是BDF产生的给UniMoVib的输入文件,相应的 test076.unimovib.out是UniMoVib的输出文件。此外,XYZ和mode文件可以直接用于PyVibMS的可视化。
本例由计算化学公社网友@wzkchem5 提供。
4. 结语 本文介绍的UniMoVib+PyVibMS方法可以让我们更方便地对PyVibMS原生支持之外的量子化学程序计算得到的振动分析结果进行可视化。除了本文介绍了CFOUR、Molpro和BDF这三个量子化学程序以外,UniMoVib还可以处理其他更多的量化程序的振动输出,只需要在对应的输入文件指定 ifpyvibms=.true. 即可导出PyVibMS可以读取的必要文件了。