计算化学公社

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

[量化理论] 用CASSCF优化激发态,应该用态平均吗?

[复制链接 Copy URL]

300

帖子

6

威望

2711

eV
积分
3131

Level 5 (御坂)

跳转到指定楼层 Go to specific reply
楼主
大家好!
我想用CASSCF优化一个分子的激发态。听说用CASSCF算激发态时应该用态平均,这样可以使得轨道同时适用于基态和激发态,比较“公平”。不过如果是优化激发态的几何结构呢?用态平均的话,岂不是去找那个令两个态的平均能量最低的结构了吗?那么这时还应不应该用态平均呢?请大家为我解惑。

3814

帖子

4

威望

8002

eV
积分
11896

Level 6 (一方通行)

MOKIT开发者

2#
发表于 Post on 2021-11-13 13:08:10 | 只看该作者 Only view this author
本帖最后由 zjxitcc 于 2021-11-13 13:10 编辑

不是非得需要态平均,但态平均确实可以说是最常见的做法。以S0/S1两态平均为例,一个单点计算会出现3种能量:(1)态平均能量,通常没啥意义;(2)态平均计算的轨道下算出的S0态能量;(3)态平均计算的轨道下算出的S1态能量。

你要优化S1态几何结构,需要指定感兴趣的电子态为S1态(即上述(3)),然后才能做结构优化。没有人会用上述(1)能量去做结构优化的,所以不会出现“找那个令两个态的平均能量最低的结构”。

评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
Freeman + 5 谢谢

查看全部评分 View all ratings

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

5万

帖子

99

威望

5万

eV
积分
112486

管理员

公社社长

3#
发表于 Post on 2021-11-14 05:36:10 | 只看该作者 Only view this author
态平均是指CASSCF优化轨道的对象是被考虑的那些电子态的平均能量(及令平均能量尽可能低来优化轨道),而不是像其它情况仅针对一个态(通常是基态)的能量来优化轨道。

基于态平均方式优化的轨道做CASCI,照样对不同电子态会算出不同的能量(即态平均CASSCF得到的各个态的能量),或者态平均CASSCF下各个电子态照样有各自的势能面,因此和优化指定的激发态的几何结构并不矛盾。

评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
Freeman + 5 谢谢

查看全部评分 View all ratings

北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取北京科音培训的最新消息、避免错过网上有价值的计算化学文章!
欢迎加入人气非常高、专业性特别强的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

300

帖子

6

威望

2711

eV
积分
3131

Level 5 (御坂)

4#
 楼主 Author| 发表于 Post on 2021-11-14 11:46:02 | 只看该作者 Only view this author
本帖最后由 Freeman 于 2021-11-14 12:02 编辑

谢谢大神们解答。我问这个问题的原因主要是用pyscf时发现似乎有多种几何优化casscf激发态的算法,用在我计算的体系的效果不一样。

第一是态指定的优化。这样一来cas就不收敛了,我就没有再用了。
第二是态平均的优化。代码如下(这是官网给的实例代码。我的实际情况是cas(2,2),而非这里说的cas(4,4)。)
  1. # 2. Geometry optimization over an averaged state.
  2. # Note the state-averaged gradients are optimized.
  3. #
  4. mc = mcscf.CASCI(mf, 4,4)
  5. mc.state_average_([0.25, 0.25, 0.25, 0.25])
  6. excited_grad = mc.nuc_grad_method().as_scanner()
  7. mol1 = excited_grad.optimizer().kernel()

  8. mc = mcscf.CASSCF(mf, 4,4)
  9. mc.state_average_([0.25, 0.25, 0.25, 0.25])
  10. excited_grad = mc.nuc_grad_method().as_scanner()
  11. mol1 = excited_grad.optimizer().kernel()
复制代码
这个的梯度计算非常快,没一会儿就算了好几个点。不过我观察它的输出文件,好像优化的目标是使得平均能量最低。输出文件我稍后放上来。
第三是另一个态平均的优化。代码如下
  1. # 4. Geometry optimization of the 3rd of 4 states
  2. #
  3. mc = mcscf.CASSCF(mf, 4,4)
  4. mc.state_average_([0.25, 0.25, 0.25, 0.25])
  5. excited_grad = mc.nuc_grad_method().as_scanner(state=2)
  6. mol1 = excited_grad.optimizer().kernel()
