计算化学公社

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

[ORCA] 绕过 ORCA gCP(DFT/SV(P)) 校正Bug的方案

[复制链接 Copy URL]

3097

帖子

29

威望

1万

eV
积分
17098

Level 6 (一方通行)

本帖最后由 liyuanhe211 于 2016-12-29 23:44 编辑

在Sob老师的文章《大体系弱相互作用计算的解决之道》(sobereva.com/214)中提到在ORCA中使用gCP可以实惠的减少小基组的BSSE问题,但ORCA在使用def2-SV(P)基组优化时,对应的GCP(DFT/SV(P)) 实现不正确:

下述几种写法均会在优化的不同阶段(能量、梯度、Hessian)出各种各样的错误(注意有时可以运行,但结果不对),其根本原因在于ORCA向子程序 otool_gcp 发送指令时未做合适的转义,使得命令行中存在“DFT/SV(P)”,此括号处理的不合适且不统一,造成干扰:
  1. GCP(DFT/SV(P))
  2. %method GCPMETHOD "DFT/SV(P)" end
  3. %method GCPMETHOD "'DFT/SV(P)'" end
  4. %method GCPMETHOD "DFT/SV\(P\)" end
  5. %method GCPMETHOD ""DFT/SV(P)"" end
复制代码

为解决此问题写了一个简单的C++脚本,绕过了这个 Bug。代码仅在 Linux 的 ORCA 3.0.3 版本上测试过,在 CentOS 6.2 上用 g++ 4.4.7 编译好的程序见附件。
使用方法如下:

1. 将压缩包内的两个文件(otool_gcp,otool_gcp_original)覆盖到含ORCA主程序的安装目录。      
       (otool_gcp 是本脚本,otool_gcp_original 是原ORCA程序的 otool_gcp 工具,脚本的原理实际上是接管了原来向 otool_gcp 发送指令的任务)

2. 输入文件中的GCPMETHOD部分用 “9” 替换 “(” ,用 “0” 替换 “)”。      

        如下即为H2O分子优化的相关输入文件,其中用SV9P0代替了SV(P)

  1. %maxcore 3622
  2. %base "H2O"
  3. %scf
  4.     Convergence VeryTight
  5. end
  6. %method
  7.     DoGCP true
  8.     GCPMETHOD "DFT/SV9P0"
  9. end
  10. !  Opt Freq RI BLYP D3BJ def2-SV(P) def2-SVP/J Grid5 FinalGrid6

  11. * xyz 0 1
  12. O                 -1.86695273   -0.40772532    0.00000000
  13. H                 -0.90695273   -0.40772532    0.00000000
  14. H                 -2.18740731    0.49721052    0.00000000
  15. *
复制代码


3. 正常运行该输入文件即可。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------
从输出可见,运行结果(左侧)与用其他特殊方法(右侧)*运行的结果一致(有一定的数值噪音)
Energy

Gradient

得到的几何构型


Hessian:




*该特殊方法由钟成老师提供,也能绕过这个Bug,效果一样,但操作起来复杂些。步骤如下,共7步:
  1. 在输入中写入GCP(DFT/SV(P)),运行会如期出错
  2. 在临时文件中找到以".gcp.in.tmp"结尾的文件,假设为A.gcp.in.tmp
  3. 运行“otool_gcp A.gcp.in.tmp -level "DFT/SV(P)"”(此处otool_gcp为原版)
  4. 自输出中可找到4个参数:sigma 0.2424。。。beta 1.4078
  5.         (以上4步获得的参数也可通过阅读Grimme的gCP程序源代码或阅读原文得到)
  6. 将这四个参数用 nano ~/.gcppar.$HOSTNAME 写入文件,文件中内容为 "sv(p) 0.2424 1.2371 0.6076 1.4078",不含引号
  7. 输入文件类似上文提到的写法,但 GCPMETHOD 后的方法留空,写为 %method DoGCP true GCPMETHOD "" end
  8. 运行此输入即可
复制代码



CentOS 6.2, ORCA 3.0.3 中测试过的可执行文件及源码
ORCA_otools_gcp_warp.zip (642.07 KB, 下载次数 Times of downloads: 5)

Windows VS2010 编译但未测试过的可执行文件:
warp_otool_gcp(windows, untested).zip (418.53 KB, 下载次数 Times of downloads: 7)





评分 Rate

参与人数
Participants 6
eV +33 收起 理由
Reason
jamesboi + 5 谢谢
teller3531 + 5 牛!
sobereva + 10
我本是个娃娃 + 3 你太可爱
冰释之川 + 5 不知道下一个版本的ORCA会不会修正这个BUG
zsu007 + 5 GJ!

查看全部评分 View all ratings

908

帖子

37

威望

5435

eV
积分
7083

Level 6 (一方通行)

2#
发表于 Post on 2016-12-29 23:32:00 | 只看该作者 Only view this author
我去 你这个办法更方便。厉害了,

3097

帖子

29

威望

1万

eV
积分
17098

Level 6 (一方通行)

3#
 楼主 Author| 发表于 Post on 2016-12-29 23:58:16 | 只看该作者 Only view this author
ggdh 发表于 2016-12-29 23:32
我去 你这个办法更方便。厉害了,

噫,也是受了启发才想出来

2489

帖子

11

威望

6979

eV
积分
9688

Level 6 (一方通行)

4#
发表于 Post on 2016-12-30 09:38:31 | 只看该作者 Only view this author
李大博士真棒!

201

帖子

0

威望

3555

eV
积分
3756

Level 5 (御坂)

5#
发表于 Post on 2016-12-31 14:56:22 | 只看该作者 Only view this author
谢谢分享

186

帖子

0

威望

4126

eV
积分
4312

Level 6 (一方通行)

6#
发表于 Post on 2017-1-2 14:59:52 | 只看该作者 Only view this author
建议报告bug让他们改啊

3097

帖子

29

威望

1万

eV
积分
17098

Level 6 (一方通行)

7#
 楼主 Author| 发表于 Post on 2017-1-2 17:57:39 | 只看该作者 Only view this author
plus 发表于 2017-1-2 14:59
建议报告bug让他们改啊

早就做了

本版积分规则 Credits rule

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

GMT+8, 2025-8-16 08:59 , Processed in 0.399370 second(s), 24 queries , Gzip On.

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