计算化学公社

标题: 求教如何解决DMRG陷入local minimum的问题? [打印本页]

作者
Author:
liyaohx    时间: 2020-10-3 21:34
标题: 求教如何解决DMRG陷入local minimum的问题?
用价层轨道构造了一个活性空间,做了一个DMRGCI发现收敛的态不是能量最低的,请问有没有什么办法能解决呢?我用的DMRG程序是BLOCK
作者
Author:
zjxitcc    时间: 2020-10-3 22:00
以我有限的经验来看,如果你用的是PySCF调用Block做DMRG计算(这也是推荐的做法),那么“收敛的态不是能量最低的”有两种情况,
(1)连自旋多重度都不对,偏离期望值。这是比较好办的,通过以下手段(某一或联用)
mc.fcisolver.spin = 指定自旋,这里填的其实是alpha-beta电子数
mc.fcisolver.level_shift = 0.2 能级位移值,移多少自己写
mc.fix_spin_(ss=指定自旋),这里填的其实是S(S+1)
(2)自旋多重度是对的,那就相当于收敛到了激发态波函数,或者说基态鞍点波函数,这就比较尴尬了,难度可能有点大。可能要改
scheduleSweeps
scheduleMaxMs
scheduleTols
scheduleNoises
这些参数,但是我没改过,PySCF也没给例子,只能自己看代码琢磨写参数。

另外,稍微加大maxM对上述两种情况可能都有益处。
作者
Author:
beefly    时间: 2020-10-4 01:26
碰运气的话,可以改scf初始波函的占据。可以与增减电荷结合使用。或许有些scf轨道可能让dmrg收敛到正确基态。
也可以增加dmrg的根数,但这个会显著增加计算量
作者
Author:
wangxubo    时间: 2020-10-4 05:30
https://github.com/pyscf/pyscf/issues/698 这个串里的讨论可能有点用
作者
Author:
liyaohx    时间: 2020-10-8 12:27
@zjxitcc mc.fcisolver.spin  mc.fcisolver.level_shift = 0.2  mc.fix_spin_(ss=指定自旋) 这几个我在CAS里经常用,但是DMRG里除了第一个剩下的两个都没法用了,我想要的是三个电子朝上的四重态,现在得到的是四个朝上一个朝下的四重态。可能只能通过调Schedule里的参数了。

@beefly 是改hf_occ吗?

@wangxubo 哈哈 这个问题就是我发起的
作者
Author:
zjxitcc    时间: 2020-10-8 13:54
liyaohx 发表于 2020-10-8 12:27
@zjxitcc mc.fcisolver.spin  mc.fcisolver.level_shift = 0.2  mc.fix_spin_(ss=指定自旋) 这几个我在CAS ...

我很好奇你这“现在得到的是四个朝上一个朝下的四重态”是怎么看出来的,你算了DMRG密度及自然轨道?
作者
Author:
liyaohx    时间: 2020-10-8 21:59
zjxitcc 发表于 2020-10-8 13:54
我很好奇你这“现在得到的是四个朝上一个朝下的四重态”是怎么看出来的,你算了DMRG密度及自然轨道?

是的,我算了自然轨道




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