sob的基于背景电荷计算分子在晶体环境中的吸收光谱http://bbs.keinsci.com/thread-20960-1-1.html中,给出了基于背景电荷模型计算晶体环境下分子的思路。不过实际上手的过程中,我发现实际操作还是相当麻烦的,于是写了一个脚本来完成工作。软件使用的是ORCA,没有用Gaussian是因为Gaussian中很多元素没有内置原子半径,算CHELPG电荷很麻烦。我给这个脚本取名叫QMcrystal,代码比较脏,没写注释,这个可能以后会补上。 (, 下载次数 Times of downloads: 10)
上传 Uploaded
点击下载Click to download
(, 下载次数 Times of downloads: 11)
上传 Uploaded
点击下载Click to download
(, 下载次数 Times of downloads: 4)
上传 Uploaded
点击下载Click to download
脚本的基本思想是利用晶体的晶胞能够平移的特性,计算一个晶胞中所有原子的电荷,之后再进行平移。这个脚本还没有设计输出报错信息,因此请务必按照程序提示和本贴使用,否则出了问题都不好排查哪个环节错了。
使用实例:水杨酰胺,使用到所有的文件都在附件中。 (, 下载次数 Times of downloads: 23)
上传 Uploaded
点击下载Click to download
这个脚本需要输入文件,输入文件的格式是原子坐标+三个Tv平移矢量,可以直接用GaussView生成。详见文件包中的1.inp,注意不要有空行。
文件包中的1.gjf文件是本次计算的晶体结构文件。将其中的坐标复制出来,存成1.inp,这就是我们需要的输入文件了。
运行脚本,会出现一串提示,按照提示输入。 (, 下载次数 Times of downloads: 23)
上传 Uploaded
点击下载Click to download
首先是Input file path,也就是输入文件的路径。
之后是Number of atoms,输入原子数。
Calculation level也就是计算级别,也就是写在ORCA输入文件中!行的内容。注意不用写TightSCF和CHELPG关键词。这里我选了最便宜的BLYP/def2-SV(P)级别。
然后是CPU核数,每个核的内存以及自旋多重度。
之后是ORCA路径。
然后是设置将计算得到的电荷平移的尺寸(相当于把电荷扩成n*n的超胞之后挖去中心),原理上设置的越大越好,输入4或者以上可以扩得更大(输4的话就是9*9)。
最后是运行模式:模式1是直接运行,算出CHELPG电荷之后把它平移一圈就完成;模式2是迭代,也就是算出CHELPG电荷之后把它平移一圈,之后再在背景电荷存在的条件下再算一遍CHELPG电荷,之后平移,重复若干次;模式3就是迭代到自洽(后一次的电荷相比前一次的变化极小)。模式2需要设置迭代次数,模式3需要设置收敛限。
运行完毕后,当前目录下会产生charge.pc电荷文件和mol.inp即考虑了背景电荷的ORCA输入文件,还会留下oldchg.txt文件(上一次的电荷计算结果)。然后在mol.inp的基础上进行修改即可。
不过,这样得到的输入文件中依然含有8个水杨酰胺分子。如果机器足够好,把8个分子组成的团簇摆在一起也能算得动,不过对于我的电脑来说136个原子用杂化泛函算TDDFT有点吃力了,所以我又做了进一步简化。用文件包中的chg.exe(源码chg.f90)提取所有原子的CHELPG电荷和坐标之后,删去前17个,其余的加入charge.pc中(并改动首行记录的点电荷数),此文件在文件包中命名为charge1.pc。之后仅保留mol.inp中的前17个原子,存成mol1.inp。然后用不错的级别PBE0/def2-TZVP(-f)做TDDFT计算,计算得出的紫外光谱如文件包中的dislin.png所示。 (, 下载次数 Times of downloads: 20)