Post

大体系的激发态波函数分析方案

大体系的激发态波函数分析方案

对于巨型体系,如COF,直接TD-DFT计算激发态将非常困难。此时就需要一些简化算法,以便将资源消耗控制在可以接受的资范围内。本文打算记录一些非常规的方案,取的例子是: 因为想有个TDDFT结果做标准参考,所以取的不是非常大,而且有意保持了对称性,免得真算不动了。首先结构优化:

1
# opt freq CAM-B3LYP/def2svp  em=gd3bj

然后做TDDFT单点:

1
# td CAM-B3LYP/def2tzvp  em=gd3bj IOp(9/40=3)

结果CAM-B3LYP疑似给我算了个ghost态出来。。。

1
2
3
4
5
6
 Excited State   1:      Singlet-A1     0.2695 eV 4600.15 nm  f=0.1917  <S**2>=0.000
 ...
     316 -> 317        0.99466
 ...
     316 <- 317       -0.69902
 ...

说疑似是因为316 <- 317去激发组态系数飘到了惊人的0.7,波长4600nm更是比红外光谱还红外,一眼ghost,然而其振子强度f=0.1917却不像ghost态一样很接近0。做了下激发分析 看着倒是很正常,符合预期,所以就当是TD单点切基组引起的小bug吧。本次TD-DFT单点计算使用32core/96gb的资源,耗时4h51m,料想如果是没有C2v对称性的实际体系的话耗时将非常惊人。

纯泛函密度拟合

截止目前,Multiwfn尚未支持使用ORCA的TD-DFT计算结果考虑去激发组态,因此结果仍然可能定性有问题。而且ORCA开RI算TD单点属于常规方案,不在本文讨论范围,因此选择了Gaussian纯泛函开DensityFit测试:

1
# td BLYP/SVP/SVPFit DensityFit em=gd3bj IOp(9/40=3)

我在官网上没看到def2系列的辅助基组,考虑到本文的目的是为大体系找方案,所以激进地直接取SVP来测试。计算耗时不出意料地锐减,12m就完成了。由于是Gaussian计算,照常进行波函数分析: 可以看到与TD-DFT还是有一定差距的。

sTDA-DFT

ORCA支持进行sTD-DFT和sTDA-DFT计算,此方法耗时较少。由于前述ORCA不区分激发/去激发组态原因,本文测试sTDA-DFT的情况。使用关键词:

1
2
3
4
5
6
7
8
9
! b3lyp/g def2-svp def2/J rijcosx 
%pal nprocs 32 end
%maxcore 3000
%tddft
    maxcore 1000000     # 截止ORCA6.0,sTDA只能串行运行,如果要计算很多态模拟光谱可以单独在%tddft里增加内存
    Mode sTDA
    Ethresh 3.0         # sTDA是直接对角化求解所有态的,不会进行Davidson迭代,因此不能通过nroot控制计算的态的个数。
end
*xyzfile 0 1 geom.xyz

本次计算的耗时同样是12m,大头在DFT部分,sTDA几乎是秒出的。本计算可以照常使用gbw转换来的molden文件与log文件进行波函数分析: 可以看到与TD-DFT计算结果非常接近,因此sTDA-DFT是一个很出色的大体系激发态计算方案。

TDA-aTB

如果目标体系过大,连结构优化都很困难,半经验方法是最后的选择。Amesp提供了TDA-aTB计算大体系激发态,参考:大体系激发态计算方法TDA-aTB在Amesp中的使用

1
2
3
4
5
6
7
8
9
% npara 18
% maxcore 150000
! TDA aTB
>atb
  etdamax 4
end
>xyz 0 1
{geom}
end

该计算是真秒出

1
2
3
4
5
6
7
 ====================================================================
 
 The program run from  2025-08-16  23:54:08  to  2025-08-16  23:54:09
 Total run time:     0 days,   0  hours,   0 minutes,  1.5944 seconds
 Normal termination of Amesp!
 
 ====================================================================

由于Amesp的波函数格式不被Multiwfn支持,我们需要先用mokit转换成fch格式:

1
2
m2a out.mo
amo2fch out.amo

输出的out.fch可以给Multiwfn进行波函数分析。Amesp的激发信息同样不被不被Multiwfn支持,也需要先转换。读者可以自行编撰脚本按照Multiwfn的格式编写输入,或者使用笔者提供的afakeg进行转换:

1
atb2gau out.aop > a2g.txt

如此,在进行Multiwfn波函数分析时,波函数文件使用mokit转换的out.fch,log文件使用atb2gau转换的a2g.txt:

半经验方法是用精度换的时间,可以看到偏离稍微有些大。大师说atb是类纯泛函,未来将退出类杂化泛函的atb2,对于高估电荷转移趋势的情况会好很多,默默期待一波。

最后放个对比图:

This post is licensed under CC BY 4.0 by the author.
Total hits!