本帖最后由 让你变成回忆 于 2018-8-19 14:19 编辑
最近在论坛里见大家讨论如何绘制分子的静电势讨论得比较多,由于本人在论坛里获得了无数次的帮助,因此也分享一下自己平时画轨道(如分子轨道、NTO轨道等)的经验。
其实在sob老师的博文《使用Multiwfn观看分子轨道:http://sobereva.com/269》也仔细讨论了这个方法,不过我用的方法与sob老师的方法略有不同,尤其是在利用Linux版本的VMD批量绘制轨道图形的时候。因为平时用得较多的量化软件是Gaussian,因此这里Multiwfn的输入文件为Gaussian产生的fchk文件。
用到的文件及程序: Gaussian产生的fchk文件; VMD 1.9.3的Linux版本(no cuda版本); Multiwfn3.5版本;
下面以画分子轨道为例进行演示。 首先是产生fchk文件,关于fchk文件,在sob老师的博文《详谈Multiwfn支持的输入文件类型、产生方法以及相互转换:http://sobereva.com/379》进行了详细说明。另外如果需要详细了解fchk文件里的内容,建议去读Multiwfn源代码中fileIO.f90源文件中的readfch子程序。 然后用Multiwfn载入fchk文件,输入: 200 3 /Generate cube file for multiple orbitalwavefunctions 5,6 /在这里输入想要的轨道对应的编号,例如5,6分别对应HOMO,LUMO(这里的输入非常灵活,根据提示使用一遍就了解了) 3 /High quality grid, covering whole system,about 1728000 points in total 由于Multiwfn产生分子轨道的cub文件的速度非常快,所以我一般都是用High quality 1 /Output the grid data of these orbitals asseparate cube files 导为单独的cub文件以便后面利用VMD批量绘制
这样就产生了HOMO,LUMO所对应的cub文件,文件名分别为: orb000005.cub, orb000006.cub。我习惯的做法是把这两个文件改名为:orb-5.cub,orb-6.cub以便后面循环起来简单。
利用VMD导入orb-5.cub文件,然后进行如下设置(见图): 创建三个图层,图层1在Drawing method中选择CPK用于显示分子,图层2和图层3分别绘制isovalue为正、负所对应的isosurface,isovalue我一般用0.02与-0.02。一定要把Draw和Show改为图示的Solid Surface和Isosurface。这样在VMD的Display窗口就显示了所绘制出的轨道图形。然后在VMD的main窗口中选择File->Save visualization State,保存为orb-5(注意:这里没有任何后缀,文件名之所以选择与cub文件相同,也是为了方便后面的处理)。
然后把orb-5这个可视化态的文件上传到Linux下(与之前产生cub文件的目录相同),然后对orb-5这个文件进行如下修改: 在文件的任意位置加入:axes location off (这里不清楚是为什么,即使我在前面使用取消了显示xyz轴,但是这里仍然没有这个命令,需要自己手动加上) 然后在vi的命令模式下/orb-5定位到orb-5.cub这一行,修改其路径,一般直接删除前面的路径,仅仅留下orb-5.cub就行(注意:orb-5.cub这样的行有两行,因此需要修改两个地方)。然后跳到文件的末尾,加上下面这一行: render Tachyon orb-5.dat "tachyon -aasamples 12 orb-5.dat–res 1200 900 –format BMP –o orb-5.bmp" PS:要用Tachyon这个命令,需要VMD正确安装
这样,VMD可视化的模板文件就已经准备好了。然后把这个模板文件进行复制、修改。例如这里还需要绘制orb-6,就cp orb-5 orb-6,然后编辑orb-6,把这里面的所有orb-5替换成orb-6即可,即在vi的命令模式下输入:1,$s/orb-5/orb-6/g 接下来就可以利用VMD产生对应轨道的bmp图片文件了。命令为:vmd < orb-5
如果想批量处理,可以写一个shell脚本,内容如下 #!/bin/bash for inf in *.cub do vmd< ${inf%.cub} done 然后执行之便可产生该目录下所有cub文件所对应的轨道的bmp图片。
总结:这是我绘制轨道的方法,我一般是把cub文件、可视化文件均命名为相同的名字,以方便批量处理。可能有些地方可以使用脚本处理更为简洁方便(比如如何得到每个cub文件所对应的可视化态文件)。 这样比起Gaussview绘制轨道最大的好处在于分子的朝向是完全一样的(因为用Gaussview的时候我经常一不小心就会改变分子的朝向)。而且轨道图像完全可以根据自己的喜好进行各种设置。
至于其他的轨道,如做激发态常用的NTO轨道,首先是要得到对应的fchk文件,然后基于fchk文件,剩余的操作就和文中完全一致。
如大家有更好的建议,欢迎指出。
PS:这种方法是跟组里的一个师兄学的,非常感谢!
|