计算化学公社

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

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

  [复制链接 Copy URL]

903

帖子

37

威望

5324

eV
积分
6967

Level 6 (一方通行)

本帖最后由 ggdh 于 2023-2-20 15:03 编辑

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) 找到绿色通道,并按照第二步的说明下载安装    链接:pan.baidu.com/s/10ehGEMJxWBBBh_wcv2e2zw 提取码:59it
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
复制代码
查看结果如下:


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
复制代码
查看帮助如下


5.并行效率

这是一个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个体系中单三线态最大的误差,结果如下图:

横坐标标签的说明: R5Lon对应于脚本中的genmrcc.sh -R 5 -L on, 对应于MINP中的redcost_exc=5   localcc=on, 其他的类推。
从图中可以看到大部分的近似都没法用,首先localcc是肯定要关掉的,其次redcost_exc 只能选3 或者8(具体含义请自行查手册)
这么多加速不能用的原因是很大一部分不是针对TDDFT开发的并且不适合用三重态,如果我们只考虑SCS-CC2的单重态的话,那么很多加速选项效果都还可以接受:


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

这么进行了一系列采用各种加速组合的SCS-CC2计算,分子是DABNA,测试结果见下图:

纵坐标标签的说明: 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.激发态数量对计算速度的影响

这个是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分子

这类分子的具有双激发特征,导致明明空穴电子重叠很大,ΔEST却很小
  • 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分子

普通的线性共轭系统,妥妥的LE态,据说这玩意也有双激发


C) ICT分子

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

D) CT like分子

二维共轭稠环分子有所谓的charge transfer like 态

高HF%的泛函TDDFT算三重态去激发严重
TD-DH-DFT + CIS(D)容易出错

E) TICT 分子

D-A垂直,HOMO-LUMO完全分离,第一激发态在纯CT态和纯LE态之间二选一



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




genmrcc.sh

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

mrccST.py

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

BN.xyz

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

评分 Rate

参与人数
Participants 16
威望 +2 eV +73 收起 理由
Reason
ymygca + 5 好物!
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

57

帖子

0

威望

2032

eV
积分
2089

Level 5 (御坂)

40#
发表于 Post on 5 day ago | 只看该作者 Only view this author
chunlinxxx 发表于 2024-11-22 06:14
老师,我选用CC-PVTZ遇到如下错误,但是def2类基组能正常运行,这是什么原因呢
//
Basis set cc-pvtz for ...

已解决。‘ccpvtz’中间有个dash符号: '-'

57

帖子

0

威望

2032

eV
积分
2089

Level 5 (御坂)

39#
发表于 Post on 5 day ago | 只看该作者 Only view this author
老师,我选用CC-PVTZ遇到如下错误,但是def2类基组能正常运行,这是什么原因呢
//
Basis set cc-pvtz for atom 1 (C) is not found!

Fatal error in exec integ.
Program will stop.
//

5

帖子

0

威望

65

eV
积分
70

Level 2 能力者

38#
发表于 Post on 2024-11-8 21:09:05 | 只看该作者 Only view this author
anlancx 发表于 2022-7-19 10:22
Out-of-core algoritm for density matrix construction!!!
Out-of-core algoritm is available only wit ...

我也想知道怎么解决?

4

帖子

0

威望

143

eV
积分
147

Level 2 能力者

37#
发表于 Post on 2024-9-23 20:37:36 | 只看该作者 Only view this author
请问老师,SCS-CC2计算s1结构的激发能,得到的runmrcc.out结果文件,看s1态极小点能量应该在哪看?

145

帖子

0

威望

1332

eV
积分
1477

Level 4 (黑子)

36#
发表于 Post on 2024-8-19 18:31:54 | 只看该作者 Only view this author
ggdh 发表于 2024-5-29 15:13
要用turbomol 或者orca

我看他们论坛上说是可以 加一个molden=on关键词就有MOLDEN_NO文件

903

帖子

37

威望

5324

eV
积分
6967

Level 6 (一方通行)

35#
 楼主 Author| 发表于 Post on 2024-5-29 15:13:42 | 只看该作者 Only view this author
dsss 发表于 2024-4-16 10:58
请问MRCC有办法得到激发态跃迁的信息吗?比如说激发态跃迁密度差或者NTO之类的

要用turbomol 或者orca

2

帖子

0

威望

432

eV
积分
434

Level 3 能力者

