计算化学公社

 找回密码 Forget password
 注册 Register
Views: 3373|回复 Reply: 27

[MRCC/CFOUR] 使用mrcc进行CC2/ADC(2)/双杂化TD-DFT级别的激发态计算

[复制链接 Copy URL]

877

帖子

36

威望

4803

eV
积分
6400

Level 6 (一方通行)

发表于 Post on 2022-4-29 03:44:25 | 显示全部楼层 Show all |阅读模式 Reading model
本帖最后由 ggdh 于 2022-6-10 10:43 编辑

1.  软件介绍官网在此:
https://www.mrcc.hu/
mrcc有3个主程序: mrcc, ccsd和cis, 本贴主要使用cis程序的相关功能:
  • CIS, TDA, TDDFT, 基于CIS(D)或者ADC(2)的双杂化TDDFT(ORCA的TD-DH-DFT只支持基于CIS(D)而Gaussian则不支持TD-DH-DFT)
  • ADC(2), CC2, CIS(D), DIS(D∞), 以及它们的SCS和SOS版本
  • 可同时算单重态和三重态
  • 所有功能都强制RI加速
  • 不支持含MetaGGA的TDDFT
  • 只支持闭壳层
  • 只有CIS和TD-HF支持解析梯度
  • CC2无法计算跃迁偶极
  • 无法算SOC
  • 无法获取激发态密度
  • 只能openmp并行, 无法mpi并行

2. 下载和安装
去官网注册账号,下载证书,签名并邮寄回去激活账号就能免费下载源代码版或者二进制版,这里我们使用二进制版本:mrcc.2022-03-18.binary.tar
新建一个目录,把压缩包放进去后解压,然后把该目录加入PATH变量即可,不会操作的照下面代码弄
  1. mkdir mrcc-2022
  2. mv mrcc.2022-03-18.binary.tar mrcc-2022
  3. cd mrcc-2022
  4. tar -xvf mrcc.2022-03-18.binary.tar
  5. echo 'PATH='$(pwd)':$PATH' >> ~/.bashrc
  6. source ~/.bashrc
复制代码
安装完成后可以测试:
  1. cd MTEST
  2. ./mest
复制代码
这里有1000多个测试文件,可以提前终止

2.5 光速启动
后面的内容很长,时间管理大师们想在10分钟内上手的,可以按照此光速启动环节操作:
a) 找到绿色通道,并按照第二步的说明下载安装        https://pan.baidu.com/s/1EGkkxG0B242BkVzOcLTjaA    mrcc
b) 下载附件中的三个文件, 把genmrcc.sh和mrccST.py 拷贝到上面第二步中的mrcc-2022文件夹中并赋予可执行权限
c) 把BN.xyz文件放到一个单独的文件夹中, 并cd到该目录下
d) 运行下面的命令
  1. genmrcc.sh -n 8 -m 10GB -p scs-cc2 -b cc-pvdz  -S 4 -T 3 -R 3 -C 5 BN.xyz    #产生输入文件
  2. sh BN_SCS-CC2/runmrcc.sh   #开始计算,此时可以观察屏幕上的输出,等待2分多计算完毕,然后运行
  3. mrccST.py BN_SCS-CC2
复制代码
查看结果如下:
mrcc-BN.png

3. 输入文件的格式
mrcc的输入文件通过一批
选项1=值A
选项2=值B
的方式设定,以一个水分子的TDDFT任务为例,对比gjf文件和mrcc的输入文件方便大家理解:
gjf:
  1. %chk=form.chk
  2. %mem=10GB
  3. %nprocshared=16
  4. # B3LYP3 def2SVP TD(nstates=3,50-50)

  5. Formaldehyde

  6. 0 1
  7. C                 -3.14381262   -0.27313266    0.00000000
  8. O                 -1.91649562   -0.27313266    0.00000000
  9. H                 -3.73595762    0.66627134    0.00000000
  10. H                 -3.73595762   -1.21253666    0.00003900
