计算化学公社

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

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

  [复制链接 Copy URL]

3806

帖子

4

威望

7994

eV
积分
11880

Level 6 (一方通行)

MOKIT开发者

本帖最后由 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

831

帖子

1

威望

7185

eV
积分
8036

Level 6 (一方通行)

2#
发表于 Post on 2020-5-6 12:32:21 | 只看该作者 Only view this author
本帖最后由 hebrewsnabla 于 2020-5-6 12:59 编辑

感觉bas_gms2py生成的基组太长了  PySCF可以从文件读基组的,直接
  1. mol.basis = 'somebasis.dat'
复制代码
就可以了(稍微改改bas_gms2py就能生成dat,格式就是把nwchem格式拼起来)

不过问题是不能从文件读混合基组。PySCF用混合基组好像只能用tag,比如
  1. mol.basis = {
  2. 'H' : somebasis,
  3. 'H:3' : anotherbasis
  4. }
复制代码
那还是得生成py代码(tagged atom在坐标和基组中要有相同的tag)

评分 Rate

参与人数
Participants 1
eV +4 收起 理由
Reason
thanhtam + 4

查看全部评分 View all ratings

3806

帖子

4

威望

7994

eV
积分
11880

Level 6 (一方通行)

MOKIT开发者

3#
 楼主 Author| 发表于 Post on 2020-5-6 13:35:05 | 只看该作者 Only view this author
