计算化学公社

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

[辅助/分析程序] 调用Multiwfn计算分子间电荷转移积分的程序[测试版]

  [复制链接 Copy URL]

1187

帖子

5

威望

2859

eV
积分
4146

Level 6 (一方通行)

跳转到指定楼层 Go to specific reply
楼主
本帖最后由 snljty 于 2025-1-9 09:36 编辑

最新:出于各种原因本程序不再提供下载,用户可以参考 JACS,2006(128):9882 自行实现这个程序,基本功能用 Python 写大约半小时就能写好了。

更新:加入了一个新功能,可以提供一个dimer的NBO的.47文件,只要里面包含Fock矩阵,程序可以从里面读取Fock矩阵,就不用折腾了。对于Gaussian用户,读取上一次dimer单点的chk文件后,写Guess=Read Population=NBORead,结尾空一行写$NBO ARCHIVE FILE= MYDIMER $END,重跑一遍,就会在工作目录下生成MYDIMER.47文件,然后执行本程序的时候加上-d47选项和这个文件的名字即可。这样就不需要提供下文的Fock矩阵了。

更新:刚才改了几个typo,并加入了一个新功能。当数值误差原因导致系数矩阵不可逆的时候,可以用-dF选项提供一个含有完整的dimer的Fock矩阵的文件,将直接从里面读取Fock矩阵。这个文件第一行应该是注释,后面应该是紧跟一个下三角矩阵记录的dimer的Fock矩阵。对于Gaussian用户,可以在计算一次dimer的单点后,读取上一次单点计算的chk文件,关键词加上Guess=Read IOp(5/33=3),然后找输出文件最后一次出现Fock matrix (alpha)或者Fock matrix (beta)的地方,就是Fock矩阵,带着这行标题拷贝出来到新文件即可。

顺便可以猜一下,这个程序为什么要用Fortran写。

写在最前面:
此程序在若干个体系测试过,但是未进行更广泛的测试。另外在某些基函数有接近线性依赖,但是还没有被量化软件判断为线性依赖的情况下,可能由于Multiwfn输出的数据精度有限,读取导致的一些数值误差问题,出现系数矩阵不满秩进而不可逆的情况。

正文:
论坛中已经有很多计算电荷转移积分的程序了,比如http://bbs.keinsci.com/thread-11369-1-1.html以及http://bbs.keinsci.com/thread-14311-1-1.html。这些程序基本都是基于Gaussian的。考虑到Multiwfn极为丰富的波函数读取与操作功能,这里写了一个利用卢老师的Multiwfn程序http://sobereva.com/multiwfn/)读取轨道信息,然后读取Multiwfn的输出文件并使用格点能修正法计算分子间电荷转移积分的程序。这个程序是用Fortran写的,Fortran 95的语法。

输入文件是dimer以及两个monomer各自包含GTO和MO信息的文件,诸如Gaussian的fch,ORCA的molden等文件。使用方法可以交互输入,也可以用命令行参数比如./Calc_coupling.x -d dimer.fch -m1 monomer1.fch -m2 monomer2.fch。注意monomer1的坐标应该是dimer坐标的前面部分,monomer2的坐标应该是dimer坐标的后半部分,两者坐标要和其在dimer中的坐标完全相同,而且顺序不可改变。另外注意Gaussian要加上NoSymmetry关键词。如果可能有基函数线性依赖关系,量化软件去掉这些成分后会导致系数矩阵为非方阵,不存在逆矩阵从而无法用这个方法计算。即使量化程序用某些关键词指定不去除线性依赖的基函数成分,后面对系数矩阵求逆也会报错。

bin目录里.exe拓展名的是Windows下的可执行文件,.x是WSL下编译的Linux版可执行文件。

使用前请务必确认Multiwfn已经正确安装且配置好,已经将Multiwfn可执行文件所在目录加入环境变量PATH,使得命令行输入Multiwfn即可启动Multiwfn,并且尽量用较新版本Multiwfn。如果要自行编译,还需要链接包含LAPACK和BLAS内函数的数学库。因为这个程序通常没什么计算量,图省事我直接链接LAPACK编译的。

这里放一下README.md文件和Windows下的可执行文件,还有几个测试文件。其余内容包括源代码在上面的github地址。

欢迎测试和反馈。

评分 Rate

参与人数
Participants 14
威望 +1 eV +44 收起 理由
Reason
112233zz + 4 好物!
fengliuzi + 3
Astrologer + 3
a1571901778 + 1 好物!
zzffzz33 + 1
Aridea + 5 GJ!
MAX-0309 + 3 好物!
swordshine + 5 好物!
ggdh + 5 赞!
corei70715 + 5 赞!
Novice + 3 好物!
lyj714 + 3 不明觉厉
hdhxx123 + 3 GJ!
sobereva + 1

查看全部评分 View all ratings

3

帖子

0

威望

29

eV
积分
32

Level 2 能力者

53#
发表于 Post on 2025-4-3 11:41:49 | 只看该作者 Only view this author
大佬,软件还能再发一下嘛,GitHub地址是哪呀

1

帖子

0

威望

35

eV
积分
36

Level 2 能力者

52#
发表于 Post on 2024-12-28 18:51:51 | 只看该作者 Only view this author
蛤蛤蛤蛤蛤蛤 发表于 2022-10-17 22:02
**** 作者被禁止或删除 内容自动屏蔽 ****

我也出现这种问题了,能具体说说这是什么意思吗,怎么控制打印啊

6

帖子

0

威望

169

eV
积分
175

Level 3 能力者

