计算化学公社

标题: 基于背景电荷计算晶体环境下分子的快捷脚本 [打印本页]

作者
Author:
ionexchangeC    时间: 2022-7-16 02:34
标题: 基于背景电荷计算晶体环境下分子的快捷脚本
本帖最后由 ionexchangeC 于 2022-7-16 02:42 编辑

sob的基于背景电荷计算分子在晶体环境中的吸收光谱http://bbs.keinsci.com/thread-20960-1-1.html中,给出了基于背景电荷模型计算晶体环境下分子的思路。不过实际上手的过程中,我发现实际操作还是相当麻烦的,于是写了一个脚本来完成工作。软件使用的是ORCA,没有用Gaussian是因为Gaussian中很多元素没有内置原子半径,算CHELPG电荷很麻烦。我给这个脚本取名叫QMcrystal,代码比较脏,没写注释,这个可能以后会补上。
(, 下载次数 Times of downloads: 10) (, 下载次数 Times of downloads: 11) (, 下载次数 Times of downloads: 4)
脚本的基本思想是利用晶体的晶胞能够平移的特性,计算一个晶胞中所有原子的电荷,之后再进行平移。这个脚本还没有设计输出报错信息,因此请务必按照程序提示和本贴使用,否则出了问题都不好排查哪个环节错了。
使用实例:水杨酰胺,使用到所有的文件都在附件中。
(, 下载次数 Times of downloads: 23)
这个脚本需要输入文件,输入文件的格式是原子坐标+三个Tv平移矢量,可以直接用GaussView生成。详见文件包中的1.inp,注意不要有空行。
文件包中的1.gjf文件是本次计算的晶体结构文件。将其中的坐标复制出来,存成1.inp,这就是我们需要的输入文件了。
运行脚本,会出现一串提示,按照提示输入。
(, 下载次数 Times of downloads: 23)
首先是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)
这是没有考虑背景电荷的结果:
(, 下载次数 Times of downloads: 21)


作者
Author:
sobereva    时间: 2022-7-16 08:56
顺带一提,Gaussian算CHELPG电荷只内置了CHELPG原文定义的(很少量)元素的半径,没有半径时必须在输入文件后头手动补,比较麻烦。而使用Multiwfn计算CHELPG电荷时,对于CHELPG原文没定义半径的情况,Multiwfn会在屏幕上的提示中直接推荐半径。还可以让Multiwfn在缺半径时自动用推荐的半径

(, 下载次数 Times of downloads: 18)

作者
Author:
zhoujd    时间: 2022-7-16 15:26
为了降低计算量,我也试过类似的思路:
先算重复单元的原子电荷,然后利用空间群的对称性得到晶胞的原子电荷,再利用其平移特性得到背景电荷。
后来看了看230种空间群就搁置(不写)了,就用了一样的思路。

ps: Multiwfn原来可以设置自动选择推荐原子半径,我还专门另外写了一套脚本(也就多了一个回车)专门应对带有重原子的状况。





欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3