复制代码

MINP:
  1. mem=10GB
  2. calc=TDDFT
  3. basis=def2-SVP
  4. dft=B3LYP3
  5. nsing=4
  6. ntrip=3
  7. charge=0
  8. mult=1
  9. geom=xyz
  10. 4
  11. Formaldehyde
  12. C                 -3.14381262   -0.27313266    0.00000000
  13. O                 -1.91649562   -0.27313266    0.00000000
  14. H                 -3.73595762    0.66627134    0.00000000
  15. H                 -3.73595762   -1.21253666    0.00003900
复制代码
  • 更多选项的意义可以去手册上查找
  • 下面有脚本可以方便的产生输入文件

4. mrcc的运行方式
首先输入文件名必须为MINP
在有MINP的路径下依次运行
  1. export OMP_NUM_THREADS=16
  2. export MKL_NUM_THREADS=16
  3. export OMP_PLACES=cores
  4. export OMP_PROC_BIND=spread,close
  5. dmrcc | tee mrcc.out
复制代码
设置16核并行,以及核的绑定cpu策略为分散式,然后将运行结果输出到屏幕上和mrcc.out文件中
这是原生的运行方式,下面提供的脚本有更方便的运行方式。

5.利用脚本进行常规计算
为了贯彻sob把萌新宠坏的思想,这里编写了shell和python脚本,方便直接产生输入文件和读取输出文件。安装和用法按照下面的步骤进行:
a) 安装脚本
下载附件中的genmrcc.sh和mrccST.py文件,然后将其拷贝到上面第二节创建的mrcc-2022目录下。
cd 到mrcc-2022目录下,赋予这两个文件可执行权限:
  1. chmod +x genmrcc.sh
  2. chmod +x mrccST.py
复制代码

b) 产生输入文件
准备一个xyz文件, 比如可以通过Mulitwfn转换Gaussian优化好的log文件,这里以附件中BN分子BN.xyz文件为例:
  1. genmrcc.sh -m 10GB -n 16  -p tddft -d b2plyp -D "scs-adc(2)" -b def2-SVP -S 4 -T 3  BN.xyz
复制代码
各个选项的含义如下:
  • -m 设内存
  • -n 设并行核数,并行效率见下面评测
  • -p 设置任务类型,常见有tddft,tda,scs-cc2, "scs-adc(2)"
  • -b 设置基组
  • -d 设置泛函
  • -D 如果使用了双杂化泛函,这里可以设置二阶项,包括cis(d)和adc(2)以及他们的scs/soc版本
  • -S 设置单重态数量,注意这里包括了基态,所以-S 4 只算了三个单重激发态
  • -T 设置三重态数量
运行成功后会产生一个名为BN_b2plyp_TD_scsadc2的文件夹
文件夹内包含输入文件MINP和运行脚本runmrcc.sh脚本
有格外需求可以自行修改MINP文件
本脚本支持*.xyz批量产生输入文件
c) 开始计算
单机的话直接运行:
  1. sh BN_b2plyp_TD_scsadc2/runmrcc.sh
复制代码
就可以开始计算
如果是有作业调度系统,上面这行命令加到提交脚本中即可。
d) 结果处理
运行完成后BN_b2plyp_TD_scsadc2目录中会产生一堆文件,中有用的是:
runmrcc.out文件,包含了计算的结果
runtime文件,包含了本次运行的耗时,单位是秒
运行脚本
  1. mrccST.py BN_b2plyp_TD_scsadc2
复制代码
可以直接提取该目录中计算得到的单三线态能级。
也可以同时提取多个目录下的计算结果比如:
  1. mrccST.py *
复制代码
可以同时提取所有目录下的结果
如果激发态的顺序不对,该脚本会重新按能量从低到高排序并给出提示
e) 再举两个常见的计算例子
  1. genmrcc.sh -m 20GB -n 16  -p "SCS-ADC(2)" -b "def2-SV(P)" -S 4 -T 3  -R 3 DABNA.xyz