51#
发表于 Post on 2024-11-10 22:14:03 | 只看该作者 Only view this author
snljty 发表于 2021-9-13 11:50
本文一楼已经写明白了全部需要的操作指南,要注意的容易忽视的点还特意用红字标出来了,还贴上了接近1000 ...

老师,您好。我也想查看这软件更详细的使用说明,可是我打开这个程序输入“help”后回车,程序一直弹出“File “help” not found!” 是我查看的方式不对吗?  该如何查看使用说明?本人比较小白,请老师不吝赐教

43

帖子

0

威望

289

eV
积分
332

Level 3 能力者

50#
发表于 Post on 2023-7-4 08:52:36 | 只看该作者 Only view this author
本帖最后由 楠楠 于 2023-7-10 08:59 编辑

老师好想请教一下,我先优化的dimer 然后基于优化好的dimer 保存了两个单体  dimer加上两个单体我都加上了关键词  NoSymmetry IOp(3/32=2,3/33=1)  进行单体计算
然后输入程序时出现如下报错 请问老师是什么原因

2.png (79.22 KB, 下载次数 Times of downloads: 45)

2.png

1187

帖子

5

威望

2859

eV
积分
4146

Level 6 (一方通行)

49#
 楼主 Author| 发表于 Post on 2022-12-21 09:39:55 | 只看该作者 Only view this author
Windln 发表于 2022-12-17 12:41
还想问一个问题,单体的信息一定要在单体单独存在下重新优化得到,还是从二聚体中扣出单体结构只算单点能 ...

不能重新优化。

12

帖子

0

威望

356

eV
积分
368

Level 3 能力者

48#
发表于 Post on 2022-12-17 12:41:24 | 只看该作者 Only view this author
Windln 发表于 2022-12-17 12:35
“注意monome1r的坐标应该是dimer坐标的前面部分,monomer2的坐标应该是dimer坐标的后半部分,两者坐标要和 ...

还想问一个问题,单体的信息一定要在单体单独存在下重新优化得到,还是从二聚体中扣出单体结构只算单点能也行呢?

12

帖子

0

威望

356

eV
积分
368

Level 3 能力者

47#
发表于 Post on 2022-12-17 12:35:27 | 只看该作者 Only view this author
“注意monome1r的坐标应该是dimer坐标的前面部分,monomer2的坐标应该是dimer坐标的后半部分,两者坐标要和其在dimer中的坐标完全相同,而且顺序不可改变”
在dimer中坐标不变,将monomer2即后面的坐标作为1,monomer1作为2,这样的操作是可以接受的吗?

83

帖子

0

威望

647

eV
积分
730

Level 4 (黑子)

46#
发表于 Post on 2022-10-18 08:22:26 | 只看该作者 Only view this author
snljty2 发表于 2022-10-17 22:10
读J_eff,后两组数据平时一般不用。读第一行和最后一行没问题。

好的谢谢老师,第一行是空穴转移积分 最后一行是电子转移积分 这样对应是对的吧老师?

419

帖子

1

威望

2545

eV
积分
2984

Level 5 (御坂)

45#
发表于 Post on 2022-10-17 22:13:22 | 只看该作者 Only view this author
seahurt 发表于 2022-9-12 13:37
用Fortran的原因除了性能还有其它吗?

读Gaussian里用Fortran输出的科学记数法双精度浮点数比较省事,就是那个带D的格式,因为有时候甚至不含那个D,比如指数超过两位,1.234567E+102会被输出成1.234567+102而不是1.234567D+102(这个虽然可以写程序的时候控制),别的语言读这个太麻烦了。另外就是Fortran调LAPACK比C方便一些,数组运算也方便很多,不用自己写一堆辅助函数。大概是这些原因。

419

帖子

1

威望

2545

eV
积分
2984

Level 5 (御坂)

44#
发表于 Post on 2022-10-17 22:10:50 | 只看该作者 Only view this author
兰兰爱学习 发表于 2022-9-14 15:27
楼主 想请教一下 这样读取数值对吗?

读J_eff,后两组数据平时一般不用。读第一行和最后一行没问题。

4

帖子

0

威望

159

eV
积分
163

Level 3 能力者

43#
发表于 Post on 2022-10-17 22:02:10 | 只看该作者 Only view this author
未名|梧桐雨 发表于 2022-9-11 14:18
报错如图所示,麻烦大佬了!

这个我也遇到了解决了,你控制打印让他打印出的和基函数一致就行了

4

帖子

0

威望

159

eV
积分
163

Level 3 能力者

42#
发表于 Post on 2022-10-17 21:59:27 | 只看该作者 Only view this author
不好意思已经解决了,感谢

4

帖子

0

威望

159

eV
积分
163

Level 3 能力者

41#
发表于 Post on 2022-10-17 18:15:29 | 只看该作者 Only view this author
这个是报错信息

202210171815166839..png (14.11 KB, 下载次数 Times of downloads: 56)

202210171815166839..png

4

帖子

0

威望

159

eV
积分
163

Level 3 能力者

40#
发表于 Post on 2022-10-17 17:56:41 | 只看该作者 Only view this author
老师您好,我计算c12h26 c14h28等几种有机小分子电荷迁移模型,在cp2k中已经进行了结构优化用了,pbe泛函和tzv2p基组,从优化了的结构中我选择了几个二聚体,用cp2k molden文件计算二聚体转移积分,已经添加了盒子信息和有效电荷,出现overlap matrix 可能在哪里有问题呢

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

GMT+8, 2025-8-14 20:01 , Processed in 0.981762 second(s), 30 queries , Gzip On.

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