hebrewsnabla 发表于 2020-5-6 12:32
感觉bas_gms2py生成的基组太长了  PySCF可以从文件读基组的,直接
就可以了(稍微改改bas_gms2py就能 ...

那我还是更喜欢直接生成,是最为广义的文件长是长了点,但是平时不用去看这些数据,我也就不管这个了
自动做多参考态计算的程序MOKIT

831

帖子

1

威望

7185

eV
积分
8036

Level 6 (一方通行)

4#
发表于 Post on 2020-5-6 13:40:28 | 只看该作者 Only view this author
zjxitcc 发表于 2020-5-6 13:35
那我还是更喜欢直接生成,是最为广义的文件长是长了点,但是平时不用去看这些数据,我也就不管这个了

广义程度是相同的。

如果gms里面是混合基组,你生成的.py里面基组应该是错的,后面会覆盖前面的。

3806

帖子

4

威望

7994

eV
积分
11880

Level 6 (一方通行)

MOKIT开发者

5#
 楼主 Author| 发表于 Post on 2020-5-6 13:52:06 | 只看该作者 Only view this author
本帖最后由 zjxitcc 于 2020-5-6 15:20 编辑
hebrewsnabla 发表于 2020-5-6 13:40
广义程度是相同的。

如果gms里面是混合基组,你生成的.py里面基组应该是错的,后面会覆盖前面的。
已更新还增加了一些输出内容少让用户手改。
自动做多参考态计算的程序MOKIT

161

帖子

0

威望

605

eV
积分
766

Level 4 (黑子)

蓝卫兵

6#
发表于 Post on 2020-5-7 11:32:51 | 只看该作者 Only view this author
qchem以后会支持吗
B样条插值
个人专栏https://zhuanlan.zhihu.com/p/21936803

3806

帖子

4

威望

7994

eV
积分
11880

Level 6 (一方通行)

MOKIT开发者

7#
 楼主 Author| 发表于 Post on 2020-5-7 20:14:50 | 只看该作者 Only view this author
pyscf 发表于 2020-5-7 11:32
qchem以后会支持吗

如果你对qchem的使用十分熟悉,可以发个qchem自己使用关键词读取轨道初猜的算例给我。我自己一个个软件来熟悉速度还是比较慢的,毕竟要支持到H角动量如果有经验丰富的用户的帮助就快很多了
自动做多参考态计算的程序MOKIT

831

帖子

1

威望

7185

eV
积分
8036

Level 6 (一方通行)

8#
发表于 Post on 2020-5-7 21:01:23 | 只看该作者 Only view this author
独立编译那段,应该是 mv fch2inp ../bin 吧

3806

帖子

4

威望

7994

eV
积分
11880

Level 6 (一方通行)

MOKIT开发者

9#
 楼主 Author| 发表于 Post on 2020-5-7 23:53:54 | 只看该作者 Only view this author
hebrewsnabla 发表于 2020-5-7 21:01
独立编译那段,应该是 mv fch2inp ../bin 吧

thanks. 已改
自动做多参考态计算的程序MOKIT

3806

帖子

4

威望

7994

eV
积分
11880

Level 6 (一方通行)

MOKIT开发者

10#
 楼主 Author| 发表于 Post on 2020-6-29 09:12:03 | 只看该作者 Only view this author
更新1.0 beta版本
自动做多参考态计算的程序MOKIT

689

帖子

21

威望

5019

eV
积分
6128

Level 6 (一方通行)

11#
发表于 Post on 2020-6-29 17:30:50 | 只看该作者 Only view this author
不知道是否解决了这个问题:同一个点群在不同程序里具有不同的对称方位(比如H2O在A程序里位于xy平面,B程序里位于xz平面),导致读入的轨道与坐标方位不一致。有些程序(比如Gaussian)读轨道的时候顺便也检查坐标,必要的话做转动轨道。有的程序根本不查坐标,或者查了发现不一致直接报错

3806

帖子

4

威望

7994

eV
积分
11880

Level 6 (一方通行)

MOKIT开发者

12#
 楼主 Author| 发表于 Post on 2020-6-29 17:32:46 | 只看该作者 Only view this author
本帖最后由 zjxitcc 于 2020-6-29 17:41 编辑
beefly 发表于 2020-6-29 17:30
不知道是否解决了这个问题:同一个点群在不同程序里具有不同的对称方位(比如H2O在A程序里位于xy平面,B程 ...

MOKIT的那些utilities也没有检查坐标,所有的程序都是nosymm虽然用nosymm从源头上避免了方位问题,但这可以算是一个小缺点吧,我只能在Readme和manual里都提醒用户要加nosymm int=nobasistransform

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

3806

帖子

4

威望

7994

eV
积分
11880

Level 6 (一方通行)

MOKIT开发者

13#
 楼主 Author| 发表于 Post on 2020-8-8 18:25:14 | 只看该作者 Only view this author
更新1.1 alpha版本
自动做多参考态计算的程序MOKIT

339

帖子

0

威望

4999

eV
积分
5338

Level 6 (一方通行)

14#
发表于 Post on 2020-8-8 18:38:41 | 只看该作者 Only view this author
很有意思

83

帖子

0

威望

1263

eV
积分
1346

Level 4 (黑子)

15#
发表于 Post on 2021-5-11 21:37:46 | 只看该作者 Only view this author
老师您好,我在超算上安装mokit时出现了下面的错误:
error: Command "gcc -pthread -B /lustre/home/acct-mezzy/mezzy/SOFTWARE/Anaconda3/anaconda3/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/tmp/tmp2ljxcw8e/src.linux-x86_64-3.8 -I/lustre/home/acct-mezzy/mezzy/SOFTWARE/Anaconda3/anaconda3/lib/python3.8/site-packages/numpy/core/include -I/lustre/home/acct-mezzy/mezzy/SOFTWARE/Anaconda3/anaconda3/include/python3.8 -c /tmp/tmp2ljxcw8e/src.linux-x86_64-3.8/fortranobject.c -o /tmp/tmp2ljxcw8e/tmp/tmp2ljxcw8e/src.linux-x86_64-3.8/fortranobject.o -MMD -MF /tmp/tmp2ljxcw8e/tmp/tmp2ljxcw8e/src.linux-x86_64-3.8/fortranobject.o.d" failed with exit status 1
make: *** [auto_pair] Error 1
想向您请教一下这种错误是由什么原因引起的?

本版积分规则 Credits rule

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

GMT+8, 2024-11-24 03:37 , Processed in 0.189840 second(s), 24 queries , Gzip On.

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