复制代码
进行SCS-ADC(2)计算,使用def2-SV(P)基组,注意方法和基组有括号所以需要引号
-R 3的意思是使用3号加速方案, 含义见下面的介绍
  1. genmrcc.sh -m 20GB -n 16  -p SCS-CC2 -b cc-pvtz -S 4 -T 3 -s _ccpVTZ DABNA.xyz
复制代码
进行SCS-CC2计算,使用cc-pVTZ基组,
并且在产生的文件夹的名字后面加上_ccpVTZ
f) 查看帮助
忘了命令用法直接输入
  1. genmrcc.sh
复制代码
查看帮助如下
mrcchelp.png

5.并行效率
pe.png
这是一个SCS-CC2的任务, 可以看到运行速度-8核上升明显,8-32缓慢上升, 之后开始下降。

6.加速和精度(一)
mrcc利用了多种令人眼花缭乱的加速手段,包括:
  • cis模块的强制的RI加速,因为是强制的就无需多说。
  • reduce-cost技术,包括local fiting domains 以及 state-averaged NOs and NAFs,在MINP中主要通过redcost_exc选项控制,还包括一堆子选项,在genmrcc.sh中通过-R选项控制。
  • local correlation methods,在MINP中主要通过localcc选项控制,还包括一堆子选项,在genmrcc.sh中通过-L选项设置。
  • Multi-level local correlation methods,有点像ONIOM,本帖不涉及到。有兴趣的看手册中corembed选项。
  • fmm加速SCF收敛,由于SCF本身算的很快,所以这个方法我没有研究,有兴趣的同学自行尝试(参考手册中的fmm选项)
本贴测试了各种redcost_ex和localcc设定带来的误差。测试选择了5种不同特点的激发态体系,包括LE,MR,ICT,TICT,CT-like体系
以不开加速为参考,开启各种加速组合后取上述6个体系中单三线态最大的误差,结果如下图:
LRerror.png
横坐标标签的说明: R5Lon对应于脚本中的genmrcc.sh -R 5 -L on, 对应于MINP中的redcost_exc=5   localcc=on, 其他的类推。
从图中可以看到大部分的近似都没法用,首先localcc是肯定要关掉的,其次redcost_exc 只能选3 或者8(具体含义请自行查手册)
这么多加速不能用的原因是很大一部分不是针对TDDFT开发的并且不适合用三重态,如果我们只考虑SCS-CC2的单重态的话,那么很多加速选项效果都还可以接受:
s1error.png

7.加速和精度(二)
这一小节研究各种加速手段带来的速度提升和精度损失的对比。
除了mrcc内置的加速方法以外,我们还可以用其他方法加速,包括:
  • 删除结构中不参与激发的基团
  • 使用小基组
  • 修改CC收敛限
  • 减少算的激发态数目

这么进行了一系列采用各种加速组合的SCS-CC2计算,分子是DABNA,测试结果见下图:
error_time.png
纵坐标标签的说明: R3 C5 对应于脚本中的 -R 3 -C 5, 对应于MINP中的redcost_exc=3   cctol=5
讨论:
  • 把CC收敛标准从默认的6改到5对精度几乎没有影响,速度可以提升1.5倍
  • 使用R3或者R8产生的误差小于0.01eV,速度可以提升1.5倍
  • R3/8和C5连用速度可以提升1.5*1.5=2.25倍左右
  • C4不可接受,容易收敛到错误的态从而产生巨大误差(同理,不排除C5有低概率遇到这个风险)
  • def2-TZVP比cc-pVTZ快一点,大体系必须用TZ基组的时候可以考虑。
  • cc-pVDZ比cc-pVTZ快8.5倍左右,C5R3双加速后快到20倍,误差也不算大,对于大体系强烈推荐
  • def2-SVP系列相比cc-pVDZ没有优势,不推荐
  • ΔEST对基组和R3/C5的敏感度更低
  • 使用adcc在同级别下算一个单重态的耗时是85000秒左右, 这样算ST大概是mrcc耗时的5倍,这就是ri加速的功劳,另外如果开启R3C5,  则mrcc的耗时大概只有adcc的1/10。看来mrcc才是真的c。

