计算化学公社

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

[辅助/分析程序] 使用MOKIT做多参考计算

  [复制链接 Copy URL]

3806

帖子

4

威望

7994

eV
积分
11880

Level 6 (一方通行)

MOKIT开发者

跳转到指定楼层 Go to specific reply
楼主
本帖最后由 zjxitcc 于 2021-3-24 10:32 编辑

----- 注意:该贴已过时,最新介绍请看https://gitlab.com/jxzou/mokit -----

2020-08-08 更新:增加了 轨道转化程序 的Windows可执行文件,解压即可用;修复了传递CASSCF force关键词的bug;支持带点电荷的多参考计算。见https://gitlab.com/jxzou/mokit
2020-06-28 更新:增加做多参考计算的接口程序AutoMR;增加manual。

AutoMR利用了各个传轨道的小程序,外加一些自写的接口,可以调用Gaussian, GAMESS, PySCF, OpenMolcas和ORCA等软件做多参考计算,做到像算HF和DFT一样算多参考体系(黑箱化)。目前支持的方法有GVB, CASCI, CASSCF, NEVPT2, CASPT2五种,可以在一个程序里做完CASSCF,去另一个程序里做NEVPT2,都由AutoMR自动调用。用户可以不指定活性空间大小,由程序自动确定,亦可人为指定。AutoMR的输入文件是模仿高斯的,学习门槛接近于零。举几个例子

例1. N2的CASSCF(6,6)计算,1.15A,文件极简
  1. %mem=16GB
  2. %nprocshared=16
  3. #p CASSCF(6,6)/cc-pVQZ

  4. mokit{}

  5. 0 1
  6. N   0.0   0.0   0.0
  7. N   0.0   0.0   1.15
复制代码


例2. N2的CASSCF(6,6)-NEVPT2计算,4.0 A,用户提供算好的UHF任务.fchk文件(注意这不是简单的UHF,必须使用片段组合波函数构建初猜)
  1. %mem=4GB
  2. %nprocshared=4
  3. #p NEVPT2/cc-pVQZ

  4. mokit{readuhf='N2_cc-pVQZ_6D10F_4.0_uhf.fchk',ist=1}
复制代码


以上例子可以在解压后examples/automr/目录下找到。

运行的话,执行automr xxx.gjf >& xxx.out即可。默认会输出到屏幕上,建议使用重定向导入xxx.out文件里。输出内容示例

  1. ...
  2. Enter subroutine do_gvb...
  3. nbf =  140    nif =  140
  4. doubly_occ=    2    npair=    5    nopen=    0    nvir=  128
  5. GVB(5)

  6. E(GVB) =      -108.70259326 a.u.
  7. Leave subroutine do_gvb at Mon Jun 29 09:22:23 2020


  8. Enter subroutine do_cas...
  9. CASSCF(6,6)
  10. doubly_occ=    4    nvir=  130
  11. No. of active alpha/beta e = 3/3

  12. E(CASCI)  =      -108.79883240 a.u.
  13. E(CASSCF) =      -108.80040252 a.u.
  14. Leave subroutine do_cas at Mon Jun 29 09:22:29 2020


  15. Enter subroutine do_mrpt2...
  16. CASSCF-NEVPT2 based on optimized CASSCF orbitals.
  17. Frozen_core = F

  18. E_corr(SC-NEVPT2) =        -0.28789999 a.u.
  19. E(SC-NEVPT2)      =      -109.08830252 a.u.
  20. Leave subroutine do_mrpt2 at Mon Jun 29 09:22:32 2020

  21. Normal termination of AutoMR at Mon Jun 29 09:22:32 2020
复制代码

更多详情请阅读pdf手册。程序肯定还有不少不足之处甚至bug,希望感兴趣的小伙伴使用后提建议~


=================以下为第一次发布时的介绍(略有修改)========================