复制代码
这个可以肯定是在优化激发态的几何结构。不过我看它的输出文件,虽然cas部分算得很快,但梯度部分算得超级慢(还牵扯到什么拉格朗日乘子法,难道是限制性优化?看不懂。),差不多一个小时算出一个点。


第二个方法算得快,但优化目标可能不对;第三个方法优化目标对了,但是算得太慢。我就在想,自己是不是对第二个方法的优化目标有误解?有没有可能第二个方法的优化目标也确实是激发态优化呢?毕竟优化平均能量最低的结构没有任何意义,开发者为什么会开发没有意义的算法并作为实例放在官网上呢?如果是的话,那我干脆用第二个方法好了,毕竟它那么快。


831

帖子

1

威望

7197

eV
积分
8048

Level 6 (一方通行)

5#
发表于 Post on 2021-11-14 12:44:31 | 只看该作者 Only view this author
Freeman 发表于 2021-11-14 11:46
谢谢大神们解答。我问这个问题的原因主要是用pyscf时发现似乎有多种几何优化casscf激发态的算法,用在我计 ...

PySCF的state specific确实有些问题,不过你可以利用态平均来做态特定。比如说你要算第二个态,就把态平均权重设置成[0.0, 1.0, 0.0, 0.0],这样结果是和态特定等价的,但是收敛成功率更高。如果还不行可以再增加几个0.0,或者读取态平均单点的波函数。

我觉得第二种方法是在态平均势能面上优化的。至于第二/第三种为什么有速度差异,不是很清楚。我看到你在pyscf issue也提了问题,你应该也说一下这个速度差异的问题,在那里得到解答的可能性更大。

361

帖子

0

威望

4234

eV
积分
4595

Level 6 (一方通行)

6#
发表于 Post on 2021-11-14 14:37:52 | 只看该作者 Only view this author
Freeman 发表于 2021-11-14 11:46
谢谢大神们解答。我问这个问题的原因主要是用pyscf时发现似乎有多种几何优化casscf激发态的算法,用在我计 ...

没用过pyscf,但是从输入文件来看,第二个应该不是在优化激发态,优化激发态需要指定优化哪个态,就像第三个里面的state=2。第二个看起来就是在优化一个平均态,这个实际中似乎没啥意义。

75

帖子

0

威望

1725

eV
积分
1800

Level 5 (御坂)

7#
发表于 Post on 2023-9-6 10:47:54 | 只看该作者 Only view this author
hebrewsnabla 发表于 2021-11-14 12:44
PySCF的state specific确实有些问题,不过你可以利用态平均来做态特定。比如说你要算第二个态,就把态平 ...

老师,我想请教“利用态平均来做态特定。比如说你要算第二个态,就把态平均权重设置成[0.0, 1.0, 0.0, 0.0],这样结果是和态特定等价的,但是收敛成功率更高”。比如,我优化的是基态的结构,但是单独算基态往往很难优化成功,但是我用态平均(基态+4个激发态)来做基态的几何优化(设置成[1.0,0.0,0.0,0.0,0.0]),结构优化就成功了。请问为什么用态平均来做结构优化更容易成功呢?

831

帖子

1

威望

7197

eV
积分
8048

Level 6 (一方通行)

8#
发表于 Post on 2023-9-6 13:27:41 | 只看该作者 Only view this author
ABQTrap 发表于 2023-9-6 10:47
老师,我想请教“利用态平均来做态特定。比如说你要算第二个态,就把态平均权重设置成[0.0, 1.0, 0.0, 0. ...

多算几个态的话,在前几步找到正确基态的概率更高。

另外pyscf的态特定现在应该没有问题,只是同样需要指定多算几个root。

评分 Rate

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

查看全部评分 View all ratings

本版积分规则 Credits rule

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

GMT+8, 2024-11-26 19:27 , Processed in 2.308144 second(s), 22 queries , Gzip On.

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