8.激发态数量对计算速度的影响
nst.png
这个是DABNA在cc-pVDZ下算不同数量的激发态(单三态同时算)的耗时, 可以看到基本上是一个线性关系
另外在本次测试中激发态的数量对第一激发态的能量无影响
这是因为这个分子比较简单,根据我的经验,如果分子比较复杂,HOMO或者LUMO有近简并的情况:
比如二维的大共轭体系(比如稠环芳烃),或者是分子中存在多个共轭片段但是他们之间耦合又很弱(比如TICT分子)
那么容易出现态的交叉(CIS的第一激发态变成CC2的第二激发态)
这时候就需要多算一些态确保第一激发态没有问题
另外对对于中等体系,可以先用cc-pVDZ/C5/R3的超快方法多算几个态。确定没有问题后,切换到更精确的方法少算几个态

9. benchmark
复习一下, mrcc的cis模块可以计算激发态的方法有:
ADC(2), CC2, CIS(D), DIS(D∞) 以及他们的SCS/SOC 版本
不含MetaGGA的泛函的TDDFT, TDA
不含MetaGGA的双杂化泛函的TDDFT, TDA版本,二阶项可以是ADC(2)或CIS(D),以及它们的SCS/SOS版本(算一下排列组合可以发现,一个TD-DH-DFT有2^3=8个子版本)这么多方法具体表现如何有必要做个评测,下面对5个代表性体系做了评测:
注意:
1)双杂化泛函中的二阶项虽然可以加随意使用SCS/SOS版本,但是这种做法是否合理存疑,按照坛友hebrewsnabla的说法,这种做法相当于产生了一个自定义泛函,或者是对原始泛函进行了一个随意的修改,这种修改的合理性没有研究过,如果被审稿人质疑,应该不会有好的办法进行回应。所以虽然这里测试用了SCS/SOC的版本,大家在实际上发表文章的时候要慎用。

2)XYG3的TDDFT版本不是XYG3的官方开发的,结果不对

A) MR-TADF分子
MR.png
这类分子的具有双激发特征,导致明明空穴电子重叠很大,ΔEST却很小
DABAN.png
  • ADC2, CC2,  DIS(D∞) 给出类似的结果,SCS/SOC会提高激发能并且略微降低ΔEST
  • TDDFT普遍高估的ΔEST,因为HF%小的会低估T1,而HF%大的会高估S1
  • TDA比TDDFT给出更高的激发能
  • 双杂化中ADC(2)的表现比CIS(D)稳定,而CIS(D)中TDA又比TDDFT稳定,所以如果用ORCA算TD-双杂化,建议用TDA,因为ORCA只有CIS(D)版的双杂化
  • TD_XYG3 比较严重的低估了S态和T态,但是该技术的实现被XYG3开发组的官方否认了,据他们说

B) LE分子
C10m.png
普通的线性共轭系统,妥妥的LE态,据说这玩意也有双激发
C10.png

C) ICT分子
PBNm.png
典型的平面共轭D-π-A体系,分子内电荷转移激发态,第一激发态通常同时具有CT和LE特征 PBN.png TD-DH-DFT + CIS(D)不稳定
高HF%的泛函TDDFT算三重态去激发严重

D) CT like分子
BPm.png
二维共轭稠环分子有所谓的charge transfer like 态
BP.png
高HF%的泛函TDDFT算三重态去激发严重
TD-DH-DFT + CIS(D)容易出错

