计算化学公社

标题: 一个Fortran写的电荷转移积分程序 [打印本页]

作者
Author:
Warm_Cloud    时间: 2019-8-23 22:01
标题: 一个Fortran写的电荷转移积分程序
本帖最后由 Warm_Cloud 于 2020-7-19 13:31 编辑

attach://20792.x[attach]20792[/attach]电荷转移积分的计算是很多小伙伴的需求,这两天基于高斯的输出文件做了一个,细节可以参考http://bbs.keinsci.com/thread-11369-1-1.html
使用方法很简单,需要提供dimer和monomers的高斯输出文件和fchk文件,以此按照提示输入就可以。输入文件要加 nosymm iop(3/33=1)。
顺便说一下,以后更强大和好用的电荷转移功能会加入到我自己写的量化软件中。
(, 下载次数 Times of downloads: 260)
代码地址:https://github.com/zhangyingfeng1993/Charge-Transport-Integral
有问题的小伙伴可以留言讨论。



作者
Author:
冰释之川    时间: 2019-8-23 22:33
大师大法好!先收藏之,待日后使用
作者
Author:
njfuzjs    时间: 2019-8-24 11:03
开源大师
作者
Author:
让你变成回忆    时间: 2019-8-24 11:45
大师大法好
作者
Author:
lonemen    时间: 2019-8-24 18:05
大师大法好!
作者
Author:
yjmaxpayne    时间: 2019-9-16 17:15
大师也真够懒的,简单写个小命令行的编译方法噻。。。不过,我自己随便捣鼓了一下:

ifort -O3 CT.f90 -L/xxxxx/mkl/intel64/ -lmkl_intel_lp64 -lmkl_core -lmkl_intel_thread -lpthread -lm -qopenmp -o CT.x

对同一系统在同一理论级别下测试结果:

VOTCA CTP (git master): -12.4 meV
大师CT: -18.2meV

差别很小。

有两个小建议:
1) 建议暖大师提供 HOMO,HOMO-1, LUMO,LUMO+1搜索并单独输出的选项,绝大多数时候,这几个轨道的耦合是最主要的
2)耦合部分输出加入每个项的对应说明。

作者
Author:
Warm_Cloud    时间: 2019-9-17 08:09
yjmaxpayne 发表于 2019-9-16 17:15
大师也真够懒的,简单写个小命令行的编译方法噻。。。不过,我自己随便捣鼓了一下:

ifort -O3 CT.f90 - ...

啊,吼吼吼
作者
Author:
小白的暖暖    时间: 2019-10-26 13:17
请问,这四项哪一个是我想要的电荷转移积分啊
J(meV)    S
Je(meV)   Je(kcal/mol)
作者
Author:
Warm_Cloud    时间: 2019-10-27 13:42
小白的暖暖 发表于 2019-10-26 13:17
请问,这四项哪一个是我想要的电荷转移积分啊
J(meV)    S
Je(meV)   Je(kcal/mol)

Je
作者
Author:
小白的暖暖    时间: 2019-10-28 10:02
Warm_Cloud 发表于 2019-10-27 13:42
Je

好的,谢谢您
作者
Author:
Puying    时间: 2019-11-30 21:50
太牛批了!
作者
Author:
Warm_Cloud    时间: 2020-7-19 13:32
更新了一下输出。
作者
Author:
tulingzhi    时间: 2021-12-3 14:32
请问楼主,您计算转移积分所采用的理论方法是基于这篇 JACS,128(30):9882-9886吗?是属于能级劈裂法还是在位能修正法啊?我个人的理解是作者是在能级劈裂法的基础上进行修正?
作者
Author:
kaiden    时间: 2022-4-24 12:15
楼主您好,最近我用您写的程序测试电荷转移积分遇到一点问题,请教下面报错会是什么问题呢?谢谢!(在m062x/ma-SVP下计算的dimer,monomer单点。dimer.out载入时出错,但是把monomer.out当作dimer载入又没问题。)

nput for Dimer:
  Please input the Gaussian log file :<e.g. out.log>
pPDM_Dimer1_SP.out

  Spin Multiplicity:             1
  Number of basis functions:  2560
  Readind Orbit...
forrtl: severe (59): list-directed I/O syntax error, unit 1101, file /root/Documents/Study/Charge-Transport-Integral-master/pPDM_Dimer1_SP.fchk
Image              PC                Routine            Line        Source            
CT.x               000000000094B016  Unknown               Unknown  Unknown
CT.x               0000000000967727  Unknown               Unknown  Unknown
CT.x               0000000000965985  Unknown               Unknown  Unknown
CT.x               0000000000404E8B  Unknown               Unknown  Unknown
CT.x               0000000000401AE0  Unknown               Unknown  Unknown
CT.x               0000000000400D29  Unknown               Unknown  Unknown
CT.x               0000000000400CDE  Unknown               Unknown  Unknown
CT.x               00000000009DE5E9  Unknown               Unknown  Unknown
CT.x               0000000000400BBA  Unknown               Unknown  Unknown