MOKIT是笔者近两三年科研过程中写的一些实用性程序的一个汇总,全称Molecular Orbital KIT,起名模仿自VASPKIT。该程序开源免费,现托管于GITLAB上,欢迎大家使用(https://gitlab.com/jxzou/mokit)。在使用过程中碰到问题也可在此贴下留言(坑爹延期中,不一定回)。

该程序目前的主要功能是可以方便地在不同程序间传轨道,分为若干个独立的小程序,举几个例子
fch2inp     : 从Gaussian .fchk文件产生GAMESS .inp文件(内含分子轨道)
fch2inporb: 从Gaussian .fchk文件产生Molcas/OpenMolcas .input文件和.INPORB文件(内含分子轨道)
fch2mkl    : 从Gaussian .fchk文件产生ORCA .inp文件和 .mkl文件(内含分子轨道)
fch2py     : 在PySCF输入文件中读取Gaussian .fchk内的轨道
py2fch     : 将PySCF算好的轨道写入指定的.fchk文件
dat2fch    : 将GAMESS .dat文件中的轨道传给指定的.fchk文件

像fch2inp, fch2inporb和fch2mkl这三个小程序产生的输入文件里,写好了坐标和基组(支持赝势)和一些简单的关键词。尤其是赝势部分,自己一个个软件去看说明书费时费力还容易出错,用这些小程序可以节约不少时间。目前所有的转换程序可以总结为下图



这些小程序考虑了传轨道时高角动量函数的顺序问题(5D, 6D, 最高到H角动量),重叠积分对角元数值是否为1等等系列问题,可以说是目前比较好的传轨道程序。对于HF, CASCI, CASSCF等常见波函数方法,轨道从一个程序到另一个程序,能量损失一般小于10^-6 a.u.,这相当于立即收敛(注:各个程序的DFT不尽相同,不严格遵循此标准)。有了这些功能,用户可以充分利用各个程序最强的功能,例如

高斯算UHF(自旋极化、片段组合等高难度UHF) -> UNO (高斯,PySCF或OpenMolcas均可) -> CASSCF (PySCF或OpenMolcas) -> NEVPT2(PySCF) 或 CASPT2(OpenMolcas)

而不用到了另一个程序里去纠结输入文件怎么写、收敛的解对不对等问题(ORCA和OpenMolcas的UHF与高斯相比还是略。。。)。高角动量基函数的处理对于过渡金属体系还是比较有必要的,若没考虑有时候会影响传轨道后不收敛或收敛至不同的解上。

-----Quick Start------
用户要求:熟悉常规量化计算(新手应先学习如何使用高斯)

编译器/库 要求:ifort或gfortran,MKL数学库,f2py(推荐安装Anaconda Python3)

安装:下载后解压,进入src目录,执行 make all 即可。

环境变量:示例如下,请按照自己实际解压路径修改
export MOKIT_ROOT=/home/$USER/software/mokit
export PATH=$MOKIT_ROOT/bin:$PATH
export PYTHONPATH=$MOKIT_ROOT/lib:$PYTHONPATH

更新常用软件路径:打开program.info文件,根据自己机子的实际情况修改软件路径,以供AutoMR调用。

独立编译某个小程序:以fch2inp为例,进入src目录执行
make fch2inp
即可。一些组件并不需要MKL数学库和f2py。

使用:直接运行fch2inp屏幕会输出
ERROR in subroutine fch2inp: wrong command line arguments!
Example 1 (R(O)HF, CAS): fch2inp a.fch
Example 2 (UHF)             : fch2inp a.fch -uhf
Example 3 (GVB)             : fch2inp a.fch -gvb [npair]
Example 4 (ROGVB)        : fch2inp a.fch -gvb [npair] -open [nopen]

提示该如何写命令行参数,一目了然。更多详细内容请移步gitlab查看README.md及examples/目录。

注意事项:要在高斯中写nosymm int=nobasistransform关键词。至于球谐函数/Cartesian函数问题请参见README.md。

目前还是初步版本,很多代码功能未能详细介绍,希望在下一个大版本里可以给大家提供一个轻松做多参考计算的实用工具。


评分 Rate

参与人数
Participants 14
eV +69 收起 理由
Reason
卡开发发 + 5 好物!
qiqi7 + 5 好物!
QuantumicGuy + 5 好物!
ggdh + 5 谢谢
ZZU_SCU + 5
元气蛋 + 5 好物!
Freeman + 5
喵星大佬 + 5 好物!
clwater + 5 好物!
冰释之川 + 5 好物!
thanhtam + 4
hebrewsnabla + 5 好物!
niobium + 5 好物!
snljty + 5 谢谢分享

查看全部评分 View all ratings

自动做多参考态计算的程序MOKIT

3806

帖子

4

威望

7994

eV
积分
11880

Level 6 (一方通行)

MOKIT开发者

72#
 楼主 Author| 发表于 Post on 2024-10-27 20:11:57 | 只看该作者 Only view this author
本帖最后由 zjxitcc 于 2024-10-27 20:14 编辑
Accelerator 发表于 2024-10-26 13:32
多谢。另外请教一下:对于一个50原子左右的分子结合def2svp,GVB运行极慢(Gold6139 36核,花了快一天还 ...

从输出内容npair=80可以看出正在进行GVB(80)计算,这确实很耗时,要算两三天。这需要MOKIT做一些改进,自动去除GVB中一些不重要的化学键,这可能会在v1.2.6rc41版本中更新。如果你急着算,可以在标题行写mokit{UNO_thres=0.02},这样会把不重要的UNO轨道 留在双占据和虚轨道空间,不放进GVB活性空间。

这与MOKIT的历史有关,我读博的时候在一个开发GVB和post-GVB方法的课题组里,当时好不容易完成了GVB计算自动化,所以课题组内大家计算时喜欢把所有化学键都放进GVB活性空间,彰显方法高效性和计算能力。然后再从GVB根据轨道占据数选择合适的轨道做为CASSCF初始轨道,比如算个GVB(20)然后挑5对轨道做CAS(10,10)。后来我把MOKIT搬到gitlab上,随着用户的增多,发现一些用户的体系不小,而且含有很多平庸的C-H键,这最终不会被选进CASSCF活性空间,但却会在CASSCF前面一步——GVB做为pair轨道计算,导致GVB计算时间很长。
自动做多参考态计算的程序MOKIT

451

帖子

9

威望

6037

eV
积分
6668

Level 6 (一方通行)

BSJ Institute

71#
发表于 Post on 2024-10-26 13:32:46 | 只看该作者 Only view this author
本帖最后由 Accelerator 于 2024-10-26 13:36 编辑
zjxitcc 发表于 2024-10-25 12:37
这个在README_zh.md里有提到“注意官方GAMESS程序只能处理少于13对的GVB计算,但借助MOKIT现今可以实现上 ...

多谢。另外请教一下:对于一个50原子左右的分子结合def2svp,GVB运行极慢(Gold6139 36核,花了快一天还没算完,并且没迭代几圈),是否正常?以下是MOKIT的相关输出:
Enter subroutine do_gvb...
nbf=554, nif=554, doubly_occ=43, npair=80, nopen=0, nvir=351
LocDocc=F, Lin_dep=F
gms_scr_path = ~/gamess/scr
$fch2inp automr_TS5_uf_uno_asrot.fch -gvb 80
Remark: FcGVB=.T. GVB with all doubly occupied orbitals frozen.

3806

帖子

4

威望

7994

eV
积分
11880

Level 6 (一方通行)

MOKIT开发者

70#
 楼主 Author| 发表于 Post on 2024-10-25 12:37:07 | 只看该作者 Only view this author
本帖最后由 zjxitcc 于 2024-10-25 13:32 编辑
Accelerator 发表于 2024-10-25 01:15
在automr运行到Gamess的GVB步骤时,由于关键字里会写MAXIT=500,就会导致GAMESS报错ERROR: MAXIT MUST BE B ...

这个在README_zh.md里有提到“注意官方GAMESS程序只能处理少于13对的GVB计算,但借助MOKIT现今可以实现上百对的GVB计算。因此请阅读手册 4.4.10部分使用提供的脚本自动修改GAMESS代码”,具体操作请见MOKIT线上文档https://jeanwsr.gitlab.io/mokit- ... .html#4410-gvb_prog

简单解释:GAMESS的GVB最多只能算12对(可以看作12根化学键),实际研究往往不够用,需要用MOKIT提供的./modify_GMS1.sh一键修改并编译GAMESS,其中有一个顺带的修改就是200改成了500,但还有其他更重要的修改。
自动做多参考态计算的程序MOKIT

451

帖子

9

威望

6037

eV
积分
6668

Level 6 (一方通行)

BSJ Institute

69#
发表于 Post on 2024-10-25 01:15:41 | 只看该作者 Only view this author
在automr运行到Gamess的GVB步骤时,由于关键字里会写MAXIT=500,就会导致GAMESS报错ERROR: MAXIT MUST BE BETWEEN 0 AND 200, NOT     500。请问如何解决?

3806

帖子

4

威望

7994

eV
积分
11880

Level 6 (一方通行)

MOKIT开发者

68#
 楼主 Author| 发表于 Post on 2023-10-22 22:12:55 | 只看该作者 Only view this author
ABQTrap 发表于 2023-10-22 22:05
zjxitcc老师,我按您写的openmolcas教程安装的openmolcas v23,环境变量也写了路径export MOLCAS 和expor ...

如果你在任何路径下执行which pymolcas都能正常显示pymolcas的路径,这就说明环境变量没问题了。这种情况下可能你的计算是提交到别的计算节点运行的(比如集群队列),那个节点是否识别你的环境变量,我不知道。有一种可能是:如果你把molcas环境变量写在了提交任务的脚本里,通过bsub/sbatch等命令提交到队列,那么你应该试试把molcas环境变量挪到~/.bashrc里,而不要放在提交任务的脚本里。

评分 Rate

参与人数
Participants 1
eV +2 收起 理由
Reason
ABQTrap + 2 谢谢

查看全部评分 View all ratings

自动做多参考态计算的程序MOKIT

75

帖子

0

威望

1721

eV
积分
1796

Level 5 (御坂)

67#
发表于 Post on 2023-10-22 22:05:01 | 只看该作者 Only view this author
zjxitcc 发表于 2023-10-19 11:05
见《离线安装OpenMolcas-v22.06》,《编译MPI并行版OpenMolcas》

zjxitcc老师,我按您写的openmolcas教程安装的openmolcas v23,环境变量也写了路径export MOLCAS 和export PATH,pymolcas可以正常运行。但是mokit运行automr调用openmolcas时,仍然显示molcas_path = ”NOT FOUND“,后面就无法计算了,请问应该如何正确写环境变量呢?谢谢!

3806

帖子

4

威望

7994

eV
积分
11880

Level 6 (一方通行)

MOKIT开发者

66#
 楼主 Author| 发表于 Post on 2023-10-20 16:13:09 | 只看该作者 Only view this author
hebrewsnabla 发表于 2023-10-20 15:44
或许可以考虑把HF_prog=pyscf或orca时改为不从高斯步骤开始,不过这样就需要处理基组数据如何和高斯统一 ...

我是有这个想法,让py2fch_direct和mkl2fch直接产生fch文件
自动做多参考态计算的程序MOKIT

831

帖子

1

威望

7185

eV
积分
8036

Level 6 (一方通行)

65#
发表于 Post on 2023-10-20 15:44:30 | 只看该作者 Only view this author
本帖最后由 hebrewsnabla 于 2023-10-20 15:45 编辑
zjxitcc 发表于 2023-10-20 12:27
目前MOKIT自动多参考计算确实没有完全移除对Gaussian的依赖。不过,你可以手动用ORCA做个HF计算(模仿MOK ...

或许可以考虑把HF_prog=pyscf或orca时改为不从高斯步骤开始,不过这样就需要处理基组数据如何和高斯统一的问题(也就是说是否允许同一个任务HF_prog=orca和=gaussian使用的基组略有不同)……

3806

帖子

4

威望

7994

eV
积分
11880

Level 6 (一方通行)

MOKIT开发者

64#
 楼主 Author| 发表于 Post on 2023-10-20 15:16:02 | 只看该作者 Only view this author
ABQTrap 发表于 2023-10-20 15:08
谢谢zjxitcc老师,就是说按您的方法,使用MOKIT的automr功能进行CASSCF活性空间的选取是能完全绕开gaussi ...

CASSCF_prog=pyscf是默认的,不用写。我在62L回复里已经说过了。。。你提供一个别的程序算好的fch文件,就可以绕开Gaussian了。。。

评分 Rate

参与人数
Participants 1
eV +2 收起 理由
Reason
ABQTrap + 2 谢谢

查看全部评分 View all ratings

自动做多参考态计算的程序MOKIT

75

帖子

0

威望

1721

eV
积分
1796

Level 5 (御坂)

63#
发表于 Post on 2023-10-20 15:08:14 | 只看该作者 Only view this author
本帖最后由 ABQTrap 于 2023-10-20 15:14 编辑
zjxitcc 发表于 2023-10-20 12:27
目前MOKIT自动多参考计算确实没有完全移除对Gaussian的依赖。不过,你可以手动用ORCA做个HF计算(模仿MOK ...

谢谢zjxitcc老师,就是说按您的方法,使用MOKIT的automr功能进行CASSCF活性空间的选取是能完全绕开gaussian的

3806

帖子

4

威望

7994

eV
积分
11880

Level 6 (一方通行)

MOKIT开发者

62#
 楼主 Author| 发表于 Post on 2023-10-20 12:27:35 | 只看该作者 Only view this author
ABQTrap 发表于 2023-10-20 11:39
zjxitcc老师,我在使用mokit时指定了HF_prog=ORCA,但是看进程,发现mokit运行时仍然先调用了gaussian的l40 ...

目前MOKIT自动多参考计算确实没有完全移除对Gaussian的依赖。不过,你可以手动用ORCA做个HF计算(模仿MOKIT的automr会算RHF和UHF,并获得稳定的UHF波函数,然后比较RHF/UHF哪个能量低,选那个),然后使用mkl2fch小程序从mkl文件产生fch文件,使用关键词
mokit{ist=3,readrhf='rhf的fch文件名'}

mokit{ist=1,readuhf='uhf的fch文件名'}
读取fch文件进来计算,这样就可以完全跳过需要Gaussian的环节。不过从实际上讲,其实你不需要管这个,因为谁也不知道你的fch文件是哪来的。。。MOKIT提供了很多小程序可以从其他量化程序产生fch文件。
自动做多参考态计算的程序MOKIT

75

帖子

0

威望

1721

eV
积分
1796

Level 5 (御坂)

61#
发表于 Post on 2023-10-20 11:39:22 | 只看该作者 Only view this author
本帖最后由 ABQTrap 于 2023-10-20 11:41 编辑

zjxitcc老师,我在使用mokit时指定了HF_prog=ORCA,但是看进程,发现mokit运行时仍然先调用了gaussian的l401.exe,然后是ORCA计算。那如果我没有gaussian的license(目前gaussian仅用于学习),而且mokit的运行绕不开gaussian,是不是不能把mokit的结果用于发表?谢谢!

3806

帖子

4

威望

7994

eV
积分
11880

Level 6 (一方通行)

MOKIT开发者

60#
 楼主 Author| 发表于 Post on 2023-10-19 11:05:50 | 只看该作者 Only view this author
ABQTrap 发表于 2023-10-19 09:55
zjxitcc老师,我在linux安装了openmolcas,可以正常运行,但是用mokit调用openmolcas计算casscf时输出文件 ...

见《离线安装OpenMolcas-v22.06》,《编译MPI并行版OpenMolcas

自动做多参考态计算的程序MOKIT

75

帖子

0

威望

1721

eV
积分
1796

Level 5 (御坂)

59#
发表于 Post on 2023-10-19 09:55:01 | 只看该作者 Only view this author
zjxitcc老师,我在linux安装了openmolcas,可以正常运行,但是用mokit调用openmolcas计算casscf时输出文件显示“molcas_path = NOT FOUND”。请问openmolcas的环境变量应怎么设置让mokit找得到程序安装位置?谢谢!

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

GMT+8, 2024-11-24 06:06 , Processed in 0.203423 second(s), 25 queries , Gzip On.

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