E) TICT 分子
PXZBNm.png
D-A垂直,HOMO-LUMO完全分离,第一激发态在纯CT态和纯LE态之间二选一

PXZBN.png

最后感谢网友 hebrewsnabla提供的关于双杂化泛函和XYG3的宝贵意见




genmrcc.sh

5.74 KB, 下载次数 Times of downloads: 44

mrccST.py

2.54 KB, 下载次数 Times of downloads: 42

BN.xyz

1.25 KB, 下载次数 Times of downloads: 33

评分 Rate

参与人数
Participants 15
威望 +2 eV +68 收起 理由
Reason
Thornhill + 5 谢谢
anlancx + 5 GJ!
hebrewsnabla + 3 赞!
暖空 + 5 赞!
LittlePupil + 5 谢谢分享
biogon + 5
hdhxx123 + 5 GJ!
冰释之川 + 5 とてもいい!
心向暖阳 + 5 tql
Y30181009 + 5 赞!
snljty + 5 牛!
liyuanhe211 + 5 牛!
丁越 + 5 大神都是在凌晨才开始工作的么
zsu007 + 5 赞!
sobereva + 2

查看全部评分 View all ratings

91

帖子

0

威望

1996

eV
积分
2087

Level 5 (御坂)

发表于 Post on 2022-4-29 06:08:40 | 显示全部楼层 Show all
高情商:强制RI加速
低情商:没写积分变换

评分 Rate

参与人数
Participants 2
eV +10 收起 理由
Reason
Thornhill + 5 谢谢
ChrisZheng + 5 233333

查看全部评分 View all ratings

13

帖子

0

威望

1174

eV
积分
1187

Level 4 (黑子)

发表于 Post on 2022-4-29 08:21:26 | 显示全部楼层 Show all
请问大神,同等计算水平下,如ADC(2)。Turbomole, ORCA, MRCC 哪款软件的计算耗时更少?有没有做过测试?

1061

帖子

16

威望

5780

eV
积分
7161

Level 6 (一方通行)

計算化学の社畜

发表于 Post on 2022-4-29 09:37:59 | 显示全部楼层 Show all
钟叔每次发新帖,总是给大家带来重磅惊喜
Stand on the shoulders of giants

68

帖子

0

威望

1605

eV
积分
1673

Level 5 (御坂)

发表于 Post on 2022-4-29 09:47:58 | 显示全部楼层 Show all
hlma_ustc 发表于 2022-4-29 08:21
请问大神,同等计算水平下,如ADC(2)。Turbomole, ORCA, MRCC 哪款软件的计算耗时更少?有没有做过测试?

turbomole要版权的,而且折腾比较麻烦
ORCA的ADC(2)不能三重态的

68

帖子

0

威望

1605

eV
积分
1673

Level 5 (御坂)

发表于 Post on 2022-4-29 09:54:36 | 显示全部楼层 Show all
课代表做一下记录
genmrcc.sh -m 20GB -n 16  -p "SCS-ADC(2)" -b "ccpvtz" -S 4 -T 3  -R 3 -C 5 DABNA.xyz
genmrcc.sh -m 20GB -n 16  -p "SCS-ADC(2)" -b "def2-TZVP" -S 4 -T 3  -R 3 -C 5 DABNA.xyz

对于EST来说是性价比比较高的

1158

帖子

1

威望

2797

eV
积分
3975

Level 5 (御坂)

发表于 Post on 2022-4-29 10:29:37 | 显示全部楼层 Show all
hlma_ustc 发表于 2022-4-29 08:21
请问大神,同等计算水平下,如ADC(2)。Turbomole, ORCA, MRCC 哪款软件的计算耗时更少?有没有做过测试?

单纯的ADC(2)没必要用,别的要看情况

7

帖子

0

威望

141

eV
积分
148

Level 2 能力者