作者
Author:
Warm_Cloud    时间: 2022-4-24 20:28
kaiden 发表于 2022-4-24 12:15
楼主您好,最近我用您写的程序测试电荷转移积分遇到一点问题,请教下面报错会是什么问题呢?谢谢!(在m062 ...

文件上传一下我试试。
作者
Author:
kaiden    时间: 2022-4-25 16:17
Warm_Cloud 发表于 2022-4-24 20:28
文件上传一下我试试。

感谢楼主回复!因为测试失败的文件太大被我删掉了。后来查看fchk文件发现是因为Number of basis functions和Number of independent functions不一致(应该是算dimer单点出现基函数线性依赖)。算单点用的m062x/ma-SVP。后来用B3LYP-D3BJ/def2svp重新算的单点就可以了。不知道后者缺乏带弥散函数的组合算出来的结果能不能接受呢?谢谢楼主!
作者
Author:
Warm_Cloud    时间: 2022-4-26 09:35
kaiden 发表于 2022-4-25 16:17
感谢楼主回复!因为测试失败的文件太大被我删掉了。后来查看fchk文件发现是因为Number of basis function ...

加上IOp(3/32=2),这样Gaussian就不会处理线性依赖的基函数了。
作者
Author:
snljty    时间: 2022-4-26 10:23
Warm_Cloud 发表于 2022-4-26 09:35
加上IOp(3/32=2),这样Gaussian就不会处理线性依赖的基函数了。

大师,请问然后会不会出现线性依赖导致系数矩阵不可逆,LAPACK报错的的问题?
作者
Author:
kaiden    时间: 2022-4-26 10:35
Warm_Cloud 发表于 2022-4-26 09:35
加上IOp(3/32=2),这样Gaussian就不会处理线性依赖的基函数了。

我有尝试过加IOp(3/32=2)让Gaussian保留线性相关的基函数,但是算单点总是不收敛。
作者
Author:
zjxitcc    时间: 2022-4-26 10:35
本帖最后由 zjxitcc 于 2022-4-26 10:39 编辑
Warm_Cloud 发表于 2022-4-26 09:35
加上IOp(3/32=2),这样Gaussian就不会处理线性依赖的基函数了。

这样容易造成电子能量异常,后续分析结果可信度降低。如果只有几个线性相关基函数,估计问题不大。
作者
Author:
zjxitcc    时间: 2022-4-26 10:37
kaiden 发表于 2022-4-26 10:35
我有尝试过加IOp(3/32=2)让Gaussian保留线性相关的基函数,但是算单点总是不收敛。

不收敛总是相对好解决的《解决SCF不收敛问题的方法》http://sobereva.com/61

最怕的是保留线性相关基函数后算出的电子能量很离谱

作者
Author:
kaiden    时间: 2022-4-26 10:43
zjxitcc 发表于 2022-4-26 10:37
不收敛总是相对好解决的《解决SCF不收敛问题的方法》http://sobereva.com/61

最怕的是保留线性相关基 ...

谢谢zjxitcc!我有尝试用sob这个博文的建议解决不收敛,但是暂时还没有解决成功。另外想问下用J_from_g03那个程序算的电荷转移积分会不会受基函数线性依赖的影响呢?(我测试了这个程序,输出文件显示有基函数线性依赖,但是用J_from_g03计算过程没有报错,不知道结果是否可信。)
作者
Author:
ljh123    时间: 2024-11-27 19:46
大佬您好,我想请问下,如果单电子转移反应前后自旋多重度发生变化了的话,该怎么计算电子转移积分呢?
作者
Author:
Warm_Cloud    时间: 2024-11-30 08:52
ljh123 发表于 2024-11-27 19:46
大佬您好,我想请问下,如果单电子转移反应前后自旋多重度发生变化了的话,该怎么计算电子转移积分呢?

Amesp可以直接算不同自旋多重度的电子转移积分。
作者
Author:
ljh123    时间: 2024-11-30 14:09
Warm_Cloud 发表于 2024-11-30 08:52
Amesp可以直接算不同自旋多重度的电子转移积分。

大佬我有两个问题想咨询下您,(1)我想算的是自旋多重度5和自旋多重度7的电子转移积分。我之前了解到的似乎都是根据TDDFT计算,并且只能计算基态和三重态。所以我不太清楚我这种情况是否能算。(2)我的体系是周期性体系,总共有400多个原子,1个Fe,其他都是C,H,O,N。如果可以计算电子转移积分的画,不清楚这种体系能不能算得动
作者
Author:
cokie    时间: 2024-11-30 21:23
本帖最后由 cokie 于 2024-11-30 21:25 编辑
ljh123 发表于 2024-11-30 14:09
大佬我有两个问题想咨询下您,(1)我想算的是自旋多重度5和自旋多重度7的电子转移积分。我之前了解到的 ...

Worm_Cloud 大佬开发的Amesp算转移积分很好用。你的第一个问题,按Amesp手册,对两个不同多重度片段定义好自旋多重度即可。

(2) “周期性体系” 和 “总共400个原子” 的描述似乎有点矛盾。
电荷转移积分的程序可以算【你感兴趣的片段】之间的转移积分。
比如周期性体系,你可以把感兴趣的部分拆分出两个能发生电荷转移的重复单元片段,其他不感兴趣的部分可以删掉并用H把边缘做饱和即可。

作者
Author:
ljh123    时间: 2024-11-30 21:50
cokie 发表于 2024-11-30 21:23
Worm_Cloud 大佬开发的Amesp算转移积分很好用。你的第一个问题,按Amesp手册,对两个不同多重度片段定义 ...

关于周期性和400个原子的表述,因为周期性是用pbc盒子表现的,实际盒子里就是400个原子,相当于一个单元。可以请问下用H把边缘做饱和是怎么操作吗,我的体系是水溶液和溶质小分子。最后就是想请问下耗时问题,因为我可能要算几百个构象下的转移积分,希望能用便宜一些的方法计算。
此外,我想问一下如果把这种自旋多重度会发生变化的过程的电子转移积分,简化为同一个自旋多重度的电子转移积分,这样是否可以(这样简化就可以直接在CP2K里算,速度快)
十分感谢大佬
作者
Author:
cokie    时间: 2024-11-30 21:58
ljh123 发表于 2024-11-30 21:50
关于周期性和400个原子的表述,因为周期性是用pbc盒子表现的,实际盒子里就是400个原子,相当于一个单元 ...

我有看到你23L的表述,事实上发生电子转移时(前),自旋多重度是一样的对吧?自旋多重度发生变化是指两个产物,而这两个产物之间并不发生电子转移。

如果是的话,我个人认为算电荷转移积分应该使用反应前的自旋多重度和几何构型(或者说更准确一点是发生反应那一时刻的自旋多重度和几何构型)

另外至于体系应该怎么做具体处理,我不是很明白,因为这个表述让我还是有点迷糊
作者
Author:
ljh123    时间: 2024-11-30 22:20
cokie 发表于 2024-11-30 21:58
我有看到你23L的表述,事实上发生电子转移时(前),自旋多重度是一样的对吧?自旋多重度发生变化是指两个 ...

反应是:A+B→(A+)+(B-)。其中反应物态(A+B)总自旋多重度为5,产物态总自旋多重度((A+)+(B-))为7。我想这应该是您说的意思?
关于体系,我不清楚大佬有没有用过CP2K做周期性体系的AIMD,就比如一个溶液体系,我们不可能把所有的水分子和溶质都建模出来,于是就可以像材料的晶胞一样,只建模一个重复性单元,并用pbc周期性边界条件表达出整体的效果。而这一个重复性单元中,一共有400个原子(而实际溶液中,肯定不止这么点原子,而是400*N倍个原子)
作者
Author:
cokie    时间: 2024-11-30 22:28
ljh123 发表于 2024-11-30 22:20
反应是:A+B→(A+)+(B-)。其中反应物态(A+B)总自旋多重度为5,产物态总自旋多重度((A+)+(B-))为7。我 ...

我一看周期性体系这个表述,以为发生反应的物质是两个周期性的晶体或者聚合物。。其实你只是建了个盒子跑AIMD搜构象对吗?实际电子转移反应还是发生在溶质之间对吗?溶质是小分子对吗?

如果反应物是A和B的话,我个人认为你要算转移积分,应该是A和B之间的转移积分,而不是A+和B-之间,或者(A+B)和((A+) + (B-))之间的转移积分。
作者
Author:
ljh123    时间: 2024-11-30 22:51
cokie 发表于 2024-11-30 22:28
我一看周期性体系这个表述,以为发生反应的物质是两个周期性的晶体或者聚合物。。其实你只是建了个盒子跑 ...

我理解您的意思了,因为我是自学刚入门不久,有些表达不是很规范十分抱歉。您说的这种思路和我想的很近似,让我有些底了




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3