计算化学公社

 找回密码 Forget password
 注册 Register
Views: 2937|回复 Reply: 2
打印 Print 上一主题 Last thread 下一主题 Next thread

[算法与编程] 基于背景电荷计算晶体环境下分子的快捷脚本

[复制链接 Copy URL]

199

帖子

2

威望

1530

eV
积分
1769

Level 5 (御坂)

本帖最后由 ionexchangeC 于 2022-7-16 02:42 编辑

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

首先是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所示。

这是没有考虑背景电荷的结果:


评分 Rate

参与人数
Participants 3
威望 +1 eV +10 收起 理由
Reason
ggdh + 5 nb!
丁越 + 5 赞!
sobereva + 1

查看全部评分 View all ratings

5万

帖子

99

威望

5万

eV
积分
112499

管理员

公社社长

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


北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取北京科音培训的最新消息、避免错过网上有价值的计算化学文章!
欢迎加入人气非常高、专业性特别强的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

6

帖子

0

威望

1065

eV
积分
1071

Level 4 (黑子)

3#
发表于 Post on 2022-7-16 15:26:58 | 只看该作者 Only view this author
为了降低计算量,我也试过类似的思路:
先算重复单元的原子电荷,然后利用空间群的对称性得到晶胞的原子电荷,再利用其平移特性得到背景电荷。
后来看了看230种空间群就搁置(不写)了,就用了一样的思路。

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

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-27 13:45 , Processed in 0.171529 second(s), 25 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list