发表于 Post on 2022-4-29 16:46:12 | 显示全部楼层 Show all
请问一下在有MINP的路径下运行MRCC,显示输入文件不存在该怎么办?
202204291645323722..png

105

帖子

0

威望

792

eV
积分
897

Level 4 (黑子)

发表于 Post on 2022-7-18 14:11:12 | 显示全部楼层 Show all
签名回复之后一直收不到确认邮件,哪位大佬能给个下载链接吗?

604

帖子

1

威望

4887

eV
积分
5511

Level 6 (一方通行)

发表于 Post on 2022-7-18 14:24:40 | 显示全部楼层 Show all
本帖最后由 hebrewsnabla 于 2022-7-18 14:26 编辑
双杂化泛函中的二阶项虽然可以加随意使用SCS/SOS版本,但是这种做法是否合理存疑,按照坛友hebrewsnabla的说法,这种做法相当于产生了一个自定义泛函,或者是对原始泛函进行了一个随意的修改,这种修改的合理性没有研究过,如果被审稿人质疑,应该不会有好的办法进行回应。所以虽然这里测试用了SCS/SOC的版本,大家在实际上发表文章的时候要慎用。

补充一下,并不是说双杂化泛函的SCS/SOS版本不好(像DSD-PBEP86本身就是以SCS的方式构建,XYGJ-OS本身就是以SOS的方式构建的),而是说MRCC程序的SCS/SOS选项是给SCS/SOS-MP2用的,或者用于自定义SCS/SOS-双杂化,并不是像ADC/CC2那样对于每个泛函都可以开启(换着玩都行)的。对于用户来说,使用双杂化泛函就使用其本来的定义就好(可能是SCS的,可能是SOS的,也可能都不是),不需要自己指定SCS/SOS参数。

604

帖子

1

威望

4887

eV
积分
5511

Level 6 (一方通行)

发表于 Post on 2022-7-18 14:29:56 | 显示全部楼层 Show all
anlancx 发表于 2022-7-18 14:11
签名回复之后一直收不到确认邮件,哪位大佬能给个下载链接吗?

我发送之后两分钟就收到了,也许现在他们没上班吧。

105

帖子

0

威望

792

eV
积分
897

Level 4 (黑子)

发表于 Post on 2022-7-18 17:22:41 | 显示全部楼层 Show all
hebrewsnabla 发表于 2022-7-18 14:29
我发送之后两分钟就收到了,也许现在他们没上班吧。

老师 能发一份给我吗 我等了好久都没等到。。。819325400@qq.com

604

帖子

1

威望

4887

eV
积分
5511

Level 6 (一方通行)

发表于 Post on 2022-7-18 19:29:43 | 显示全部楼层 Show all
anlancx 发表于 2022-7-18 17:22
老师 能发一份给我吗 我等了好久都没等到。。。

钟老师已经给你提供了啊,你再仔细看看上面的“光速启动”部分。

看不出来就Ctrl+A

105

帖子

0

威望

792

eV
积分
897

Level 4 (黑子)

发表于 Post on 2022-7-19 00:31:32 | 显示全部楼层 Show all
hebrewsnabla 发表于 2022-7-18 19:29
钟老师已经给你提供了啊,你再仔细看看上面的“光速启动”部分。

看不出来就Ctrl+A

看到啦!谢谢老师!

105

帖子

0

威望

792

eV
积分
897

Level 4 (黑子)

发表于 Post on 2022-7-19 00:44:33 | 显示全部楼层 Show all
hebrewsnabla 发表于 2022-7-18 19:29
钟老师已经给你提供了啊,你再仔细看看上面的“光速启动”部分。

看不出来就Ctrl+A

老师,这里用的初始结构,是正常优化S0得到的吗?有没有什么讲究,比如用什么方法得到的初始结构比较好?

本版积分规则 Credits rule

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

GMT+8, 2023-2-2 22:12 , Processed in 0.359760 second(s), 26 queries .

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