含时密度泛函 - TDDFT模块
TDDFT模块基于线性响应理论,通过求解Casida方程计算分子激发态。TDDFT模块支持TDDFT(包括TDHF)、TDA(包括CIS)等方法,可以处理基态是闭壳层或者是开壳层的分子体系。其中基态是开壳层的体系不仅可以用传统的U-TDDFT方法处理,还可以用自旋匹配的SA-TDDFT(又称X-TDDFT)来处理,该方法是BDF的特色。除此之外,BDF还支持自旋翻转(SF-)TDDFT方法,包括自旋向上翻转TDDFT和自旋向下翻转TDDFT,可以用来计算和基态自旋多重度不同的激发态。
常用关键词
Imethod 参数类型:整型
默认值:当参考态为RHF/RKS时为1,否则为2
可选值:1、2
指定基于哪种基态计算方法进行TDDFT计算。1为R-TDDFT, 基态为RHF/RKS参考态;2为U-TDDFT,基态为UHF/UKS参考态。其中自旋匹配X-TDDFT需要从ROKS/ROHF出发,采用U-TDDFT,利用imethod=2,itest=1,icorrect=1计算(见下)。该参数用户一般无需手动指定,程序会自动选取合理的默认值。注意对于U-TDDFT和X-TDDFT,程序只支持在阿贝尔点群下进行计算。
Isf 参数类型:整型
默认值:0
可选值:0、1、-1
控制是否进行spin-flip的TDDFT计算。0为no spin-flip(或称spin-conserving,计算磁量子数Ms与基态相同的激发态);1为spin flip up(计算Ms比基态大1的激发态);-1为spin flip down(计算Ms比基态小1的激发态)。一个特例是当imethod=1且isf=1时,程序计算的是三重态的Ms=0分量而非Ms=1分量,因此此时不能称该计算为spin-flip TDDFT计算,而仍应称之为spin-conserving R-TDDFT计算。注意当isf不等于0且imethod=2时,itda必须设为1。
Itda 参数类型:整型
默认值:0
可选值:0、1
控制是否使用Tamm-Dancoff approximation(TDA)。0为不使用TDA的TDDFT计算;1为TDA计算。
Ialda 参数类型:整型
默认值:0
可选值:0、1、2、3、4
指定TDDFT交换相关核。0为full non-collinear kernel;1为non-collinear ALDA kernel;2为no-collinear ALDA0 kernel;3为full non-collinear kernel,产生自旋平均密度;4为full collinear kernel。
对于isf=0的计算,ialda关键词不起作用。对于isf不等于0且参考态不是RHF/RKS的单点计算,ialda建议设为2,因为它的数值稳定性较默认的0更好。对于isf不等于0的TDDFT结构优化、TDDFT数值频率和NAC-TDDFT计算,ialda必须设为4(注意:这会引入近似,导致计算结果和ialda不等于4时的结果不可比,且精度较ialda不等于4时低。也就是说,isf不等于0时的TDDFT结构优化、TDDFT数值频率的计算结果是不能与TDDFT单点能结果互相比较的)。
Itest & icorrect 参数类型:整型
默认值:0
可选值:0、1
当Itest、icorrect参数均设置为1,imethod为2,且参考态为ROKS/ROHF时,程序做X-TDDFT计算。
iact & elw & eup 参数类型:整型,浮点型,浮点型
Iact=1,通过定义激发能量下限与上限,指定TDDFT求解某个能量窗口的激发态。Elw为浮点数,能量下限,单位eV;Eup为浮点数,能量上限,单位eV。
Idiag 参数类型:整型
默认值:1
可选值:1、2、3
指定TDDFT的对角化方法。1为基于Davidson方法的迭代对角化;2为完全对角化;3为iVI 对角化(不支持非阿贝尔点群)。
对于下述情况之一,建议用idiag=3:
X射线吸收/发射光谱等涉及很高的激发态的计算(详见iwindow关键词的相关说明);
计算某个能量或波长范围内的所有激发态,并且要求既不多算该范围外的激发态,又不少算该范围内的激发态(详见iwindow关键词的相关说明)。
对于下述情况,建议用idiag=2:
分子很小,且需要的激发态数目非常多,接近或等于分子占据轨道数和虚轨道数的乘积。
对于其余情况,建议用默认的idiag=1。
Aokxc 参数类型:Bool型
指定基于AO计算交换相关Kernel对TDDFT的Casida矩阵的贡献。对于AO-TDDFT计算,默认开启aokxc,因此此时无需指定aokxc。
Iguess 参数类型:整型
可选值:10*x+y,其中x∈{0,1,2},y∈{0,1}
默认值:对于使用阿贝尔点群的AO-TDDFT计算为20,其余情况下为0
控制TDDFT初始猜测波函数。X=0: 对角元猜测;X=1: 从文件读入初始波函数;X=2: 紧束缚近似猜测;Y=0: 不存储Davidson/iVI迭代中间过程向量;Y=1: 存储Davidson/iVI迭代中间过程向量。
Itrans 参数类型:整型
可选值:0、1
默认值:0
控制是否将自旋轨道基的激发态矢量转到自旋张量基。仅当参考态为ROKS,且后续不需要用 $resp 模块进行TDDFT梯度、激发态偶极矩等计算,也不需要计算NTO时,itrans才可设为1;其中,当参考态为ROKS且后续需要进行TDDFT-SOC计算时,itrans必须设为1。
Grimmestd 参数类型:Bool型
指定使用Grimme的sTDA或sTDDFT方法,其中当itda=0时,指定 grimmestd 表示使用sTDDFT方法;当itda=1时,指定 grimmestd 表示使用sTDA方法。sTDDFT和sTDA是近似求解TDDFT问题的方法,较MPEC+COSX快约10~100倍左右,但引入的误差也较大,对激发能引入的误差约为0.2 eV量级(相比之下MPEC+COSX引入的误差一般在0.01 eV以内),对于个别过渡金属体系可能达到1 eV量级。推荐用于100原子以上有机体系的pi-pi*激发态的计算,且常规TDDFT计算耗时或内存消耗过多的情况。目前程序支持计算sTDA、sTDDFT级别下的激发能、振子强度、NTO、SOC矩阵元等,支持所有纯泛函、杂化泛函(包括HF)以及wB97、wB97X、LC-BLYP、CAM-B3LYP几种范围分离泛函的sTDA、sTDDFT计算,但不支持计算sTDA、sTDDFT级别下的激发态梯度、激发态偶极矩和非绝热耦合矩阵元,也不支持配合isf=-1使用。
Grid 参数类型:字符串
默认值:Medium
可选值:Ultra Coarse、Coarse、Medium、Fine、Ultra Fine
指定DFT计算的格点类型。
Gridtol 参数类型:浮点型
默认值:1.0E-4(对于meta-GGA为1.0E-6)
指定产生DFT自适应格点的截断阈值。该值越低,格点数越多,因此数值积分精度越高,但计算量也越大。
MPEC+COSX 参数类型:Bool型
指定利用多级展开库伦势(Multipole expansion of Coulomb potential, MPEC)方法计算J矩阵, COSX(Chain-of-sphere exchange)方法计算K矩阵。
在 tddft 模块中保留该关键词只是为了向下兼容,建议在 Compass 模块中设定该关键词。
Frzcore 参数类型:整型数组
指定每个不可约表示冻结多少个占据轨道(注意程序总是冻结该不可约表示下能量最低的占据轨道)。如不指定该关键词,则默认不冻结占据轨道(注意这和其他一些程序,如ORCA,是不同的)。例如以下写法表示冻结第一个不可约表示下的能量最低的20个占据轨道,以及第二个不可约表示下的能量最低的10个占据轨道:
$tddft
...
frzcore
20 10
$end
Frzvirt 参数类型:整型数组
指定每个不可约表示冻结多少个虚轨道(注意程序总是冻结该不可约表示下能量最高的虚轨道)。如不指定该关键词,则默认不冻结虚轨道。
备注
冻结轨道的关键词主要在大体系计算中希望节省内存时有用,例如计算UV-Vis光谱可以考虑冻结所有原子的内层轨道,即不允许内层电子激发到虚轨道,引入的误差通常小于0.01 eV。冻结轨道对缩短计算时间也有一定帮助,但作用相对较小。此外注意,程序支持在冻结轨道的情况下计算激发能、振子强度、NTO、SOC矩阵元等,但不支持冻结轨道的情况下计算激发态梯度、激发态偶极矩和非绝热耦合矩阵元。
ECD 参数类型:Bool型
指定计算电子圆二色性谱。程序除每个激发态的跃迁电偶极矩以及振子强度以外,还输出每个激发态的跃迁磁偶极矩,以及长度表象、速度表象下的转子强度。
收敛控制关键词
Crit_e 参数类型:浮点型
默认值:1e-7
指定TDDFT计算能量的收敛阈值(单位:Hartree)。
Crit_vec 参数类型:浮点型
默认值:1e-5
指定TDDFT计算波函数的收敛阈值。
激发态数目控制关键词
Iroot 参数类型:整型
默认值:10
可选值:非零整数
当iroot>0时,表示每个不可约表示下计算iroot个根。当iroot<0时,表示所有不可约表示下总共计算|iroot|个根,由程序自动判断每个不可约表示下应该计算多少个根。注意对于简并的不可约表示,同一个态的不同简并分量按一个态处理,例如当分子存在二维表示,且iroot=3时,该不可约表示下会计算得到3个能量彼此不同的态。同义词:iexit。
Nroot 参数类型:整型数组
对每个不可约表示指定不同数目的根。如Nroot为5 1 3,表示计算5个属于第1个不可约表示的激发态,1个属于第2个不可约表示的激发态,和3个属于第3个不可约表示的激发态。如果同时指定iroot和nroot,nroot会被忽略。
Iwindow 参数类型:浮点数组
指定计算哪个能量/波长范围内的激发态。众所周知,当用户计算光谱时,一般关心的是计算某个能量/波长范围内的光谱,而不是计算前N个激发态。然而很多量化程序仅支持指定激发态的数目,因此用户不得不反复试错,逐渐加大激发态数目,直至激发态涵盖用户感兴趣的范围,这显然是极其费时费力的。而BDF则支持直接指定激发能/激发波长的范围,使用户无需浪费机时和精力调整激发态的数目反复重算。
Iwindow的下一行应当包含两个浮点数,表示能量/波长范围,此外后面还可以加一个单位(au/eV/nm/cm-1),当没有给定单位时,默认单位为eV。Iwindow一般建议结合iVI方法使用(idiag=3),此时程序可以确保计算出该能量/波长范围内的所有激发态,没有任何遗漏,同时又尽量不浪费时间在计算该范围以外的激发态上面,也即如果一个激发态尚未完全收敛,程序即已确定该激发态不属于用户指定的能量/波长范围,则程序不再继续收敛该态。例如以下输入表示计算激发能在1~5 eV之间的所有激发态:
$tddft
...
idiag
3
iwindow
1 5 eV
$end
当使用Davidson方法(idiag=1)时,iwindow关键词仍然可以使用:(注意以下算例没有写idiag关键字,这是因为Davidson方法是TDDFT模块默认的对角化方法)
$tddft
...
iwindow
1 5 eV
$end
此时输入的1(eV)将被忽略,也即程序计算5 eV以下的所有激发态,而不管这些激发态是否高于1 eV。不仅如此,程序既不能严格保证计算出来的所有激发态都在1~5 eV内,也不能严格保证所有在1~5 eV内的激发态都会被计算出来,但这也意味着程序不需要花费额外的计算资源来保证没有遗漏任何0~5 eV以内的激发态,因此此时计算速度往往比同样iwindow的iVI计算要快。然而当能量区间的下限非常高时(比如在计算X射线吸收谱时),例如以下输入:
$tddft
...
iwindow
300 305 eV
$end
则Davidson方法在计算0~300 eV的激发态上浪费的计算资源,将远大于其节省的计算资源,乃至导致Davidson方法对于该类情况完全无法使用。此时用户必须选择iVI方法。
提示
Iwindow不支持和idiag=2同时使用。
当指定iwindow时,iroot、nroot对程序计算的激发态数目没有影响。但对于既指定了iwindow又使用了iVI的计算,iroot、nroot对程序的内存分配仍然有一定影响;该情况下虽然程序一般会自动设定合理的iroot、nroot值,但极少数情况下程序设定值可能会不足,导致程序报错"too small iroot/nroot, require xxx, but only yyy provided"。此时代表程序在计算前低估了最终计算出的激发态数目,因此在计算前预先分配的内存不足。这种情况下用户应当用iroot或nroot将当前不可约表示下的激发态数目设为大于等于xxx的正整数,重新进行计算。
Maxld 参数类型:整型
iVI的展开空间的最大维度。一般情况下程序会自动选定合理的默认值,一般足够计算使用,但有极小概率会不足。若遇到程序报错"too small ld xxx, require yyy",应将maxld设为大于等于yyy的正整数,重新进行计算。
波函数存储关键词
Istore 参数类型:整型
指定将波函数存储于编号为istore的文件中,以备其他计算使用。
激发组态打印输出控制
Nprt 参数类型:整型
指定在计算结束后只打印前nprt个激发态的信息。当用户不指定nprt或nprt大于等于用户计算的激发态总数时,程序打印所有激发态的信息。
Cthrd 参数类型:浮点型
指定打印绝对值大于cthrd的轨道激发信息。
TD-DFT/SOC和性质计算控制参数
Nfiles 参数类型:整型
读入nfiles个TDDFT先前计算的波函数,以进行SOC计算。
Isoc 参数类型:整型
默认值:1
可选值:1、2、3
指定TDDFT-SOC计算方法。1为仅闭壳层体系计算;2为一般的SOC计算;3为仅打印各个标量态之间的SOC耦合矩阵元,不对角化SOC Hamiltonian。
Ifgs 参数类型:整型
默认值:0
可选值:0、1
指定TDDFT-SOC计算是否包含基态。0为TDDFT-SOC计算不包含基态,此时无法得到基态和考虑了SOC的激发态(即旋量态)之间的跃迁偶极矩,因此无法绘制包含SOC校正的光谱,同时也无法计算基态的SOC校正,但仍可得到包含SOC校正的激发能;1为TDDFT-SOC计算包含基态,此时可以得到包含SOC校正的光谱,且可以计算基态的SOC校正,但此时纳入TDDFT-SOC处理的标量激发态的数目不宜过多(一般以10~100个左右为宜),否则会低估基态能量,从而高估激发能。
Imatsoc 参数类型:整型数组
指定需要计算的SOC矩阵元。
...
#SCF calculation for the singlet ground state S0.
$scf
spin
0
...
$end
#First TDDFT, singlets S1-S10.
$tddft
imethod
1
isf
0
iroot
10
....
$end
#Second TDDFT, triplets T1-T10
$tddft
imethod
1
isf
1
iroot
10
$end
$tddft
....
#如果imatsoc<0,所有的SOC矩阵元都会打印;
#如果imatsoc=0,不打印任何SOC矩阵元;
#如果imatsoc>0,打印imatsoc个矩阵元
imatsoc
7 #表示计算7个SOC矩阵元(注:程序最多允许计算4000个SOC矩阵元),后面的7行指定要计算哪7个SOC矩阵元
0 0 0 2 1 1 #字符串“0 0 0”代表基态
0 0 0 2 1 2 #3个数字“i m n”代表第“i”次TDDFT计算,第“m”个不可约表示的第“n”个态
1 1 1 2 1 1 #计算矩阵<S1|HSOC|T1>
1 1 1 2 1 2
1 1 2 2 1 1
1 1 2 2 1 2
2 1 1 2 1 1
2 1 1 2 1 2
$end
Imatrsf 参数类型:整型
默认值:0
可选值:0、-1
指定在TDDFT-SOC计算里,计算标量态之间的跃迁偶极矩,imatrsf=-1可以打印所有标量态间的跃迁偶极矩。
Imatrso 参数类型:整型数组
指定打印考虑SOC之后的旋量态之间的跃迁偶极矩(以及对应的振子强度,和根据费米黄金规则计算得到的辐射跃迁速率常数)。
$TDDFT
...
Imatrso
#指定需要打印5组旋量态之间的跃迁偶极矩(注:程序最多允许计算4000个跃迁偶极矩),后面5行指定打印哪些旋量态之间的跃迁偶极矩
#如果这里指定-1,则后面无需写任何信息,程序逐对打印旋量态之间的跃迁偶极矩
#如果这里指定-2,则后面无需写任何信息,程序逐对打印所有基态旋量态和所有激发态旋量态之间的跃迁偶极矩,
#但不打印基态旋量态和基态旋量态之间,以及激发态旋量态和激发态旋量态之间的跃迁偶极矩。
5
1 1
1 2
1 3
2 3
2 4
$END
激发态性质分析
Ntoanalyze 参数类型:整型数组
自然跃迁轨道(Natrual transtion orbital - NTO)分析,指定对TDDFT计算的某些态做NTO分析。该功能仅支持阿贝尔点群。
$TDDFT
istore
1 #存储TDDFT波函数,以备后续使用。注:此处只能输入1,而不能输入其他数字,即便这不是该输入文件的第一个TDDFT计算也是如此
$End
$TDDFT
Ntoanalyze
2 #指定对两个态做NTO分析
1 3 #指定对第1和第3个激发态做NTO分析
$End
计算将NTO输出为Molden格式的文件。文件名为 bdftask.tdno_irepm_staten.molden,其中m,n的含义为第m个不可约表示的第n个根。
TRDDens 参数类型:Bool
输入激发态越迁密度到Cube文件。默认文件名为 bdftask.trd_irepm_staten.cube。其中m,n的含义为第m个不可约表示的第n个根。
DensCube 参数类型:Bool
输入基态和激发态密度到Cube文件。如果体系的基态时单重态态,计算将输出基态及激发态的密度到名为 bdftask.rho_irepn_singlet.cube 的文件。n表示第n个不可约表示。每个cube文件中有n个根的电子密度。如果基态是单重态,文件 rho_irep1_singlet 中有n+1个密度,前n个是第一个不可约表示(通常是恒等表示)的前n个激发态密度,第n+1个是体系基态的密度。
Cubexyz 参数类型:浮点数组 输入为3个浮点数,分别指定cube文件x、y、z方向格点的步长。
$TDDFT
istore
1 #存储TDDFT波函数,以备后续使用。注:此处只能输入1,而不能输入其他数字,即便这不是该输入文件的第一个TDDFT计算也是如此
$End
$TDDFT
TRDDens
Cubexyz
0.2 0.2 0.2
$End
内存控制参数
Memjkop 参数类型:整型
控制积分直接的TDDFT计算J,K算符时的内存大小,输入类型为整数,单位为MW,即兆字符,每格字符长度为8个字节。如果分配的内存不存储所有的J、K算符,TDDFT将按照指定内存计算一次能存储的J,K算符数目,通过多次积分计算完成每次迭代对角化的所有J,K算符计算。多次积分计算将降低计算效率。
$TDDFT
memjkop
2048 #指定TDDFT计算JK算符需要2048MW内存,即需要2*8=16G内存。
$End
Imemshrink 参数类型:整型
默认值:0
可选值:0、1
控制积分直接TDDFT计算J、K算符时,OpenMP并行对内存的使用方式。0为不降低内存使用量;1为降低OpenMP并行内存使用量,效率稍低。如果计算的分子体系特别大,要求的计算根数目特别多,memjkop参数无法再增大内存,使用这个参数比积分多次计算效率高。
溶剂化效应控制关键词
Solneqlr 参数类型:Bool型
指定进行线性响应非平衡溶剂化效应计算。
Soleqlr 参数类型:Bool型
指定进行线性响应平衡溶剂化效应计算。
Solneqss 参数类型:Bool型
指定进行态特定非平衡溶剂化效应计算。
Soleqss 参数类型:Bool型
指定进行态特定平衡溶剂化效应计算。