34#
发表于 Post on 2024-4-16 10:58:47 | 只看该作者 Only view this author
请问MRCC有办法得到激发态跃迁的信息吗?比如说激发态跃迁密度差或者NTO之类的

8

帖子

0

威望

109

eV
积分
117

Level 2 能力者

33#
发表于 Post on 2023-7-13 17:17:59 | 只看该作者 Only view this author
xuhj199508 发表于 2023-7-13 17:14
必须要kexue上网,验证码才能出来。

好吧,但是不会嘛。(大哥可以分享一下不

104

帖子

0

威望

2871

eV
积分
2975

Level 5 (御坂)

Yukikaze

32#
发表于 Post on 2023-7-13 17:14:53 | 只看该作者 Only view this author
gzu401 发表于 2023-7-13 17:05
captcha出不来,LZ或者哪位前辈可以分享一下程序不

必须要kexue上网,验证码才能出来。

8

帖子

0

威望

109

eV
积分
117

Level 2 能力者

31#
发表于 Post on 2023-7-13 17:05:46 | 只看该作者 Only view this author
captcha出不来,LZ或者哪位前辈可以分享一下程序不

3

帖子

0

威望

21

eV
积分
24

Level 1 能力者

30#
发表于 Post on 2023-6-16 09:50:46 | 只看该作者 Only view this author
请问如果算MR-TADF体系的话,选择cialg=direct会有比较大的偏差吗?我在算T1能量的时候遇到了这个问题:
https://www.mrcc.hu/index.php/fo ... scs-cc2-calculation

13

帖子

0

威望

716

eV
积分
729

Level 4 (黑子)

29#
发表于 Post on 2023-2-20 14:24:24 | 只看该作者 Only view this author
注册账号,captcha这一栏验证码不显示怎么办啊? 是不让人注册了吗?
百度云的链接也失效了,求老师更新

202302201422548599..png (4.14 KB, 下载次数 Times of downloads: 46)

202302201422548599..png

104

帖子

0

威望

2871

eV
积分
2975

Level 5 (御坂)

Yukikaze

28#
发表于 Post on 2022-11-14 18:24:49 | 只看该作者 Only view this author
xuhj199508 发表于 2022-11-14 11:32
钟老师好,我在用pbs队列提交mrcc计算时遇到点问题想请教一下:
我按照帖子里的方法安装了MRCC并添加了环 ...

已解决,我自己犯蠢了,pbs脚本里忘记写cd $PBS_O_WORKDIR了

104

帖子

0

威望

2871

eV
积分
2975

Level 5 (御坂)

Yukikaze

27#
发表于 Post on 2022-11-14 11:32:22 | 只看该作者 Only view this author
钟老师好,我在用pbs队列提交mrcc计算时遇到点问题想请教一下:
我按照帖子里的方法安装了MRCC并添加了环境变量,然后写了run.sh和a.pbs准备批量提交任务,脚本内容如下:
run.sh:
#!/bin/bash
for inf in `ls *.xyz`
        do
        name=${inf%.*}
        file_path=${name}_SCS-CC2
        sh genmrcc.sh -m 240GB -n 16 -p SCS-CC2 -b cc-pVDZ -S 3 -T 2 -C 5 -R 3 ${inf}
        cp a.pbs ./${file_path}/${name}.pbs
        cd ./${file_path}
        echo "dmrcc MINP | tee runmrcc.out" >> ${name}.pbs
       
        qsub ${name}.pbs
        echo Running ${name}_SCS-CC2
        cd -
        rm -rf ${inf}
        rm -rf SCS-CC2.temp
        echo
        done

a.pbs:
#!/bin/bash
#PBS -N MRCC
#PBS -l nodes=1:ppn=16
#PBS -j oe
#PBS -l walltime=960:00:00
#PBS -q kirito

export PATH=$PATH:/home/xuhj/MRCC-2022
export OMP_NUM_THREADS=16
export MKL_NUM_THREADS=16
export OMP_PLACES=cores
export OMP_PROC_BIND=spread,close


这个脚本之前在租用的超算上可以用slurm正常提交,但我改成pbs后就一直报错: Input file does not exist!。然后我试了下,进入到子节点可以用dmrcc命令跑单机运算,应该还是pbs脚本的问题,但我不知道应该修改哪里,请老师帮忙看下可以吗?

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

GMT+8, 2024-11-27 01:04 , Processed in 0.231852 second(s), 32 queries , Gzip On.

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