模块功能

BDF各模块的调用关系参见 BDF模块及计算流程图

分子自动分片,FLMO/iOI计算及能量分解分析 - AUTOFRAG模块

autofrag的主要功能是对大分子进行自动分片,并自动产生FLMO计算的输入。autofrag还是iOI-SCF的计算引擎,用于调度SCF的其他模块完成iOI计算。此外,autofrag还可利用卢天等开发的sobEDA、sobEDAw方法 [67] ,将分子片间的相互作用能分解为静电、位阻、轨道相互作用、色散等项的贡献。

autofrag模块主要计算流程为:

  • 根据分子坐标自动产生原子的键连信息;

  • 切断某些键,产生合适的分子片段;

  • 对分子片段增加缓冲原子;

  • 在断键处添加连接H原子或者投影杂化轨道PHO (Projected Hybrid Orbital);

  • 生成子体系分子片段的输入文件,利用并行化的模式计算分子片段;

  • 组织子体系分子片段计算结果,运行整体分子计算;

  • 若用户要求进行能量分解分析,计算分子片间的相互作用能,并分解为静电、位阻、轨道相互作用、色散等各组分的贡献。

autofrag 必须放在 compass 之前。一般而言,在一个合法的BDF SCF单点能计算输入文件(采用高级输入语法,而非简洁输入语法)的前面增加一个合法的autofrag块,并在后面添加

$localmo
FLMO
$end

即得到一个合法的自动分片输入文件。注意$localmo块中的FLMO关键词对于autofrag支持的所有计算方法都要添加,并非只对于FLMO方法需要添加。

autofrag会处理 compass 模块中的分子结构,进行分子键判断,分片等。autofrag后的输入还被作为产生分子片段及整体计算输入的模版。利用autofrag做完整的例子见 iOI-SCF计算示例

注意:当使用 autofrag 模块时, compass 模块必须在直角坐标下定义分子坐标,且不能用 file=filename.xyz 语法从另一个文件里读入分子坐标。

Method 参数类型:字符串

  • 默认值:FLMO

  • 可选值:FLMO、iOI、sobEDA、sobEDAw

设定计算方法。 FLMO - 计算分片定域化分子轨道;iOI - iOI-SCF计算,用分子片合成分子的方法计算大分子体系。iOI目前仅支持限制性自洽场计算;sobEDA/sobEDAw - 指定用sobEDA或sobEDAw方法进行能量分解。与卢天等实现的sobEDA.sh脚本(http://sobereva.com/soft/sobEDA_tutorial.zip)不同,BDF的sobEDA、sobEDAw方法先对分子轨道进行局域化,再进行sobEDA/sobEDAw分析,因此虽然得到的能量分解结果与sobEDA.sh可比,但分子轨道不可比(BDF的局域轨道往往具有更明确的化学意义)。

注意对于sobEDA、sobEDAw而言,分片时会确保片段没有缓冲区,也即每个原子仅属于一个片段,这是进行sobEDA/sobEDAw能量分解分析的必要条件。如用户指定了sobEDA/sobEDAw,但没有指定FragDef,则程序自动打开NonCovalent(见下)。

nprocs 参数类型:整数

  • 默认值:1

  • 可选值:小于等于分子片数的正整数

设定iOI计算最大可用进程数。由于分子片计算是独立的,可并行计算,此处nprocs指的即是最多允许多少个分子片同时计算。注意当nprocs不等于1时,环境变量OMP_NUM_THREADS指定的是iOI计算的总OpenMP线程数,而不是每个进程的可用OpenMP线程数。例如当环境变量OMP_NUM_THREADS=16,且nprocs为2时,代表iOI计算中同时最多有2个子体系在并行计算,每个子体系使用8个OpenMP线程。

radcent 参数类型: 浮点

  • 默认值:3.0

  • 可选值:非负浮点数

设定初始分子片(即尚未添加缓冲区的分子片)的大小(单位:埃),增加radcent会增加每个分子片的尺寸,且减少分子片的数目。

radbuff 参数类型: 浮点

  • 默认值:2.0

  • 可选值:非负浮点数

设定分子片缓冲区半径(单位:埃)。与radcent不同,增加radbuff不改变分子片数目,但会增加每个分子片的尺寸。对于iOI计算,radbuff定义的是第0次宏迭代时分子片缓冲区的大小,缓冲区将在宏迭代过程中增大。

iOIThresh 参数类型: 浮点

  • 默认值:0.1

  • 可选值:正浮点数

设定iOI-SCF分子片段计算的收敛阈值。减小iOIThresh会增加iOI计算的宏迭代次数,但改进了整体分子计算的初始轨道,所以会加快整体分子的SCF收敛。

NoOverlapMetric 参数类型: Bool

对于iOI计算,指定基于实空间度规而非重叠积分度规进行分片。仅在对极大的体系(如上万原子体系)进行分片,而且仅进行分片而不对片段进行SCF计算(也即指定DryRun)时,才有必要添加该关键词,可以通过避免计算总体系的重叠矩阵而节约时间。

NonCovalent 参数类型: Bool

在分片时不切断任何共价键。该关键词对于计算非共价复合物,尤其是对非共价复合物做能量分解分析特别有用。

FragDef 参数类型: 整数数组

人为定义哪些原子属于同一个片段。若用户希望将整个分子分为N片,则FragDef后的第一行应当为2N个整数,依次为每个片段的电荷和自旋多重度;第2到第N+1行分别为每个片段的原子序号范围。例如以下写法

$autofrag
...
fragdef
0 2 1 -2
1,3-10
2,11,12
...
$end

表示:(1)将整个分子分为2个片段;(2)第一个片段的电荷为0,自旋多重度为2,第二个片段的电荷为+1,自旋多重度为2,且自旋方向与第一个片段相反;(3)第一个片段由第1个原子和第3~10号原子组成,共9个原子;(4)第二个片段由第2、11、12号原子组成,共3个原子。

注意:(1)FragDef涉及的原子序号必须不重不漏地涵盖整个分子里的所有原子,每个原子必须出现一次,且只能出现一次;(2)上述写法中,","、"-"前后不能添加空格;(3)若按照用户指定的分片方式进行分片会导致切断共价键,则程序自动在用户指定的片段的基础上补充缓冲区;(4)若用户无法确认某些片段的电荷或自旋多重度(尤其当程序会自动补充缓冲区,而用户无法预知补充缓冲区后的片段电荷/自旋多重度时),则可将相应的电荷或自旋多重度用星号"*"代替,程序会自动选择一个能使计算正常进行的值,但在此过程中程序可能需要调整用户设置的其他电荷、自旋多重度值(例如因为电子数奇偶性问题),而且程序自行选取的电荷或自旋多重度不保证是化学上有意义的,用户需自行确认其合理性。

NoPHO 参数类型: Bool

设置不利用 PHO (Project Hybrid orbital) ,而是利用连接氢 (H) 原子来饱和分子分片时的断键处。使用该关键词时,子体系计算的计算量比默认的 PHO 方法稍小,但子体系轨道的精度低,可能导致整体分子的SCF迭代次数增加,乃至使总计算时间增加。

charge 参数类型: 整数数组

  • 默认值:无

设定给定原子的电荷数,用以协助指定分子片段的电荷。当程序难以自动确定某分子片段电子数时,用户可以通过指定电荷来确定分子片段总的电子数。格式如下:

charge
10 +2 25 -1 78 -1

这里,指定第10个原子的电荷数为+2,第25个原子的电荷数为-1,第78个原子的电荷数为-1。原子所属的分子片段电荷数将会依照用户给出的原子电荷数来进行确定。

spinocc 参数类型: 整数数组

  • 默认值:无

设定给定原子的形式自旋,用以协助计算到合适的自旋态。输入格式和 charge 关键词相同。

spinocc
13 +1 17 -1

这里,指定第13个原子有1个未成对的alpha电子,第17个原子有1个未成对的beta电子。注意,所有的开壳层原子都应该被指定。例如一个体系有两个Cu(II)中心,则两个Cu的形式自旋可以都不指定(此时总体系收敛到哪个自旋态是不确定的),也可以都指定,但是不能只指定其中一个的形式自旋而不指定另外一个的形式自旋;但是如果两个Cu原子之中有一个是Cu(I),则Cu(I)的形式自旋可以不指定,因为其为闭壳层原子。如果体系有离域的自旋,则应该画出让该自旋局域在某个原子上的共振式,再按该共振式指定形式自旋。例如乙烯自由基阳离子的两个碳原子均带有形式正电荷+0.5和形式自旋+0.5,但是指定形式自旋时应该将其中任意一个碳的形式自旋指定为+1,另一个碳的形式自旋指定为0(因为此时该碳原子是闭壳层原子,相应的形式自旋也可以不用指定),而不能把两个碳原子的形式自旋都指定为+0.5。

maxiter 参数类型: 整数

  • 默认值:50

指定iOI-SCF最大的宏迭代次数。

Dryrun 参数类型: Bool

  • 默认值:False

设定只产生FLMO或iOI-SCF输入文件,而不执行计算。

sobEDAw_c 参数类型: 浮点数

  • 默认值:0.439

sobEDAw方法的参数c。此处的默认值为GB3LYP-D3/def2-TZVPD级别下的参数,如用户所用的理论级别并非该级别,则用户必须手动修改该参数。sobEDAw方法的参数可从sobEDA原始文献 [67] 中读取,或用sobEDAw_fit工具(http://sobereva.com/soft/sobEDAw_fit.zip)自行拟合。

sobEDAw_a 参数类型: 浮点数

  • 默认值:0.029

sobEDAw方法的参数a。此处的默认值为GB3LYP-D3/def2-TZVPD级别下的参数,如用户所用的理论级别并非该级别,则用户必须手动修改该参数。

sobEDAw_r 参数类型: 浮点数

  • 默认值:2.351

sobEDAw方法的参数r。此处的默认值为GB3LYP-D3/def2-TZVPD级别下的参数,如用户所用的理论级别并非该级别,则用户必须手动修改该参数。

对称性及预处理 - COMPASS模块

COMPASS模块主要完成计算任务的初始化工作,包括读入用户定义的分子结构、基组等基本信息,判断分子的对称性及其分子点群,产生对称匹配的轨道等,并将其转换为BDF内部的数据存储起来。Compass模块的主要参数有:

Basis 参数类型:字符串

指定计算所用的基组名称。BDF基组存储在$BDFHOME/basis_library中,当前计算任务中所有原子的基组应被放置在本参数指定的文件中。由于基组通过本参数指定的文件读入,用户可以通过自定义基组(见自定义基组说明)文件为不同原子指定不同的基组。

$Compass
Basis
  cc-pVDZ
Geometry
H   0.00  0.00   0.707
H   0.00  0.00   -0.707
End Geometry
$End

Basis-block 参数类型:字符串

对不同元素指定不同的基组,第一行是默认基组,之后的行对不同元素或原子指定其它基组, 格式为 元素=基组名 或者 元素1,元素2, ...,元素n=基组名 。必须以 End Basis 做为结束。

$Compass
Basis-block
  3-21g
  C,N = 6-31g
  Xe = cc-pvdz-pp
End Basis
Geometry
H    0.0  0.0 -1.1
C    0.0  0.0  0.0
N    0.0  0.0  1.0
Xe   3.0  0.0  0.0
End geometry
$End

MPEC+COSX 参数类型:Bool型

指定利用多级展开库伦势(Multipole expansion of Coulomb potential, MPEC)方法计算J矩阵, COSX(Chain-of-sphere exchange)方法计算K矩阵。

RI-JRI-KRI-C 参数类型:字符串

密度拟合近似(Density-fitting approximation)加速算法的辅助基组。

  • RI-J:库伦拟合基组

  • RI-K:交换拟合基组

  • RI-C:相关拟合基组

$Compass
Basis
  DEF2-SVP
RI-J
  DEF2-SVP
Geometry
H   0.00  0.00   0.707
H   0.00  0.00   -0.707
End Geometry
$End

Geometry 参数类型:字符串数组

指定计算的分子结构,可以是直角坐标模式,也可以是内坐标模式。分子坐标的定义从 Geometry 参数下一行开始,以 End Geometry 前一行结束。

直角坐标 模式

$Compass
Basis
  cc-pVDZ
Geometry
H   0.00  0.00   0.707
H   0.00  0.00   -0.707
End Geometry
$End

内坐标 模式

$Compass
Basis
  cc-pVDZ
Geometry
O
H   1  0.9
H   1  0.9   2 109.0
End Geometry
$End

Restart 参数类型:Bool型

使用$BDFTASK.optgeom文件里的坐标,而非Geometry关键词下给定的坐标来进行计算,其中$BDFTASK是输入文件名称去掉后缀.inp后剩余的字符串。注意虽然此时计算不会使用Geometry关键词后的坐标数值,但是Geometry关键词后的坐标并不能省略,而且原子的种类、个数和顺序必须正确,只不过坐标数值可以是任意的而已。例如假设输入文件名为1.inp,而1.optgeom文件的内容为

GEOM
O 0. 0. 0.
H 0. 0. 2.
H 0. 2. 0.

则当1.inp的$compass模块为以下形式时,程序可以正常运行:

$compass
...
geometry
O 0. 0. 0.
H 0. 0. 2.1
H 0.1 2.0 0.
end geometry
restart
...
$end

该写法等价于以下输入(即便在以上写法中指定坐标单位为埃也是如此):

$compass
...
geometry
O 0. 0. 0.
H 0. 0. 2.
H 0. 2. 0.
end geometry
unit
 bohr
...
$end

但1.inp的$compass模块不能按以下的形式写,因为原子数目和.optgeom文件不符:

$compass
...
geometry
O 0. 0. 0.
H 0. 2.1 0.
end geometry
restart
...
$end

也不能写成以下的形式,因为原子的顺序和.optgeom文件不符:

$compass
...
geometry
H 0. 2.1 0.
O 0. 0. 0.
H 0. 0. 2.1
end geometry
restart
...
$end

restart 主要用于结构优化的断点续算。仍以1.inp为例,假设1.inp是一个结构优化任务的输入文件,但因优化不收敛、其他程序报错或用户中止计算而非正常结束,则结构优化最后一步的结构保存在1.optgeom内,此时在1.inp的$compass模块内添加restart关键字,然后重新运行1.inp,即可起到从之前结构优化的最后一帧开始继续进行结构优化的作用,而无需手动将1.optgeom的内容拷贝至1.inp内。

Group 参数类型:字符串

指定分子的对称点群。BDF会自动判断分子的对称性,HF/DFT/TDDFT都支持高阶分子点群。一些电子相关计算,如MCSCF,MRCI等只支持D2h及其子群。因此,本参数可用来强制BDF使用阿贝尔群计算。

#苯分子最高对称性是D6h,不指定分子点群,BDF可以判断出苯分子的对称性,并按D6h群计算
$COMPASS
Title
  C6H6 Molecule test run, cc-pVDZ
Basis
  cc-pVDZ
Geometry
C    0.00000000000000   1.39499100000000   0.00000000000000
C   -1.20809764405066   0.69749550000000   0.00000000000000
C    0.00000000000000  -1.39499100000000   0.00000000000000
C   -1.20809764405066  -0.69749550000000   0.00000000000000
C    1.20809764405066  -0.69749550000000   0.00000000000000
C    1.20809764405066   0.69749550000000   0.00000000000000
H    0.00000000000000   2.49460100000000   0.00000000000000
H   -2.16038783830606   1.24730050000000   0.00000000000000
H    0.00000000000000  -2.49460100000000   0.00000000000000
H   -2.16038783830607  -1.24730050000000   0.00000000000000
H    2.16038783830607  -1.24730050000000   0.00000000000000
H    2.16038783830606   1.24730050000000   0.00000000000000
End geometry
Check
$END

# D6h的子群有D3h、C6v、D3d、D2h、C2v、C1等。下面的例子指定用D2h群计算苯分子。
$COMPASS
Title
  C6H6 Molecule test run, cc-pVDZ
Basis
  cc-pVDZ
Geometry
...
End geometry
Check
Group
  D(2h)
$END

Nosymm 参数类型:Bool型

  • 默认值:false

强制BDF在计算时忽略分子对称性。

注意

与指定C1群不同,一旦使用了这个参数,分子坐标不会旋转。默认情况下,分子坐标会被旋转到标准取向(Standard orientation)

Norotate 参数类型:Bool型

强制不将分子坐标旋转到标准取向。与Nosymm不同,Norotate不会忽略分子的对称性,但是当分子具有对称轴或者镜面时,对称轴和镜面的位置必须和分子旋转到标准取向时对称轴和镜面的位置一致。例如计算某个处于yz平面上,且关于xz平面对称的水分子,默认情况下BDF会将其旋转到标准取向,导致该分子处于xz平面。此时用Norotate可以强制BDF在该水分子处于yz平面的情况下进行计算,且仍然可以利用水分子的C(2v)对称性,因为不管水分子是处于xz平面还是yz平面,水分子的对称轴都是位于z轴,且两个镜面都是位于xz面和yz面。但如果该水分子处于xy面,则指定Norotate将会报错,因为此时水分子的对称轴并非位于z轴。

Unit 参数类型:字符串

  • 默认值:Angstrom

  • 可选值:Bohr, Angstrom

Bohr表示坐标输入的长度单位为原子单位制,Angstrom表示长度单位为埃。

Skeleton 参数类型:Bool型

指定在BDF计算中对称性的处理方式。BDF有两种分子点群对称性处理方式:一种是先构造对称匹配的轨道,原子轨道积分计算过程中会对称化积分,并存储基于对称匹配轨道的积分,该方法只支持非积分直接的波函数理论计算,如SCF,MCSCF,MRCI,CCSD等;另一种做法是不产生对称匹配的积分,而是只计算存储对称独立的原子轨道积分,在做Hartree-Fock、Kohn-Sham DFT等计算时,直接产生对称匹配的算符如J、K矩阵。后一种做法称为Skeleton方法,即只计算“骨架”原子轨道积分。Skeleton方法对各种非阿贝尔点群提供支持。

BDF最初默认使用第一种做法,如今默认使用第二种做法,但是无法用于各种后-HF波函理论方法,此时需要用 Saorb 关键词切换到第一种做法。

Saorb 参数类型:Bool型

指定在BDF计算中对称性的处理方式为传统做法。只有做各种后-HF波函理论计算时才需要指定该关键词。参见 Skeleton 关键词。

Extcharge 参数类型:字符串

有效输入值为: point

指定计算需要外加点电荷,外加点电荷放置于名为$BDFTASK.extcharge的文件中。该文件内容如下:

第一行是标题行,可以为空行。

第二行输入一个整数N,定义需要多少个附加电荷。

第三到末尾,总共N行,定义附加电荷的坐标与电量,格式如下:

Atom Charge x y z

Thresh 参数类型:字符串

  • 默认值:Medium

  • 可选值:Coarse, Medium, Strict

指定判断分子对称性的精度。BDF的一个特色是对分子点群的支持。compass模块可以自动识别分子所属的对称群,并按照对称群将分子严格对称化。由于分子建模精度,分子可能不严格属于某个对称点群,本参数可以控制判断分子对称的精度。

$COMPASS
Basis
  cc-pVDZ
Geometry
C    0.00000000000000   1.39499100000000   0.00000000000000
C   -1.20809764405066   0.69749550000000   0.00000000000000
C    0.00000000000000  -1.39499100000000   0.00000000000000
...
End geometry
Thresh
  Medium
$END

ExpBas 参数类型:整数 或 字符串

  • 可选值:0、1、2、3、4、5

在输出文件中以其它量子化学程序的格式打印基组和赝势。即可以指定数字编号,也可以指定不区分大小写的程序名

  • 0:默认格式

  • 1:Molpro

  • 2:Molcas

  • 3:Gaussian

  • 4:ORCA

  • 5:CFour

Uncontract 参数类型:Bool型

强制使用非收缩的原高斯基函数计算,无论输入基组是否是收缩基组。通常用于测试。

Primitive 参数类型:Bool型

指定只输入特定格式的原高斯基函数。通常用于测试。

Check 参数类型:Bool型

按照特定格式打印最重要结果。通常用于测试。

AtomMass 输入块

指定原子的同位素质量。 接下来的第一行指定要替换的原子量个数,后面的每一行指定原子编号以及新的原子量。 如果原子量写为整数形式,将用实际的同位素原子量替代(如果内置数据库支持的话),否则不修改用户提供的新原子量。 如果原子量小于1,将使用平均原子量。 其余原子的原子量不做修改,默认为最丰同位素的原子量,自然界不存在的元素采用已知或理论预测的最长寿同位素原子量。 示例:

$compass
  geometry
    ...
  end geometry
  atommass
   4
    3   2
    7   0
    5   14.0
    8   20
$end

在上面的示例输入中,修改 4 个原子的原子量。 将原子3(氢)改为氘并使用数据库内置的原子量, 原子7(氮)改用数据库内置的平均原子量, 原子5(碳)改为碳14但不用数据库内置的原子量, 原子8(氟)改为氟20,然而在数据库中没有该同位素信息,因此原子量仍然保持为输入的值20.0。

单、双电子积分计算 - XUANYUAN模块

XUANYUAN模块主要计算单、双电子积分和其他必要的积分并存储到文件中。

Direct 参数类型:Bool型

指定使用积分直接的SCF(Direct)计算。如今是默认选项,不需要用户设置。

积分直接的SCF不存储双电子积分,按照Schwartz不等式,结合积分对Fock矩阵的贡献,对积分进行预筛选。当基函数数目大于300左右,可以有效地利用双电子积分重复计算来避免IO操作,且支持OpenMP的多核并行计算。 BDF中大多数需要计算Fock-Like矩阵(J与K矩阵)的模块,如SCF,TDDFT等都已经实现了积分直接计算。

备注

积分直接的SCF计算需要同时在compass模块中加上 Skeleton 关键词,如今也是默认的。 关闭积分直接的SCF计算可以在compass模块中加上 Saorb 关键词。

Maxmem 参数类型:字符串

指定非积分直接的SCF双电子积分计算缓存大小。大的缓存可以减少积分排序的次数。输入格式为数字+MW或数字+GW,1 Word=2 Byte, 因此512MW就等于1024MB。

$xuanyuan
Maxmem
  512MW
$end

RSOMEGA / RS 参数类型:浮点型

指定Range-Separated泛函如CAM-B3LYP等的 \(\omega\) (某些文献称 \(\mu\) )系数。 RSRSOMEGA 的同义词。如果DFT使用了Range-Speration泛函,必须加入此参数。建议值如下:

表 12 标准范围分离泛函中的 \(\omega\)

标准范围分离泛函

\(\omega\)

CAM-B3LYP

0.33

LC-BLYP

0.33

wB97

0.40

wB97X

0.30

$xuanyuan
RSOMEGA
  0.33
$end

$scf
  dft
    cam-b3lyp
$end

Heff 参数类型:整型

  • 默认值:0

  • 可选值:0、1、2、3/4、5、21、22、23

指定标量相对论哈密顿,包括:

  • 0:非相对论,包括使用ECP的情况

  • 1:sf-ZORA(不建议普通用户使用)

  • 2:sf-IORA(不建议普通用户使用)

  • 3、4:sf-X2C(二者计算流程不同,一般用3即可)

  • 5:sf-X2C + so-DKH3(无自旋部分,需结合 Hsoc 使用,精度有待进一步测试) [12]

  • 21:sf-X2C(同3、4,但支持解析导数和部分单电子性质) [27]

  • 22:sf-X2C-aXR(使用原子X矩阵近似的sf-X2C,支持解析导数和部分单电子性质) [27]

  • 23:sf-X2C-aU(使用原子酉变换近似的sf-X2C,支持解析导数和部分单电子性质) [27]

$xuanyuan
Heff
  3
$end

Hsoc 参数类型:整型

  • 可选值:0、1、2、3、4、5

指定自旋轨道(SO)积分的类型,包括:

  • 0:so-1e,仅计算单电子SO积分,一般不推荐使用

  • 1:so-1e + SOMF,通过有效Fock算符计算双电子SO积分。对于全电子计算,这是最准确的方法

  • 2:so-1e + SOMF-1c,使用单中心近似的SOMF。对于全电子计算,这是推荐选项,尤其是计算大分子

  • 3:so-1e + SOMF-1c / no soo,关闭2中的自旋-其它轨道(SOO)贡献

  • 4:so-1e + SOMF-1c / no soo + WSO_XC,采用DFT计算SOO贡献

  • 5:so-1e + somf-1c / no soo + WSO_XC-2x,根据Neese的建议,把DFT部分乘以-2来模拟SOO贡献

  • 6:so-1e-1c + SOMF-1c,一般不推荐使用

  • 7:Boettger 提出的屏蔽原子核的自旋-轨道(SNSO)方法 [74] , 参数在 Dirac-Coulomb-Breit 级别进行拟合 [76] 。 注意:(1) 不要将该方法用于带大量正电荷的阳离子(例如类氢离子);(2) 该方法对芯层电子的计算精度未知, 在进行芯电子性质的计算时(例如X射线谱、穆斯堡尔谱),需要用高精度方法进行验证

  • 以上参数加上10,将使用BP近似下的算符

  • 对于ECP基组(包括标量ECP基组、SOECP基组、全电子非相对论基组的混合),唯一接受的值是10,并且是默认选择。 也就是使用BP so-1e,其中对SOECP原子计算SOECP积分,标量ECP原子和全电子非相对论原子用有效核电荷, 但是后者支持的元素和基组类型有限(见soint_util/zefflib.F90)。

$xuanyuan
Hsoc
  1
$end

Clight 参数类型:整数

  • 默认值:0

  • 可选值:0、1、2、100

指定原子单位的光速,用于全电子相对论哈密顿量的计算。0为 BDF 默认值,1为 Gaussian 16 默认值,2为 OpenMolcas 默认值。 100 为无限光速,用于程序调试以及重复非相对论结果。

Nuclear 参数类型:整数

  • 默认值:0

  • 可选值:0、1

指定原子核电荷分布模型。0为点电荷模型;1为高斯电荷模型。 对于110号(Ds)之前的元素,均方根(RMS)核半径取自Visscher和Dyall汇总的数据 [87] ; 从Ds元素开始,RMS核半径通过核素质量A估算(单位:费米):

\[\left<r^2\right> \approx 0.57 + 0.836 \, A^{1/3}\]

其中的核素质量A与核电荷数Z近似满足以下关系 [88, 89]

\[A \approx 0.004467 \, Z^2 + 2.163 \, Z - 1.168\]

NuclearRadii 输入块

指定原子核半径. 该输入块仅在已启用有限核模型的情况下生效, 未指定的原子核半径将采用默认值. 输入模式参考 Compass 模块中的 AtomMass 输入块

Hartree-Fock及Kohn-Sham自洽场计算 - SCF模块

SCF模块是BDF的核心计算模块之一,进行Hartree-Fock和DFT计算。

计算方法关键词

RHF / UHF / ROHF 参数类型:Βοοl型

如果做Hartree-Fock计算,这三个参数必须3选1,用于控制Hartree-Fock计算的类型。

  • RHF Restricted Hartree-Fock

  • UHF Unrestricted Hartree-Fock

  • ROHF Restricted Open-shell Hartree-Fock

RKS / UKS / ROKS 参数类型:Βοοl型

如果做DFT计算,这三个参数必须3选1,用于控制DFT计算的类型。

  • RKS Restricted Kohn-Sham

  • UKS Unrestricted Kohn-Sham

  • ROKS Restricted Open-shell Kohn-Sham

波函数与占据数关键词

Charge 参数类型:整数

  • 默认值:0

指定分子体系的净电荷数。

Spinmulti 参数类型:整数

  • 默认值:对偶数电子体系为1,对奇数电子体系为2

指定分子体系的自旋多重度。自旋多重度定义为2S+1(其中S是自旋角动量),可以由 | 自旋向上的单电子数 - 自旋向下的单电子数 | + 1 计算得到,因此当体系的所有单电子的自旋都彼此平行时,自旋多重度等于体系内的单电子数加1。

Occupy 参数类型:整数数组

指定每个不可约表示分子轨道中双电子占据的轨道数目,用于RHF/RKS计算。

Alpha 参数类型:整数数组

见下述Beta条目。

Beta 参数类型:整数数组

Alpha和Beta两个关键词必须联用,用于UHF/UKS计算,分别指定alpha或beta轨道每种不可约表示占据轨道数目。

Guess 参数类型:字符串

  • 默认值:atom

  • 可选值:atom、Hcore、Huckel、Readmo

指定初猜的类型。一般情况下atom较Hcore、Huckel好,因此正常情况下无需选择Hcore或Huckel。若选择Readmo,则程序会依次检查下述文件是否存在:

  1. $BDF_TMPDIR/$BDFTASK.inporb

  2. $BDF_TMPDIR/inporb

  3. $BDF_WORKDIR/$BDFTASK.scforb

其中$BDF_TMPDIR为当前BDF计算的临时目录,$BDF_WORKDIR为当前BDF计算的工作目录,$BDFTASK为当前BDF任务的输入文件名去掉后缀.inp后剩余的字符串。程序会读取以上列表中第一个存在的文件里的轨道信息,如读取失败,或读取到的轨道信息与当前计算不兼容(例如基函数数目不同),则程序会自动改为atom猜测。读取到的轨道会先进行Lowdin正交归一化,然后才用于SCF迭代。

提示

读取的轨道文件必须和当前计算在以下方面相符:

  1. 原子的数目和种类必须相同;

  2. 原子的排列顺序必须相同;

  3. 使用的点群必须相同;

  4. 使用的基组必须相同。

除此之外的大多数方面不要求相同,例如原子坐标、电荷、自旋多重度、泛函等等均可以不同。其中如果(1)、(2)、(3)均满足,只有(4)不满足,可以用 expandmo 模块将轨道文件所用的基组投影到当前计算所用基组上,再读取轨道作为初猜(参见 expandmo )。

例如,假如某输入文件mol-B3LYP-Energy.inp在B3LYP/def2-TZVP水平下计算了某分子在某个结构下的单点能,现改用M06-2X/def2-TZVP计算同一个分子在另一个结构下的单点能(输入文件名为mol-M062X-Energy.inp),则为节约计算时间,可以利用此前B3LYP/def2-TZVP水平下的收敛的SCF波函数:

cp mol-B3LYP-Energy.scforb mol-M062X-Energy.scforb

并在mol-M062X-Energy.inp的$scf块里添加

guess
 readmo

此时运行mol-M062X-Energy.inp,即可读取B3LYP单点计算的波函数作为初猜(尽管B3LYP单点计算所用的分子结构和当前计算不同,泛函也不相同)。

如果轨道文件为RHF/RKS/ROHF/ROKS轨道,而当前计算为UHF/UKS,则程序会以轨道文件中的轨道分别作为alpha、beta轨道的初猜;如果轨道文件为UHF/UKS轨道,而当前计算为RHF/RKS/ROHF/ROKS,则程序会以轨道文件中的alpha轨道作为初猜。

SadGuessAverageOutPartiallyFilledShell/SadAvgPart 参数类型:Boolean

指定在做 Superposition of Atomic Density 初猜时所进行的原子计算中使用对非满占据的支壳层进行平均化占据的电子排布方案. 该选项为默认值且在未启用 SecScf 时为唯一选项

SadGuessAverageOutValenceShell/SadAvgVal 参数类型:Boolean

指定在做 Superposition of Atomic Density 初猜时进行的原子计算需使用对整个价层进行平均化的电子占据模式. 该选项只能在启用 SecScf 后使用

SadGuessAverageOutPartiallyFilledShellFor/SadAvgPartFor 参数类型:整型

指定在做 Superposition of Atomic Density 初猜时进行的对原子序数为特定值原子计算需使用对非满占据的支壳层进行平均化占据的电子排布方案. 如需指定多种元素则需使用该输入数次

SadGuessAverageOutValenceShellFor/SadAvgValFor 参数类型:整型

指定在做 Superposition of Atomic Density 初猜时进行的对原子序数为特定值原子计算需使用对整个价层进行平均化的电子占据模式. 如需指定多种元素则需使用该输入数次

Mixorb 参数类型:整数/浮点数组

将初猜轨道按一定比例进行混合。Mixorb后的第一行是一个整数(以下记为N),表示需要混合的轨道对的数目;第2行到第N+1行每行为5个数,给出需要混合的轨道对的信息。其中每一行的第一个数表示混合的是alpha还是beta轨道(1为alpha,2为beta;对于RHF/RKS/ROHF/ROKS计算,该数必须为1);第二个数表示待混合轨道的不可约表示编号(对于不考虑点群对称性的计算,该数必须为1);第三、第四个数表示待混合轨道在所指定不可约表示下的序号;第五个数(以下记为 \(\theta\) ,单位:度)表示将这两个轨道按以下公式进行混合:

  • 新的第一个轨道 = \(\cos\theta\times\) 原来的第一个轨道 + \(\sin\theta\times\) 原来的第二个轨道

  • 新的第二个轨道 = \(\sin\theta\times\) 原来的第一个轨道 - \(\cos\theta\times\) 原来的第二个轨道

一般使用较多的是 \(\theta=45\)\(\theta=90\) 的情况,由以上公式可以看出, \(\theta=45\) 相当于把两个轨道按等比例混合,得到一个同相位组合轨道和一个反相位组合轨道; \(\theta=90\) 相当于把两个轨道交换。以下算例将第3个不可约表示的第10个beta轨道和第11个beta轨道进行等比例混合(例如为了进行自旋对称性破缺的计算):

$scf
UHF
guess
 readmo
mixorb
 1
 2,3,10,11,45
$end

以下算例将第5个不可约表示的第7个轨道和第8个轨道交换,同时还将第6个不可约表示的第3个轨道和第4个轨道交换:

$scf
ROHF
guess
 readmo
mixorb
 2
 1,5,7,8,90
 1,6,3,4,90
$end

注意一般只有在Guess设定为Readmo时,才能使用Mixorb,否则用户撰写输入文件时尚不清楚初猜轨道的成分,因此无法知道应当混合哪些轨道。

DFT交换相关泛函关键词

DFT 参数类型:字符串

指定DFT计算的交换相关泛函。参见BDF支持的交换相关泛函列表。

D3 参数类型:Bool型

指定对DFT计算加入Grimme的D3色散矫正(使用Becke-Johnson阻尼;在其他某些程序中,这种做法叫做D3BJ)。自2025年7月起的版本,可用 D3zero 关键词指定零阻尼版本的D3色散校正,

FACEX 参数类型:浮点型

指定泛函的HF交换项比例。注意目前只有SVWN、SVWN5、PBE、PBE0、PW91、BP86、BLYP、B3LYP、GB3LYP、B3PW91、BHHLYP、SF5050、B2PLYP泛函允许用户自定义FACEX。例如以下输入将PBE的HF交换项比例由默认的0%改为37.5%,得到PBE38泛函:

$scf
...
DFT
 PBE
facex
 0.375
$end

FACCO 参数类型:浮点型

指定泛函的MP2相关项比例。注意目前只有B2PLYP泛函允许用户自定义FACCO。例如以下输入通过改变B2PLYP的FACEX和FACCO,同时自定义MP2模块里的spin component scaling参数FSS和FOS(参见 mp2 ),自定义了DSD-BLYP泛函:

$scf
...
dft
 B2PLYP
facex
 0.75
facco
 0.47
$end

$mp2
fss
 0.60
fos
 0.46
$end

RSOMEGA / RS 参数类型:浮点型

指定Range-Separated泛函如CAM-B3LYP等的 \(\omega\) (某些文献称 \(\mu\) )系数。 RSRSOMEGA 的同义词。本关键词在 scf 模块中仅用于调试,建议在 xuanyuan 模块中设置。

DFT数值积分格点控制参数关键词

NPTRAD 参数类型:整型

指定数值积分的径向格点数。本参数一般用于调试程序,正常计算不需要指定该参数。

NPTANG 参数类型:整型

指定数值积分的角向格点数。本参数一般用于调试程序,正常计算不需要指定该参数。

Grid 参数类型:字符串

  • 默认值:Medium

  • 可选值:Ultra Coarse、Coarse、Medium、Fine、Ultra Fine

指定DFT计算的格点类型。

Gridtol 参数类型:浮点型

  • 默认值:1.0E-6(对于meta-GGA为1.0E-8)

指定产生DFT自适应格点的截断阈值。该值越低,格点数越多,因此数值积分精度越高,但计算量也越大。

Gridtype 参数类型:整型

  • 默认值:0

  • 可选值:0、1、2、3

指定DFT计算的径向与角向布点方法。

Partitiontype 参数类型:整型

  • 默认值:1

  • 可选值:0、1

指定DFT格点分割类型。0为Becke分割;1为Stratmann-Scuseria-Frisch分割。一般用户无需改变该参数。

Numinttype 参数类型:整型

  • 默认值:0

指定数值积分计算方法。本参数一般用于调试程序,正常计算不需要指定该参数。

NosymGrid 参数类型:Bool型

指定数值积分不使用分子对称性,仅用于程序调试。

DirectGrid / NoDirectGrid 参数类型:Bool型

指定数值积分采用直接积分的模式,不保存基组值等信息。对于DirectSCF必须使用DirectGrid。只有非DirectSCF情况下才有必要使用NoDirectGrid。本参数一般用于调试程序,正常计算不需要指定该参数。

NoGridSwitch 参数类型:Bool型

指定数值积分过程不变换格点。为了降低计算量,BDF默认使用ultra coarse类型格点迭代几次DFT,到了一定的阈值,再使用用户设置的积分格点。NoGridSwitch参数强制不变换积分格点。

ThreshRho & ThreshBSS 参数类型:浮点型

控制积分格点的预筛选精度,仅用于程序调试。

SCF加速算法

MPEC+COSX 参数类型:Bool型

指定利用多级展开库伦势(Multipole expansion of Coulomb potential, MPEC)方法计算J矩阵, COSX(Chain-of-sphere exchange)方法计算K矩阵。 在 Scf 模块中保留该关键词只是为了向下兼容,建议在 Compass 模块中设定该关键词。

Coulpot 参数类型:整型

  • 默认值:0

  • 可选值:0、1、2

控制MPEC计算产生库伦势Vc与原子核吸引势Vn矩阵的方法。0为利用解析积分计算Vc与Vn;1为利用多级展开计算Vc,利用解析积分计算Vn;2为利用多级展开计算Vc,数值积分计算Vn。

Coulpotlmax 参数类型:整型

  • 默认值:8

定义 MPEC 方法多级展开最高的角动量L值。

Coulpottol 参数类型:整型

  • 默认值:8, 含义为 1.0E-8

定义多级展开的精度阈值,越大越精确。

MPEC 参数类型:Bool型

指定用MPEC方法计算J矩阵。

COSX 参数类型:Bool型

指定用COSX方法计算K矩阵。

SCF收敛控制关键词

Maxiter 参数类型:整型

  • 默认值:100

定义SCF计算的最大迭代次数。

Vshift 参数类型:浮点型

  • 默认值:0

  • 可选值:非负实数

  • 建议范围(当取值不为0时):0.2~1.0

指定分子轨道能级移动值。人为地将虚轨道能量加上用户指定数值,以加大HOMO-LUMO能隙,加速收敛。Vshift值越大,收敛过程越不容易出现振荡,但Vshift值太大会导致收敛变慢。一般只有在分子的HOMO-LUMO能隙较小(如小于2 eV),且SCF迭代时能量非单调降低时,才需要设置Vshift。

Damp 参数类型:浮点型

  • 默认值:0

  • 可选值:大于等于0、小于1的实数

  • 建议范围(当取值不为0时):0.5~0.99

指定本次SCF迭代与上次迭代的密度矩阵以一定比例混合(P(i):=(1-C)*P(i)+C*P(i-1)),从而加速SCF收敛。Damp值越大,收敛过程越不容易出现振荡,但Damp值太大会导致收敛变慢。一般只有在SCF迭代能量非单调降低的时候,才需要设置Damp。

ThrEne 参数类型:浮点型

  • 默认值:1.d-8

指定SCF收敛的能量阈值(单位:Hartree)。

ThrDen 参数类型:浮点型

  • 默认值:5.d-6

指定SCF收敛的均方根密度矩阵元阈值。

ThreshConv 参数类型:浮点型

同时指定SCF收敛的能量和密度矩阵阈值。例:

$scf
...
ThreshConv
 1.d-6 1.d-4
$end

等价于

$scf
...
ThrEne
 1.d-6
ThrDen
 1.d-4
$end

提示

当且仅当以下任何一条满足时,程序认为SCF收敛:(1)能量变化小于ThrEne,且RMS密度矩阵元变化小于ThrDen;(2)能量变化小于ThrEne的0.1倍,且RMS密度矩阵元变化小于ThrDen的1.5倍;(3)最大密度矩阵元变化小于ThrDen。

NoDeltaP 参数类型:Bool型

指定不使用incremental Fock技术。这会增加每一步迭代所需的时间,但有时有助于避免计算因为数值误差而不收敛。

NoXiis/NoDiis 参数类型:Bool型

指定不使用 DIIS 家族的收敛加速算法加速 SCF 收敛。一般只有在SCF能量以较大幅度(> 1.0E-5)振荡不收敛,且 Damp 和 VShift 效果不明显时,才需要指定 NoXiis。

Diis 参数类型: boolean

指定使用 DIIS 家族中的传统 DIIS 算法. 该项为默认值

Lciis 参数类型: boolean

指定使用 DIIS 家族中的 LCIIS 算法

Ediis 参数类型: boolean

指定使用 DIIS 家族中的 EDIIS 算法. 用户应首先考虑使用 EDIIS + DIIS 而非纯 EDIIS

Adiis 参数类型: boolean

指定使用 DIIS 家族中的 ADIIS 算法. 用户应首先考虑使用 ADIIS + DIIS 而非纯 ADIIS

EdiisPlusDiis 参数类型: boolean

指定使用 DIIS 家族中的 EDIIS + DIIS 算法

AdiisPlusDiis 参数类型: boolean

指定使用 DIIS 家族中的 ADIIS + DIIS 算法

MaxXiis/MaxDiis 参数类型:整型

  • 默认值:8

指定 DIIS 家族方法的最大子空间维数。

MinXiis/MinDiis 参数类型:整型

  • 默认值:2

指定 DIIS 家族方法的最小子空间维数。

XiisMode/DiisMode 参数类型: 整型

当 DIIS 类方法所用的存储策略. 具体的来说, 指的是在当子空间维度达到最大值时的做法

  • 默认值: 0

  • 可选值: 0 (删除最旧的数条记录直至空间维度为最小值), 1 (删除最旧的一条记录), 3 (删除对应迭代均方误差最大的那条记录), 4 (删除对应迭代误差矩阵元绝对值最大的那条记录)

备注

  • 选项 3 和 4 只在启用了 NLopt 后可用

  • 选项 3 和 4 的收敛效果随通常较选项 0 更好, 但偶尔可能引起稳定振荡不收敛问题. 该问题可尝试调节能级移动来解决

DoNotOrthogonalizeDiisErrorMatrix 参数类型: Boolean

指定传统 DIIS 算法使用非正交化的误差矩阵. 该选项默认启用

OrthogonalizeDiisErrorMatrix 参数类型: Boolean

指定传统 DIIS 算法使用正交化的误差矩阵, 仅在启用了 NLopt 后可用. 该选项默认不启用且在出现基组线性相关时将被自动关闭

SMH 参数类型:Bool型

指定使用Semiempirical Model Hamiltonian(SMH)方法加速SCF收敛 [66] 。该方法对于一般的有机体系,可节省约10~15 %的SCF迭代步数,对于具有显著电荷转移、自旋极化的体系,加速收敛效果更为显著。此外该方法还可增加收敛到稳定波函数的概率。对于满足以下情况之一的计算,不支持使用SMH:(1)ROHF/ROKS计算;(2)用户指定了Smeartemp时;(3)基组存在线性相关时。除这些情况外,SMH一律默认开启。

NoSMH 参数类型:Bool型

指定不使用SMH方法加速SCF收敛。

Smeartemp 参数类型:浮点型

  • 默认值:0

  • 可选值:非负实数(单位:Kelvin)

指定体系的电子温度,也即通过费米展宽(Fermi Smearing)方法改变前线轨道的占据数。注意BDF如果使用Fermi Smearing方法,最终的能量包含了电子熵能(the electronic entropy)的贡献,名为-TS_ele,从E_tot中间减掉这一项(注意这一项是负的,也就是说需要加上这一项的绝对值)可以得到电子能量。Smeartemp不可与Vshift或SMH同时使用,也不可在FLMO或iOI计算中使用。

该关键词主要有以下几类应用场景:

  • 用于研究温度对电子结构的影响,以及由此导致的对能量、各种性质的影响。例如将Smeartemp设为1000进行结构优化,可以得到1000 K下分子的平衡结构,理论上会和0 K下的平衡结构有少许区别。注意大部分实验(如X射线单晶衍射、微波光谱等)测得的结构是热平均结构而不是平衡结构,而热平均结构对温度的敏感性远较平衡结构更高,所以用户不应盲目利用Smeartemp关键词试图重现实验上观察到的分子结构随温度的变化情况,除非已知所用实验手段测得的是平衡结构。

  • 对于HOMO-LUMO能隙非常小或者前线轨道能级简并的体系,该方法能改善DFT的收敛性,但会轻微改变收敛的结果,为了得到和0 K下相同的SCF结果,需要在Fermi Smearing计算收敛或几乎收敛后,读取波函数作为初猜,继续做一个不使用Fermi Smearing的计算。一般为了达到明显改进收敛的效果,需要设定较高的电子温度,如对纯泛函设定为5000 K左右,对杂化泛函设定为10000 K左右,对HF设定为20000 K左右。

  • 对于HF或DFT破坏分子空间对称性的情况,Smeartemp有助于得到符合空间对称性的轨道。例如环丁二烯的Kohn-Sham波函数仅有 \(D_{2h}\) 对称性,但在适当的电子温度下计算,可以得到符合 \(D_{4h}\) 对称性的轨道。

Restrainspin 参数类型:整数/浮点数组

用于待研究体系有不止一个可能的SCF波函数,且希望收敛到其中特定的一个波函数的情形。指定在SCF迭代过程中,为特定原子的Mulliken自旋布居添加柔性限制,使最后收敛的波函数的Mulliken自旋布居与用户设置值相近。 Restrainspin 后的第一行为一个整数,记为N,表示需要指定几个原子的自旋;第2行至第N+1行为一个整数和一个浮点数,其中整数表示原子编号,浮点数表示希望的自旋布居(注意不是自旋多重度)。例如:

$scf
uks
...
restrainspin
2
5 +2.0
10 -1.0
$end

表示:尝试收敛到5号原子上有2个自旋向上的单电子,且10号原子上有1个自旋向下的单电子的态。

注意:(1)当体系的自旋多重度为1时,需要显式指定UHF或UKS,否则不能正常收敛到自旋破缺态;(2)当体系有点群对称性时,每指定一个原子的自旋布居为x,即同时指定了和这个原子对称等价的所有原子的自旋布居为x;(3)当体系有点群对称性,且需要收敛到的波函数会破坏这种对称性时,必须关闭点群对称性或指定合适的子群。典型例子如计算键长拉长的H-H分子的开壳层单重态(对称性破缺态),除上述的 Mixorb 关键词外,也可用 Restrainspin 指定一个氢原子的自旋为+1,另一个自旋为-1,但这会破坏体系的$D_{infty h}$对称性,因此应当关闭对称性再做该计算,否则无法收敛到所需解;(4)程序不保证一定能收敛到用户所需的SCF解,这不仅是因为程序所用的算法不保证总是成功,也是因为用户所要求的SCF解未必存在。例如对于只存在闭壳层单重态的体系,用 Restrainspin 计算开壳层单重态,仍将收敛到闭壳层单重态,且程序不会因此而报错或打印警告,用户必须通过自旋布居等自行确认是否收敛到了想要的态;(5)自旋可以不是整数;(6)该方法与FLMO方法有一定的互补性,适用于体系不是特别大(例如小于200原子),或成键方式特殊、FLMO分片难以正确判断片段电荷/自旋多重度的情形。

Fock矩阵对角化控制关键词

Sylv 参数类型:Bool型

控制在SCF迭代中利用求解Sylvester方程的方法进行块对角化,代替全对角化,以节省计算时间。例如:

$scf
...
sylv
$end

对于特别大的体系(例如原子数大于1000、基函数数目大于10000)的计算,Fock矩阵对角化占总计算的时间常常不可忽略,此时以上写法通常可以降低计算量,因为用较快的块对角化代替了全对角化,并且可以充分利用Fock矩阵的稀疏性加速计算。但需要注意的是,此时SCF收敛得到的轨道不是正则轨道(特别地,当初猜为FLMO、iOI等计算得到的局域轨道时,收敛的轨道也是局域轨道),也即得到的最高能量占据轨道不能称作HOMO,最低能量虚轨道也不能叫做LUMO,不过收敛的占据轨道张成的空间和正则占据轨道张成的空间相同,能量、密度矩阵等也和传统全对角化计算的结果一致。如需要得到正则轨道,应当另写一个不带sylv关键词的BDF输入文件,读取当前计算的收敛轨道作为初猜,进行全对角化计算。

Iviop 参数类型:整型

  • 默认值:无

  • 可选值:1~3

  • 建议值:1

控制在SCF迭代中使用iVI方法,需要与Blkiop=7联用。

Blkiop 参数类型:整型

  • 默认值:当指定Sylv时,默认值为3,否则无默认值

  • 可选值:1~8,分别代表SAI、DDS、DNR、DGN、FNR、FGN、iVI、CHC

  • 建议值:3

指定块对角化的方法,通常用于iVI或FLMO计算。如不指定该关键词,默认进行全对角化。

OneIter 参数类型:Bool型

仅进行一步SCF迭代,得到的能量是由初猜轨道和由初猜轨道构建的Fock矩阵计算得到的;计算后将Fock矩阵对角化后得到的轨道输出到.scforb文件,并基于该套轨道打印轨道能、布居分析等。和将MaxIter设为1不同的是,后者情况下程序会因为达到最大迭代次数而报错退出,进而不执行后续的计算任务(如TDDFT等)。

NoOrthGuess 参数类型:Bool型

不对初猜轨道进行正交化。一般仅在需要评估初猜轨道正交化对能量的贡献时,才需要添加该关键词。

打印与分子轨道输出控制参数

Print 参数类型:整型

  • 默认值:0

  • 可选值:0、1

仅用于程序调试,控制SCF的打印级别。

IprtMo 参数类型:整型

  • 默认值:0

  • 可选值:0、1、2

控制是否打印分子轨道系数。若设为0,不打印分子轨道;若设为1(默认),打印前线轨道(每个不可约表示的HOMO-5到LUMO+5)的占据数、能量、系数;若设为2,打印所有轨道的占据数、能量、系数。

Noscforb 参数类型:Bool型

强制不将分子轨道存入.scforb文件。

Pyscforb 参数类型:Bool型

控制将SCF收敛轨道存储为Pyscf轨道格式。

Molden 参数类型:Bool型

控制将分子轨道输出为Molden格式,以做后续的波函数分析。

SepEJK 参数类型:Bool型

将程序打印的双电子能量进一步分解为库伦能和HF交换能。该关键词会略微增加计算时长。

SepEXC 参数类型:Bool型

将程序打印的XC能量进一步分解为DFT交换能和DFT相关能。该关键词会略微增加计算时长。

相对论单电子性质计算

相对论单电子性质计算支持sf-X2C哈密顿及其局域变体( xuanyuan 模块中 Heff 设置为 21,22,或23)。

Reled 参数类型:整型

对于原子序数大于等于此值的元素计算 有效接触密度 。无默认值。 必须结合 xuanyuan 模块中的有限核模型 nuclear = 1 一起使用。

Relefg 参数类型:整型

对于原子序数大于等于此值的元素计算 电场梯度 (EFG)张量。 对于有核四极矩(NQM)实验值或可靠理论值的核素,还计算 核四极耦合常数 (NQCC)。 对于具有穆斯堡尔效应的常见核素,还计算 核四极分裂 (NQS)。 程序中已经内置了 Pyykkö 汇总的常见核素 NQM 数据 [90] (Bi-209的NQM值最近已更正 [91] ), 以及Stone汇总的具有穆斯堡尔效应的常见核素数据 [92]

无默认值。必须结合 xuanyuan 模块中的有限核模型 nuclear = 1 一起使用。

基组线性相关检查关键词

Checklin 参数类型:Bool型

强制SCF进行基组线性相关检查。BDF默认对DirectSCF进行基组线性相关检查,以提高使用弥散基函数时的SCF收敛性。

Tollin 参数类型:浮点型

  • 默认值:1.0E-7

控制基组线性相关检查的阈值。

mom方法控制关键词

mom是一种ΔSCF方法,可以通过强制SCF每次迭代的占据轨道与初始占据轨道最大重叠来使SCF收敛到激发态。mom方法通常比基态收敛困难。

Iaufbau 参数类型:整型

  • 默认值:当用户设定了Occupy、Alpha或Beta时为0,否则为1

  • 可选值:0、1、2、3

定义用什么方法指定轨道占据数。0表示轨道占据数始终与初猜一致;1表示按照Aufbau规则指定轨道占据数;2表示按照mom方法指定轨道占据数,即令占据数尽可能和初始猜测轨道保持一致,结合前述Mixorb关键词可以实现用DeltaSCF方法计算激发态;3用于程序调试,正式计算一般无需使用。

IfPair & hpalpha & hpbeta 参数类型:整型

Ifpair参数指定电子如何激发,确定mom方法的电子占初态,必须与hpalpha和hpbeta参数联用。电子激发通过相对于基态通过指定从占据轨道到虚轨道的激发确定。

#一个分子,其分子轨道分属4个不可约表示。下面的输入激发不可约表示1的alpha轨道5、6上的电子
#到alpha轨道7、8,不可约表示3的alpha轨道3上的电子到alpha轨道4,不可约表示1的beta轨道7上
#的电子到beta轨道8.
$scf
Ifpair
Hpalpha
2
5 0 3 0
8 0 4 0
6 0 0 0
9 0 0 0
Hbeta
1
7 0 0 0
8 0 0 0
...
$end

Pinalpha & Pinbeta 参数类型:整型

指定固定的分子轨道。

EnableSecondOrderScf & EnableApproxSecondOrderScf 参数类型: Bool 型

分别用于启用二阶及近似的二阶 SCF 并使用默认设置. 严格的二次收敛很昂贵, 仅应在无法通过其它收敛算法得到稳定解时使用.

提示

  • 二阶 (及近似的二阶) SCF 目前不支持 iOI 等算法

  • 二阶 (及近似的二阶) SCF 目前不支持限制性开壳层计算

  • 二阶 (及近似的二阶) SCF 目前不支持相对论计算

DisableSecondOrderScf & DisableApproxSecondOrderScf 参数类型: Bool 型

分别用于禁用二阶及近似的二阶 SCF

SecondOrderConfig & ApproxSecondOrderConfig 输入块

分别用于指定二阶及近似二阶 SCF 所用的高级设置. 一般用户仅需指定 EnableSecondOrderScf 关键词, 无需指定该项.

$Scf
    ...
    SecondOrderConfig
        Enable
        EnableExpression
            AfterIteration 10
        LevelShiftGradientThreshold
            1e-3
        ConvergeGradientThreshold
            1e-6
        ConvergeRotationThreshold
            1e-9
        MaxIterationCycle
            16
        InitialTrustRadius
            0.4
        MaxTrustRadius
            5
        MaxConjugateGradientIterationCycle
            16
        MaxDavidsonIterationCycle
            16
        CorrectionType
            Olsen
        LinearSolverTolerance
            1e-4
        AllowConverge
        ScfConvergeGradientThreshold
            1e-7
    EndSecondOrderConfig
    ...
$End
  • Enable: 指定启用二阶 SCF 并将启用表达式将为默认设置

  • Disable: 指定禁用二阶 SCF

  • EnableExpression: 指定启用表达式 (指定启用表达式将隐式设定 Enable 关键词)

    • AfterIteration + 整型数: 指定在一定标准 SCF 迭代后启用

    • AfterDeltaEnergyLessThan + 浮点数: 指定在执行标准SCF迭代至能量误差低于一定值后启用

    • AfterDeltaRmsDensityLessThan + 浮点数: 指定在执行标准SCF迭代至密度矩阵之误差低于一定值后启用

    • 自定义逻辑表达式. 注, 我们提供自定义表达式的目的是为方便开发人员调试程序及为高级用户提供更灵活的选项, 如果您对其感觉不适请考虑使用上文所述的默认选项或预设选项. 自定义表达式可用关键词为 Iteration, DeltaEnergy, 及 DeltaRmsDensity. 可用算符有 &, |, !, >, <, =, 及 []. 算符均不可串联, 并在作用至变量后必须以逻辑求值算符 [] 括起. 表达式不区分大小写, 忽略全部空格字符, 这意味着 "DeltaRmsDensity" 与 "Delta RMS Density" 等价. 例:

    [ [ Iteration > 10 ] & [ [ DeltaEnergy < 1e-3 ] | [![ DeltaRmsDensity > 2.5e-3 ]] ] ]

  • LevelShiftGradientThreshold, 浮点型: 指定在能量-轨道梯度低于一定值后解除可信半径, 改用 Newton-Raphson 法计算旋转矢量

  • ConvergeGradientThreshold, 浮点型: 指定在能量-轨道梯度值模低于一定值后停止二次 SCF 微迭代

  • ConvergeRotationThreshold, 浮点型: 指定在旋转矢量之模长低于一定值后停止二次 SCF 微迭代

  • MaxIterationCycle, 整型: 指定最大二阶 SCF 微迭代次数直到做一次标准 SCF 更新

  • InitialTrustRadius, 浮点型: 指定用 Levenberg-Marquardt 法求旋转矢量时所用的初始可信半径

  • MaxTrustRadius, 浮点型: 指定用 Levenberg-Marquardt 法求旋转矢量时所用的最大可信半径

  • MaxConjugateGradientIterationCycle, 整型: 指定用共轭梯度法求解 Newton-Raphson 方程时所用的最大迭代次数. 最终矢量将被用作旋转矢量即使未收敛

  • MaxDavidsonIterationCycle, 整型: 指定用 Davidson 对角化求解 Levenberg-Marquardt 方程时所用的最大迭代次数. 最终矢量将被用作旋转矢量即使未收敛

  • CorrectionType, 字符串: 指定 Davidson 对角化所用的矫正方法, 可选项为 DavidsonDPR (也作 DPR), JacobiDavidson, 及 Olsen

  • LinearSolverTolerance, 浮点型: 指定 Davidson 对角化所用线性方程求解器所用收敛阈值

  • ExcludeNonOccupiesFromRotation: 指定将在构造原理下本该为占据轨道但用户明确指定为非占据轨道的轨道从轨道旋转对中排除, 以防止塌陷至构造原理所表示的态. 该选项只在做 ΔSCF 计算时生效

  • IncludeNonOccupiesInRotation: 指定将所有轨道都包含至旋转对中. 该选项只在做 ΔSCF 时生效

  • AllowConverge: 允许 SCF 于二次收敛迭代过程中宣布 SCF 已收敛

  • ForbidConverge: 禁止 SCF 于二次收敛迭代过程中宣布 SCF 已收敛

  • ScfConvergeGradientThreshold, 浮点型: 指定在能量-轨道梯度之模低于一定值后认为 SCF 已收敛. 仅在已设 AllowConverge 时生效

  • QuasiNewtonAlgorithm, 字符串: 指定所用伪牛顿算法, 可选项有 BFGS (默认), SR1, 及 DFP. 仅在使用近似的二阶 SCF 时生效

备注

相比 BDF 的其它输入块, SecondOrderConfig 输入块中的浮点型参数只能用 e 或 E 来标记科学计数法, 不能使用 d 及 D. 使用不受支持的输入格式将引起意想不到的后果

含时密度泛函 - 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型

指定进行态特定平衡溶剂化效应计算。

分子结构优化 - BDFOPT模块

BDFOPT模块是BDF程序的分子几何结构优化模块,可用来寻找能量极小点、过渡态、锥形交叉点等。与其他模块不同,包含bdfopt模块的输入文件,并不是按照模块的先后顺序线性执行的,详见“快速入门”部分结构优化相关章节。

Solver 参数类型:整型

  • 默认值:0

  • 可选值:0、1

指定几何结构优化使用的求解器。

  • Solver=0 ,BDF将使用外带的DL-Find优化器进行优化,该优化器支持在直角坐标或内坐标下,进行能量极小化、过渡态搜索、高阶鞍点搜索、锥形交叉点搜索、最小能量交叉点(MECP)搜索等。

  • Solver=1 ,BDF将使用自带的优化器进行优化。

如果在冗余内坐标下(参见 ICoord 关键词)进行能量极小化、过渡态搜索,建议使用 Solver=1

注意

由于DL-FIND与BDF默认的坐标转动有冲突,必须在 compass 模块中加上关键词 norotate 禁止分子转动,或用 nosymm 关闭对称性;对于双原子和三原子分子,只能用 nosymm 。此冲突今后会解决。

Imulti 参数类型:整型

  • 默认值:0

  • 可选值:0、1、2

用于圆锥交点(conical intersection;CI)、系间窜越(intersystem crossing;ISC)等的多态优化。目前仅支持DL-Find优化器。

  • Imulti = 0 ,不执行多态优化(默认)

  • Imulti = 1 ,用惩罚函数方法优化CI或ISC,不需要计算非绝热耦合或态间耦合梯度

  • Imulti = 2 ,用梯度投影方法优化CI或ISC,其中CI优化需要计算非绝热耦合(默认),ISC优化需要设定 Noncoupl 关键词,跳过态间耦合梯度计算。

Noncoupl 参数类型:Bool

这个关键词不执行态间耦合梯度计算,用于ISC优化。

Multistate 参数类型:字符串

  • 默认值:NONE

  • 可选值:NONE、2SOC、3SOC、...、9SOC、MECP、CI

指定多态计算的类型。支持DL-Find优化器和BDF自带的优化器。

  • NONE ,执行常规的单态优化或频率计算。 1SOC 是同义词。

  • 2SOC [ chi ],用多态自旋混合(MSSM)模型进行Truhlar等人建议的两态自旋混合模型 [86] 计算。通过模拟两个自旋态之间的自旋轨道耦合,得到自旋混合基态。支持结构优化和振动频率计算。

  • 3SOC [ chi ],用MSSM模型计算三个自旋态构成的自旋混合基态。类似地,有 4SOC [ chi ]、5SOC [ chi ]、等,最多支持九个自旋不同的态构成的自旋混合态。

  • MECP ,优化两个态之间的最低能量交叉点(MECP);暂不支持

  • CI ,优化两个态之间的锥形交叉点(CI);暂不支持

chi 是可选的旋轨耦合常数的经验值(单位: \(\rm cm^{-1}\) );如果不提供,采用默认值 400。

  • 对于3d元素体系, chi 建议取值50至400。一般来说结果对取值不敏感 [93] ,但成键非饱和的3d元素体系最大可以取到1800 [86]

  • 对于4d元素体系, chi 可以取50至800,但成键非饱和的4d元素体系最大可以取到2000。

  • 对于5d元素体系, chi 可以取500至3000,建议值2500 [86] 。 如果涉及成键非饱和的5d元素,MSSM模型的能量可能不可靠,建议在优化的驻点结构上用二分量或四分量相对论方法进行单点能校正。

  • MSSM模型不适用于锕系以及更重元素的体系。

Maxcycle 参数类型:整型

指定最大优化步数。对于DL-Find优化器,默认值为50;对于BDF优化器,默认值为max(100, 6*原子数)。

TolGrad 参数类型:浮点型

指定均方根梯度(RMS Gradient)的收敛标准,单位Hartree/Bohr。对于DL-Find优化器,默认值为2.D-4;对于BDF优化器,默认值为3.D-4。该参数同时还将梯度的最大分量(Max Gradient)的收敛标准设为TolGrad的1.5倍。

TolEne 参数类型:浮点型

  • 默认值:1.D-6

指定结构优化相邻两步能量变化的收敛标准,单位Hartree。该参数仅对DL-Find优化器有效。

TolStep 参数类型:浮点型

  • 默认值:1.2D-3

均方根步长(RMS Step)的收敛标准,单位Bohr。该参数仅对BDF优化器有效。该参数同时还将步长的最大分量(Max Step)的收敛标准设为TolStep的1.5倍。

IOpt 参数类型:整型

  • 默认值:3

  • 可选值:3、10(当Solver=1时);0、1、2、3、9、10、11、12、13、20、30、51、52(当Solver=0时)

指定优化目标。对于DL-Find优化器,该参数的意义与DL-Find的IOpt参数意义相同,其中常用的有3(L-BFGS)和10(P-RFO); 对于BDF优化器,仅支持其中的2个IOpt值,IOpt=3(优化极小值点)和IOpt=10(优化过渡态)。

Trust 参数类型:浮点型

  • 默认值:0.3

  • 可选值:非零实数

建议范围:0.005 ~ 0.5或-0.5 ~ -0.005

指定优化的置信半径(trust radius)。当置信半径r设定为正数时,程序的初始置信半径将设为r,但在随后的结构优化步骤中可能会视优化情况而动态地增加或减少置信半径。当置信半径r设定为负数时,程序的初始置信半径将设为|r|,且随后的结构优化步骤中保证置信半径不会超过|r|。

Update 参数类型:整型

  • 默认值:对于极小值点优化为3,对于过渡态优化为2

  • 可选值:0、1、2、3、9

指定几何优化过程中Hessian的更新方式。0为每步均重新计算数值Hessian;1为Powell更新法(仅DL-Find支持);2为针对过渡态的Bofill更新法;3为指定L-BFGS更新法(优化器为DL-Find),否则指定BFGS更新法;9为针对极小值点的Bofill更新法。如选择0以外的值,则程序将在几何优化的第一步构造基于分子力场的初始Hessian。

ICoord 参数类型:整型

  • 可选值:0、3

本参数指定几何优化使用的坐标类型(仅在使用DL-Find优化器时才有效)。如ICoord=0,采用直角坐标;如ICoord=3,采用冗余内坐标。对于DL-Find优化器,默认值为0;对于BDF优化器,该关键词不起作用,程序总是使用冗余内坐标进行优化。

ILine 参数类型:整型

  • 可选值:0、1

本参数指定是否在几何优化过程中进行线性搜索;如不进行线性搜索,则只进行二次搜索。ILine=0表示不进行线性搜索,否则表示进行线性搜索。对于DL-Find优化器,默认值为0;对于BDF优化器,默认值为1。

Frozen 参数类型:整数数列

本参数指定进行笛卡尔坐标约束性优化(constrained optimization),即在约束一个或多个原子的笛卡尔坐标的情况下,优化分子其余的自由度。该关键词后面的第一行应是一个整数,表示约束的数目,设其为N;第2行到第N+1行,每一行分别由2个整数组成,其中第一个是待冻结的原子编号,第二个的允许取值及其意义为:

  0: 不冻结(默认值)
 -1: 冻结该原子的x、y、z坐标
 -2: 冻结该原子的x坐标
 -3: 冻结该原子的y坐标
 -4: 冻结该原子的z坐标
-23: 冻结该原子的x、y坐标
-24: 冻结该原子的x、z坐标
-34: 冻结该原子的y、z坐标

其中当使用BDF优化器时,该数字仅允许取0或-1。

备注

程序冻结的是用户指定的各原子之间的相对笛卡尔坐标,原子的绝对笛卡尔坐标仍可能因为分子标准取向的变化而变化。

Constrain 参数类型:整数数列

本参数指定进行约束性优化(constrained optimization),即在约束一个或多个原子的笛卡尔坐标、键长、键角或二面角的情况下,优化分子其余的自由度。目前本参数仅支持BDF优化器。该关键词后面的第一行应是一个整数,表示约束的数目,设其为N;第2行到第N+1行,每一行分别由1~4个整数组成。如某一行有1个整数,表示原子编号为该整数的原子的笛卡尔坐标被冻结;如某一行有2个整数,表示原子编号为这2个整数的原子之间的键被冻结;如某一行有3个整数,表示原子编号为这3个整数的原子之间的键角被冻结;如某一行有4个整数,表示原子编号为这4个整数的原子之间的二面角被冻结。

$bdfopt
Constrain
2
1 5        #1号原子-5号原子之间的化学键被冻结
1 4 8      #1号原子-4号原子-8号原子的键角被冻结
$end

此外,也可先将键长、键角或二面角设定为用户给定值,再进行冻结。例如以下输入表示冻结5号原子和10号原子的距离(即保持这两个原子的距离等于初始结构里的距离);与此同时将4号原子和5号原子的距离调整为1.5埃(而不管初始结构里这两个原子之间的距离是多少),然后冻结4号原子和5号原子的距离。

$bdfopt
Constrain
2
5 10
4 5 = 1.5 # 单位为Angstrom;注意即便初始坐标是以Bohr为单位输入的,这里的用户给定值的单位仍然为Angstrom
$end

备注

与其他某些量化程序不同,即使分子坐标是以直角坐标而非内坐标形式指定的,BDF仍然可以冻结分子的键长、键角或二面角。此外,当冻结笛卡尔坐标时,程序冻结的是用户指定的各原子之间的相对笛卡尔坐标,原子的绝对笛卡尔坐标仍可能因为分子标准取向的变化而变化。

Hess 参数类型:字符串

  • 可选值:only、init、final、init+final

指定计算Hessian。如为only,则仅计算Hessian而不做几何结构优化。如Hessian计算正常结束,程序将把Hessian对角化并进行热化学分析,给出振动频率、振动简正模、零点能、内能、焓、熵、Gibbs自由能等数据。如为init,则首先计算Hessian,然后以其为初始Hessian进行几何结构优化。该方法主要应用于过渡态搜索中(因为默认的基于分子力场的初始Hessian缺乏虚频)。程序不对该Hessian进行热化学分析。如为final,则首先进行结构优化,如结构优化收敛,则在收敛的几何结构上计算Hessian,并进行频率分析和热化学分析。在其他量化程序中,这种计算模式常被称为opt+freq。如为init+final,则首先计算初始Hessian,然后进行几何结构优化,优化收敛后再计算Hessian。程序仅对后一个Hessian进行频率分析和热化学分析,而不对前一个Hessian进行这些分析。

注意

BDF目前仅支持HF/DFT的解析Hessian,使用TDDFT激发态结构优化使用数值Hessian。如果要HF/DFT也强制使用数值Hessian,可以使用 UseNumHess 关键词。

UseNumHess 参数类型:Bool型

强行计算数值Hessian,即使某个方法的解析Hessian可以获得。解析Hessian方法仅支持HF/DFT,DFT目前支持LDA、GGA、Hybrid和RS-Hybrid泛函。

ReCalcHess 参数类型:整型

  • 可选值:非负整数

指定在几何优化中,每隔多少步计算一次数值Hessian。如不提供该关键词,默认在几何优化过程中不计算数值Hessian(除非指定了Update=0)。

NumHessStep 参数类型:浮点型

  • 默认值:0.005

  • 可选值:正实数

建议范围:0.001 ~ 0.02

指定数值Hessian计算时,扰动分子的步长(单位:Bohr)。

备注

NumHessStep只能在已经用其他关键词(如Hess、ReCalcHess、RmImag、Update等)指定计算Hessian的前提下,改变扰动分子的步长,其本身并没有指定计算Hessian的作用。因此,如果只指定NumHessStep而不搭配其他和计算Hessian有关的关键词,则NumHessStep不会有任何效果。

ReadHess 参数类型:Bool型

指定读取$BDFTASK.hess作为结构优化的初始Hessian(其中$BDFTASK为当前输入文件的名字去掉后缀.inp得到的字符串)。$BDFTASK.hess可以由其他的频率计算任务产生,而不一定需要和当前结构优化计算的理论级别一致。

RestartHess 参数类型:Bool型

指定对频率任务进行断点续算。

RmImag 参数类型:Bool型

对于极小值点优化,该关键字表示如果优化收敛后的结构存在虚频,则自动尝试消除虚频直至分子没有虚频为止;对于过渡态优化,该关键字表示如果优化收敛后的结构存在多于1个虚频,则自动尝试消除虚频直至分子恰有一个虚频为止。需要注意的是,消除虚频不能保证成功,所以计算结束后用户仍然需要手动检查虚频数目是否正确。对于过渡态优化收敛后的结构没有虚频的情形,用该关键字也有一定概率可以找到虚频数目为1的结构,但是成功率较低。

ParHess 参数类型:Bool型

指定在数值Hessian计算中,并行运行多个梯度计算,每个梯度计算使用NCorePerGrad(见下)个核,仅当剩余梯度数目乘以NCorePerGrad小于计算节点物理核数时,每个梯度才用多个核计算。该关键词有助于改善数值Hessian的并行效率。

O1NumHess 参数类型:Bool型

指定用O1NumHess库计算数值Hessian。相比默认的数值Hessian算法需6N个梯度(N为原子数),对于足够大的体系,O1NumHess所需计算的梯度数目与N无关,约为100个左右;即使对于小体系,O1NumHess也至多只需要计算3N-3个梯度。计算得到的平均振动频率误差在2~5 cm-1左右,Gibbs自由能误差在1 kcal/mol左右。该关键词尤其适用于(1)程序暂时不支持解析Hessian的方法,例如TDDFT;(2)程序虽然支持解析Hessian,但因体系过大,内存不足,导致解析Hessian计算缓慢的情形。与ParHess类似,O1NumHess默认并行运行多个梯度计算,每个梯度计算使用NCorePerGrad(见下)个核,仅当剩余梯度数目乘以NCorePerGrad小于计算节点物理核数时,每个梯度才用多个核计算。

注意

ParHess和O1NumHess关键词仅在2025年7月及以后的BDF版本中支持,且要求用户安装(并能从计算节点上正确调用)Python3、NumPy和SciPy。

NCorePerGrad 参数类型:整型

  • 默认值:1

  • 可选值:小于等于计算节点物理核数的正整数。最好远小于计算节点物理核数,且能整除计算节点物理核数

仅当打开O1NumHess或ParHess时有效。指定每个梯度计算至少需要使用多少个核。

DMax 参数类型:浮点型

  • 默认值:1.0

  • 可选值:任意实数,推荐范围0~2

仅当打开O1NumHess时有效。指定计算精度,DMax越大,Hessian结果越精确,但计算所需梯度的数目也越多。

NoDeleteGradFiles 参数类型:Bool型

仅当打开O1NumHess或ParHess时有效。指定不删除数值Hessian计算中产生的SCF波函数等临时文件。

QRRHO 参数类型:Bool型

指定用Grimme的QRRHO方法 [94] ,而非默认的刚性转子-谐振子近似(RRHO)计算熵、Gibbs自由能。开启QRRHO会使得较大体系,尤其是涉及非共价相互作用和/或柔性的体系的自由能、熵的计算精度提高,对于刚性小体系的计算结果几乎没有影响。开启QRRHO后,自由能、熵结果与ORCA、Turbomole可比,但与Gaussian不可比。若所研究的课题涉及至少一个非共价相互作用很重要的体系的自由能计算,且不需要计算结果与Gaussian可比,则建议总是打开QRRHO。

备注

开启QRRHO算出来的自由能、熵,与不开启QRRHO算出来的自由能、熵不可比,不能作差得到自由能变、熵变。

NMSym 参数类型:Bool型

由于数值噪声或者开壳层体系中的 Jahn-Teller 效应,可能无法判断简正振动模式的不可约表示。该关键词可以把简正振动模式做对称化处理。 默认不开启。

NDeg 参数类型:整型

  • 默认值:1

  • 可选值:正整数

指定当前电子态的电子简并度,用于计算热化学分析中的吉布斯自由能。电子简并度等于空间简并度乘以自旋简并度,其中空间简并度等于当前电子态所属不可约表示的维数(当分子属于阿贝尔群时,空间简并度等于1),自旋简并度对于非相对论计算和标量相对论计算等于自旋多重度(2S+1),而对考虑了旋轨耦合的计算等于2J+1,其中J为当前电子态的总角动量量子数。注意即使对于电子简并度不等于1的体系,NDeg的默认值仍然是1,用户必须手动指定正确的NDeg值,这一点对于开壳层体系的吉布斯自由能计算尤其重要。

NTemp 参数类型:整型

  • 默认值:1

  • 可选值:正整数

用户提供的温度值的个数。这些温度值由下面的 Temp 定义。 NTemp 必须出现在 Temp 之前才有意义,否则只能为 Temp 提供一个温度值。

Temp 参数类型:浮点型

  • 默认值:298.15

  • 可选值:正实数

指定在什么温度下进行热化学分析(单位:K)。

NPress 参数类型:整型

  • 默认值:1

  • 可选值:正整数

用户提供的压强值的个数。这些压强值由下面的 Press 定义。 NPress 必须出现在 Press 之前才有意义,否则只能为 Press 提供一个压强值。

  • NTemp > 1, NPress = 1时,对给定压强下的各种温度进行热化学计算;

  • NTemp = 1, NPress > 1时,对给定温度下的各种压强进行热化学计算;

  • NTemp > 1, NPress > 1时,除了常温常压下的热化学计算之外,还对每一对温度值和压强值进行热化学计算,若 NTempNPress 不等,则用常温或常压补全。

Press 参数类型:浮点型

  • 默认值:1.0

  • 可选值:正实数

指定在什么压强下进行热化学分析(单位:atm)。

Scale 参数类型:浮点型

  • 默认值:1.0

  • 可选值:正实数

指定在振动频率计算后进行热化学分析的频率换算因子,一般在 0.9 至 1.0 之间。 一些文献中总结了常见 泛函 / 基组 搭配的频率换算因子。

ScTol 参数类型:浮点型

  • 默认值:0.0

  • 可选值:正实数

Scale 进行频率换算的阈值(单位:cm \(^{-1}\) )。在阈值以下的低频不做换算。 若不指定 ScTol ,默认对除了虚频以外的全部振动频率做换算。

备注

BDF的电子结构计算基于 Born-Oppenheimer 近似,导致一些振动模式的频率偏高, 尤其是当键伸缩模式中的一个原子位于元素周期表的前两行(H至F),频率的高估尤为明显,进而高估热化学能。 因此对于这类体系,合理的做法是只把高于某个阈值(例如, ScTol = 400)的振动频率进行换算。

Scan 参数类型:整数数列

指定进行柔性扫描计算。 Scan 后面的第一行应当是一个整数,或两个用空格分隔的整数,后续的写法视第一行是一个整数还是两个整数而有所不同。 (1)若 Scan 后面的第一行是一个正整数(记为N,N可以为1),则代表进行N维网格扫描,接下来应该再写N行,每行的格式采取以下三种之中的一种(其中A、B、C、D为正整数,startvalue、endvalue、interval为浮点数):

# 以interval为步长,将第A个原子与第B个原子形成的键的键长从startvalue扫到endvalue(含)。单位:Angstrom
A B = startvalue endvalue interval
# 以interval为步长,将第A个原子、第B个原子、第C个原子形成的键角从startvalue扫到endvalue(含)。单位:度
A B C = startvalue endvalue interval
# 以interval为步长,将第A个原子、第B个原子、第C个原子、第D个原子形成的二面角从startvalue扫到endvalue(含)。单位:度
A B C D = startvalue endvalue interval
# 所有原子编号从1开始

(2)若 Scan 后面的第一行是两个正整数(记为M、N),则代表进行散点扫描,共需要改变M个内坐标,扫N个结构。此时应当首先在这行之后写M行,表示要扫描哪些内坐标,每行的格式采取以下三种之中的一种(其中A、B、C、D为正整数):

# 假设这是M行之中的第i行,则第i个待扫描的内坐标为第A个原子与第B个原子形成的键的键长。单位:Angstrom
A B
# 假设这是M行之中的第i行,则第i个待扫描的内坐标为第A个原子、第B个原子、第C个原子形成的键角。单位:度
A B C
# 假设这是M行之中的第i行,则第i个待扫描的内坐标为第A个原子、第B个原子、第C个原子、第D个原子形成的二面角。单位:度
A B C D
# 所有原子编号从1开始

接着再写N行,每行M个数。若第i行的第j个数为x,则代表第i个希望扫描的结构里,第j个上述指定的内坐标的值为x。

备注

  1. 二面角A-B-C-D中,A、B、C、D各原子未必需要成键,利用这一点可以对分子偏离平面的程度进行扫描,例如可以将NH3分子的H-H-N-H二面角从180度往小于180度的方向扫描,即模拟NH3从平面构型逐渐变为三角锥构型的过程。

  2. 扫描若涉及大于180度的二面角,在显示时会被减去360度。例如若从150度扫描到210度、步长为30度,则得到一条3个点的扫描轨迹,二面角分别为150度、180度、-150度。

  3. 扫描的第N步会读取第N-1步的结构和波函数作为初猜。

  4. 扫描的第1步的内坐标可以和初始结构不严格相同,但若差异太大,有概率导致扫描失败。例如不宜在初始结构某个二面角为60度时,指定从-60度开始扫描这个二面角,但从50度开始扫描一般是没有问题的。

  5. 若希望从较大的键长/键角/二面角向较小数的方向扫描,则interval必须设为负值。

  6. 柔性扫描功能仅支持 solver=1 ,不支持 solver=0

  7. 对于多维扫描,程序优先改变较后指定的内坐标。例如对于以下输入,扫描的顺序是 (1.0, 170) -> (1.0, 180) -> (1.0, -170) -> (1.1, 170) -> (1.1, 180) -> (1.1, -170) (其中第一个数表示1号原子和3号原子之间的键长,单位为Angstrom;第二个数表示1号、3号、5号、10号原子形成的二面角,单位为度)

$bdfopt
solver
1
scan
2
1 3 = 1.0 1.1 0.1
1 3 5 10 = 170 190 10
$end

Dimer 参数类型:Bool型

用DL-FIND外部库 [84] 的Dimer方法 [80, 81, 82] 优化过渡态。该方法只需要计算梯度,不需要计算Hessian。 如果修改Dimer方法的默认参数,需要改用下面的 Dimer-Block ... End Dimer 输入块。

Dimer-Block 参数类型:多个关键词

Dimer方法的另一种指定方式。在 Dimer-Block 中允许修改以下关键词,以 End Dimer 结束。

NoInterpolation 参数类型:Bool型

执行旋转Dimer步骤之后,重新计算梯度,这样或许能略微减少结构收敛的步数,但是额外的梯度计算会耗费更多的计算时间。默认为用内插方法估算梯度。

Delta 参数类型:浮点型

  • 默认值:0.01

  • 可选值:正实数

两个像点的间距,原子单位,仅对直角坐标优化有效。

Crude 参数类型:Bool型

把均方根梯度收敛标准( TolGrad )从默认的2.0D-4提高到1/750 = 1.33D-3。如果仅关心过渡态的能量和定性的几何结构,或者想把优化的过渡态结构用其它方法做进一步优化,可以加上该选项。

NEB 参数类型:Bool型

用DL-FIND外部库 [84] 的CI-NEB方法 [83] 计算反应路径,其中能量最高点对应过渡态(如果路径存在能垒的话)。

CI-NEB计算需要提供两个端点的坐标,其中第一个端点(例如,可以是反应物或中间体)的初始结构来自 Compass 模块的几何结构, 而第二个端点(例如,可以是产物或另一个中间体)的初始结构在 Geometry2 ... End Geometry2 输入块(见下)提供。 需要注意两套坐标的原子顺序必须一致。此外还可以提供中间像点的坐标(见 NFrame )。

如果修改CI-NEB方法的默认参数,需要改用下面的 NEB-Block ... End NEB 输入块。

NEB-Block 参数类型:多个关键词

CI-NEB方法的另一种指定方式。在 NEB-Block 中允许修改以下关键词,以 End NEB 结束。

NImage 参数类型:整型

  • 默认值:5

  • 可选值:正整数

定义路径上的中间像点个数。在实际计算中,总像点数为MImage = NImage + 3,其中,1号、MImage-1号像点对应两个端点,2至MImage-2号为中间像点。 CI-NEB对能量最高的点执行CI步骤时,这个点的数据存放在MImage。

NEBk 参数类型:浮点型

  • 默认值:0.01

  • 可选值:正实数

定义CI-NEB的经验力常数。

NEBMode 参数类型:整型

  • 默认值:2

  • 可选值:0,1,2

两个端点的处理方式。包括:优化两个端点,达到能量最小化(0),仅在垂直于路径的方向优化两个端点(1),以及固定两个端点不做优化(2)。

Crude 参数类型:Bool型

把均方根梯度收敛标准( TolGrad )从默认的2.0D-4提高到1/750 = 1.33D-3。如果仅关心定性的结果,或 NImage 比较大时,可以加上该选项。

NFrame 参数类型:整型

  • 默认值:1

  • 可选值:1至 NImage +1 的正整数(CI-NEB计算)

Geometry2 中提供的坐标个数。 NFrame 必须出现在 Geometry2 之前才有意义,否则只能为 Geometry2 提供一个坐标。

Geometry2 参数类型:字符串数组

为CI-NEB方法指定第二个端点的几何结构,目前仅支持直角坐标(有待今后完善),单位:埃。如果输入坐标为原子单位,可以加上 Bohr,即 Geometry2 Bohr 。 本关键词以 End Geometry2 结束。 由于第二个端点与第一个端点的原子顺序必须一致,因此这里可以省略原子名称,仅输入直角坐标数据。

如果 NFrame > 1,可以在 Geometry2 中为CI-NEB计算提供中间像点的结构,按照像点的编号排序,第二个端点的结构放到最后。

Hartree-Fock梯度 - GRAD模块

GRAD模块用于计算HF/MCSCF的解析梯度。

基本关键词

Nrootgrad 参数类型:整型

指定计算MCSCF的那个根的梯度。

Maxiter 参数类型:整型

指定CPMCHF的最大迭代次数。

IntCre 参数类型:整型

用于增加存储AO积分的内存大小为:intcre*256*1024*1024Bytes。

Ishell 参数类型:整型

Cutcpm 参数类型:浮点型

  • 默认值:1.D-6

指定求解CPMCHF方程的收敛阈值。

Printgrad 参数类型:整型

  • 可选值:0、3、>99

控制梯度打印。0为最小输出;3为输出单电子项对梯度的贡献;>99仅用于调试模式。

DFT/TDDFT梯度及响应性质 - RESP模块

resp模块用于计算DFT/TDDFT的梯度,TDDFT理论级别下的非绝热耦合矩阵元(包括基态-激发态之间的非绝热耦合矩阵元,和激发态-激发态之间的非绝热耦合矩阵元),以及激发态偶极矩等响应性质。

基本关键词

Iprt 参数类型:整型

控制打印输出级别,主要用于程序调试。

NOrder 参数类型:整型

  • 默认值:1

  • 可选值:0、1、2

几何坐标导数的阶数,可选值0、1和2。目前仅支持0和1,其中0表示计算不涉及对核坐标求导的响应性质,如激发态偶极矩;1表示计算解析梯度。尚不支持2(计算解析 Hessian)。本参数要求必须先设置Geom。

Geom 参数类型:Bool型

本关键词无需提供参数,需要与Norder关键词联用,用于指定计算几何坐标一阶或二阶导数。

可选值:1.梯度或fo-NACMEs;2.Hessian

MaxMem 参数类型:整型

解析Hessian计算所需的堆内存,单位为GB,默认值为32。堆内存与栈内存之和必须小于节点总物理内存,考虑到内存估计的误差及同一个节点上的其他进程消耗的内存,建议小于节点总物理内存的80%。也即: OMP_STACKSIZE*OMP_NUM_THREADS + maxmem <= 物理内存*80% 。对于解析Hessian计算,建议 OMP_STACKSIZE*OMP_NUM_THREADSmaxmem 的1/3~1/10左右,但若这使得 OMP_STACKSIZE 小于1G,则设置 OMP_STACKSIZE=1G 。注意该关键词仅对解析Hessian计算有效,对resp模块支持的其他计算类型无效,尽管后者也会消耗堆内存,这是因为一般来说仅对解析Hessian计算,堆内存才占据总内存消耗的较大比例。特别地,该关键词对数值Hessian计算无效。

NFiles 参数类型:整型

对于TD-DFT响应性质计算,指定读取哪个$tddft块的计算结果;注意当该参数等于x时,并不简单代表读取第x个$tddft块的计算结果,而是指读取istore值为x的那个$tddft块的计算结果。例如对于某闭壳层分子的以下输入($compass、$xuanyuan、$scf略去):

$tddft
imethod
1
Nroot
1
istore
1
$end

$tddft
imethod
1
isf
1
Nroot
1
istore
2
$end

$resp
geom
imethod
2
nfiles
2            #计算最低三重激发态的梯度,而不是最低单重激发态的梯度
             #因为nfiles=2,而只有第2个$tddft块(最低三重激发态)的istore=2
$end

Imethod 参数类型:整型

  • 默认值:1

  • 可选值:1、2

指定进行DFT基态计算还是TD-DFT激发态计算。1为基态,如指定2,则为激发态计算。在较老的BDF版本中该关键词写作Method,目前程序既支持Imethod也支持Method,但是未来可能会只支持前者。

#计算第一个TD-DFT激发态的TD-DFT梯度
$tddft
Nroot
1
istore
1
$end

$resp
geom
imethod
2
nfiles
1
$end
#计算基态梯度
$resp
geom
$end

Ignore 参数类型:整型

  • 默认值:0

  • 可选值:-1、0、1

用于TDDFT梯度计算的数据一致性检查,主要用于调试程序。

-1:重新计算TDDFT的激发能,用于检查Resp和TDDFT模块对能量计算是否一致。仅供调试程序使用。

0: 检查Wmo矩阵是不是对称矩阵。理论上,Wmo矩阵应该是对称矩阵,但如果TDDFT或者Z-Vector迭代没有完全收敛,Wmo矩阵会表现出明显的不对称,此时程序报错退出,并告诉用户Wmo矩阵不对称的较可能原因是TDDFT没有完全收敛还是Z-Vector方程求解没有完全收敛。注意有时Wmo矩阵不对称也可能是用户某些关键词输入错误导致的。

1: 忽略Wmo矩阵对称性检查。仅当用户确认其设置的TDDFT和Z-vector收敛阈值足够严,不会对计算结果精度造成不可接受的影响,且输入文件各关键词输入正确,但程序仍然因对称性检查不通过而报错时,才应将ignore设置为1。

Rtol 参数类型:浮点型

  • 默认值:1E-10

  • 可选值:正数

指定Z-vector方程的收敛阈值。

IRep & IRoot 参数类型:整型

这两个关键词指定计算哪个/哪些态的TD-DFT梯度或激发态偶极矩。分4种情况:

  1. 既指定IRep,又指定IRoot:如以下的输入

#计算第2个不可约表示(irrep)下的第3个根的梯度或偶极矩
irep
2
iroot
3
  1. 只指定IRep:计算该不可约表示下的所有根的梯度或偶极矩。

  2. 只指定IRoot:例如

#将所有不可约表示下计算的根按照能量从低到高排序,然后计算第3个根的梯度或偶极矩
iroot
3

若写作

iroot
-3

表示:结构优化的第一步时计算第3个根的梯度,第N+1步时(N=1,2,...)计算与第N步计算梯度的那个根的成分最接近的根的梯度(即在TDDFT结构优化的过程中进行态跟踪)。注意这种写法只在分子属于C1群时支持,且要求不能有任何激发态的激发能是虚数或者复数(即便这个态不是用户希望跟踪的态)。

  1. 两者都不指定:计算tddft得到的所有态的梯度或偶极矩。

JahnTeller 参数类型:字符串

对于具有一定对称性的分子,如果分子所属点群是高阶点群,则TDDFT结构优化可能会导致分子出现Jahn-Teller畸变,但畸变方向可能有多个。例如,假设一个具有Ih对称性的分子有一个三重简并的激发态T2g,则该态发生Jahn-Teller畸变后,几何结构的对称性可能会降低为D2h,D3d,D5d或这些群的子群。 因此在TDDFT结构优化中,从第二步优化开始分子结构的对称性可能会降低。 当Jahn-Teller畸变得到的点群不唯一时,可以用JahnTeller关键词指定具体的Jahn-Teller畸变方式。例如:

$resp
...
JahnTeller
 D(2h)
$End

上例指定当存在Jahn-Teller畸变且畸变方式不唯一时,优先选择畸变后结构属于D2h群的畸变方式。如果由群论可以推出该分子在当前电子态下不会发生Jahn-Teller畸变,或虽然会发生Jahn-Teller畸变但不会得到属于D2h群的结构,则程序会打印警告信息,并忽略用户输入。 如果当前分子会发生Jahn-Teller畸变,但用户没有指定JahnTeller关键词,则程序会在Jahn-Teller畸变时尽量保持分子的高阶对称轴。仍以上述Ih群的T2g态为例,若不指定JahnTeller关键词,则分子会畸变为D5d结构,因为只有这样才能保持Ih群的五重对称轴。

Line 参数类型:Bool型

执行resp进行线性响应计算。

Quad 参数类型:Bool型

指定resp进行二次响应计算。

Fnac 参数类型:Bool型

指定resp计算一阶非绝热耦合(first-oder noadibatic couplings)向量,需要与Single或者Double参数联用,分别指定计算基态-激发态、激发态-激发态非绝热耦合向量。

Single 参数类型:Bool型

指定计算基态-激发态非绝热耦合向量。

States 参数类型:整型数组

指定计算哪些态与基态的非绝热耦合向量。本参数是多行参数:

第一行:输入整数n, 指定要计算基态与n个激发态之间的非绝热耦合向量。

第二行至第n+1行,指定电子态,格式为 m i l 三个整数,m为先前的TDDFT计算istore指定存储的文件编号,i为第i个不可约表示,l是该不可约表示的第l个根。

Double 参数类型:Bool型

指定计算激发态-激发态非绝热耦合向量。

Pairs 参数类型:整型数组

指定计算哪两组激发态之间的非绝热耦合向量。本参数是多行参数:

第一行:输入整数n, 指定要计算n对激发态之间的非绝热耦合向量。

第二行至第n+1行,指定电子态,格式为 m1 i1 l1 m2 i2 l2 六个整数,每三个整数指定一个激发态。m1为先前的TDDFT计算istore指定存储的文件编号,i1为第i1个不可约表示,l1是该不可约表示的第l1个根。另三个整数同理。

Noresp 参数类型:Bool型

指定在Double和FNAC计算中忽略跃迁密度矩阵的响应项。推荐使用该关键词。

Grid 参数类型:字符串

  • 默认值:Medium

  • 可选值:Ultra Coarse、Coarse、Medium、Fine、Ultra Fine

指定DFT计算的格点类型。

Gridtol 参数类型:浮点型

  • 默认值:1.0E-6(对于meta-GGA为1.0E-8)

指定产生DFT自适应格点的截断阈值。该值越低,格点数越多,因此数值积分精度越高,但计算量也越大。

MPEC+COSX 参数类型:Bool型

指定利用多级展开库伦势(Multipole expansion of Coulomb potential, MPEC)方法计算J矩阵, COSX(Chain-of-sphere exchange)方法计算K矩阵。 在 resp 模块中保留该关键词只是为了向下兼容,建议在 Compass 模块中设定该关键词。

Solneqlr 参数类型:Bool型

指定进行线性响应非平衡溶剂化效应计算。

Soleqlr 参数类型:Bool型

指定进行线性响应平衡溶剂化效应计算。

Solneqss 参数类型:Bool型

指定进行态特定非平衡溶剂化效应计算。

Soleqss 参数类型:Bool型

指定进行态特定平衡溶剂化效应计算。

能量及电荷转移 - ELECOUP模块

ELECOUP主要功能有:

  1. 基于HF计算同一分子的两个电子态之间的耦合积分;

  2. 计算两个分子片之间的电荷迁移积分;

  3. 计算两个分子片激发态间的能量迁移积分。

备注

基于HF计算同一分子两个激发态之间耦合积分,需要使用ΔSCF方法,通常利用SCF模块中的mom功能。

Iprt 参数类型:整型

打印控制参数,仅用于调试程序。

UHF 参数类型:Bool型

两个电子态之间耦合积分基于UHF波函数。

Nexcit 参数类型:整型

指定每个分子激发态的数目。

GSApr 参数类型:Bool型

指定是否对基态近似处理。

计算电荷迁移积分关键词

Electrans 参数类型:整型数组

本参数是多行参数,用于指定若干对Donor与Acceptor分子轨道,计算它们之间的电荷迁移积分。格式如下:

第一行: 输入整数n,指定要计算n对轨道之间的迁移积分

第二行到第n+1行:输入三个整数 i j k, i为Donor的第i个轨道,j为acceptor的第j个轨道,参数k为1或者2,分别指定alpha轨道或beta轨道。

Dft 参数类型:字符串

指定计算电荷迁移积分使用什么交换相关泛函。如果不输入该参数,默认用与Kohr-Sham计算时相同的泛函。

定域化激发态

locales 参数类型:整型

指定获得定域化激发态的方法。

  • 默认值: 0

  • 可选值: 0, 1; 0 Boys定域化方法, 1 Ruedenberg 定域化方法

分子轨道定域化 - LOCALMO模块

LOCALMO模块用于产生定域化的分子轨道,包含了Boys,Pipek-Mezey,以及改进的Boys定域化等方法。localmo还用于为FLMO方法产生初始的分子片定域轨道。

基本控制参数

Boys 参数类型:Bool型

指定使用Boys定域化方法定域轨道。Boys是Localmo模块默认的方法。

Mboys 参数类型:整型

指定使用改进的Boys定域化方法,下一行为一个整数,指定改进Boys方法的指数因子。

Pipek 参数类型:Bool型

指定使用Pipek-Mezey定域化方法。默认用Mulliken电荷,如果设置了Lowdin参数,则Pipek-Mezey方法用Lowdin电荷而非默认的Mulliken电荷。本方法默认用雅可比旋转定域化轨道,如果需要指定用Trust-Region方法 ,需要使用关键词Trust。

Mulliken 参数类型:Bool型

指定Pipek-Mezey方法使用Mulliken电荷。默认选项。

Lowdin 参数类型:Bool型

参数指定Pipek-Mezey方法使用Lowdin电荷。

Jacobi 参数类型:Bool型

指定Pipek-Mezey方法利用雅可比旋转定域轨道。

Trust 参数类型:Bool型

指定Pipek-Mezey方法利用Trust Region方法定域轨道。

Hybridboys 参数类型:整型

可选值:-100、100

指定Pipek-Mezey或Boys定域化方法混合使用雅可比旋转与Trust Region方法定域轨道。默认不使用混合方法,如果加入了这个参数,下一行输入必须为整数。 -100: 仅将虚轨道先用雅可比旋转定域化100次或者定域化达到收敛阈值Hybridthre后,转换为Trust Region方法继续定域化。 100: 将占据轨道与虚轨道都先利用雅可比旋转定域化100次或者定域化达到收敛阈值Hybridthre后,转换为Trust Region方法继续定域化。

Hybridthre 参数类型:浮点型

指定混合定域化方法的转换阈值。

Thresh 参数类型:浮点型

指定定域化方法收敛的阈值,输入为两个浮点数。

Tailcut 参数类型:浮点型

  • 默认值:1.D-2

指定忽略FLMO尾巴的阈值。

Threshpop 参数类型:浮点型

  • 默认值:1.D-1

指定Lowdin布居的阈值。

Maxcycle 参数类型:整型

指定Boys定域化允许的最大循环次数。

Rohfloc 参数类型:Bool型

指定定域化ROHF/ROKS轨道。

orbital 参数类型:字符串

指定文件读入分子轨道。

$LocalMO
Orbital
hforb       # 指定从SCF计算存储的hforb读入轨道
$End

Orbread 参数类型:Bool型

指定从 BDF_TMPDIR 中的文本文件inporb读入分子轨道。

Flmo 参数类型:Bool型

指定投影LMO到pFLMO。

Frozocc 参数类型:整型

指定不定域化的双占据轨道数目。

Frozvir 参数类型:整型

指定不定域化的虚轨道数目。

Analyze 参数类型:Bool型

指定分析用户给定的定域轨道,计算占据-空轨道对的数目和MOS(Molecular Orbital Spread)。分析定域轨道需要从BDF_TMPDIR读入名为bdftask.testorb的文件,并进行轨道分析。这一轨道文件与SCF的bdftask.scforb格式相同,均为文本文件。

Iapair 参数类型:浮点型

指定统计占据-空轨道对重叠的阈值,默认仅统计重叠绝对值大于1.0×10 -4 的占据-空轨道对。

Directgrid 参数类型:Bool型

指定利用直接数值积分的方法计算占据-空轨道对的绝对重叠。

Nolmocls 参数类型:整型

指定不定域化SCF的占据轨道。

Nolmovir 参数类型:整型

指定不定域化SCF的空轨道。

Moprt 参数类型:整型

指定打印定域分子轨道的系数。

不同基组扩展轨道 - EXPANDMO模块

EXPANDMO模块用于将小基组计算的MO扩展为大基组MO,扩展的MO可用于SCF的初始猜测,也可用于一些双基组(Dual Basis)的计算。此外,expandmo还可以利用原子价活性空间(atomic valance active space),自动构建MCSCF计算的活性空间和初始猜测轨道。

Overlap 参数类型:Bool型

指定利用小基组与大基组的重叠积分扩展分子轨道。

Expandmo模块依赖文件如下:

文件名

描述

文件格式

$BDFTASK.chkfil1

小基组计算的Check文件

二进制

输入文件

$BDFTASK.chkfil2

大基组计算的Check文件

二进制

输入文件

inporb

小基组计算产生的MO文件

文本文件

输入文件

$BDFTASK.exporb

扩展的MO系数文件,存储在 BDF_WORKDDIR中

文本文件

输入文件

#用cc-pVDZ基组计算CH2分子,并扩展分子轨道系数到aug-cc-pVDZ基组,用于SCF计算的初猜
# First we perform a small basis set calculation by using CC-PVDZ.
$COMPASS
Title
  CH2 Molecule test run, cc-pvdz
Basis
  cc-pvdz
Geometry
C     0.000000        0.00000        0.31399
H     0.000000       -1.65723       -0.94197
H     0.000000        1.65723       -0.94197
End geometry
UNIT
  Bohr
Check
$END

$XUANYUAN
$END

$SCF
RHF
Occupied
3  0  1  0
$END

#Change the name of check file.
%mv $BDF_WORKDIR/ch2.chkfil $BDF_WORKDIR/ch2.chkfil1
#Copy converged SCF orbital to work directory inporb.
%mv $BDF_WORKDIR/ch2.scforb $BDF_WORKDIR/ch2.inporb

# Then we init a large basis set calculation by using aug-CC-PVDZ
$COMPASS
Title
  CH2 Molecule test run, aug-cc-pvdz
Basis
  aug-cc-pvdz
Geometry
C     0.000000        0.00000        0.31399
H     0.000000       -1.65723       -0.94197
H     0.000000        1.65723       -0.94197
End geometry
UNIT
  Bohr
Check
$END

Møller–Plesset二阶微扰 - MP2模块

Møller-Plesset二阶微扰理论计算模块,主要用于实现双杂化DFT计算。 对于基于积分非直接的对称匹配轨道SCF算法(见 Saorb 关键词),MP2支持RHF和UHF参考波函; 对于积分直接SCF算法(默认情况,见 Skeleton 关键词),MP2仅支持RHF参考波函。

Nature 参数类型:Bool型

计算约化密度矩阵并输出自然轨道。

Molden 参数类型:Bool型

输出自然轨道为molden格式文件。

Iprtmo 参数类型:整型

控制轨道输出打印模式。

Fss, Fos 参数类型:浮点型

  • 默认值:1.0

SCS-MP2以及某些双杂化泛函使用的自旋组分调节(spin component scaling)参数。程序在计算完MP2能量以后,会将其中的同自旋(same-spin)成分乘以Fss,将反自旋(opposite-spin)成分乘以Fos。

核磁屏蔽常数计算 - NMR模块

NMR用于计算分子的核磁屏蔽常数。

igiao 参数类型:整型

指定是否计算GIAO的核磁共振屏蔽常数,可以为0(不做GIAO计算)或1(做GIAO计算),默认为0,输入形式如下:

igiao
  1

icg 参数类型:整型

指定是否计算COMMON GAUGE(CG)的核磁共振屏蔽常数,可以为0(不做CG计算)或1(做CG计算),默认为0,输入形式如下:

icg
  1

igatom 参数类型:整型

指定COMMON GAUGE计算的规范原点位置,接受的输入为0,或1到原子个数的值,默认为0。当igatom为0时,COMMON GAUGE的规范 原点设定在空间坐标原点上,而当igatom为1到分子原子数的值时,设定规范原点在第igatom的原子中心上。输入形式如下:

igatom
  3      # 设定规范原点在第3个原子中心处

cgcoord 参数类型:实型3个数

指定COMMON GAUGE计算的规范原点位置到空间中某个坐标点上,输入坐标的默认单位是原子单位(即bohr,AU),其单位可由参数 cgunit 控制。

cgcoord
  1.0 0.0 0.0   # 输入为3个实型数,将规范原点置于空间坐标为(1.0,0.0,0.0)的点上

cgunit 参数类型:字符串

给出 cgcoord 参数的单位,默认为原子单位(即bohr,AU),可以通过输入angstrom,将单位改为埃。其他输入(如bohr,AU,等),坐标单位为原子单位.

cgunit
  angstrom      # cgcoord坐标的单位,默认为原子单位,当输入为angstrom时,规范原点坐标单位为埃
                # 其他输入(如bohr,AU),坐标单位为原子单位,输入不区分大小写

内禀反应坐标 - IRC模块

IRC模块用于生成反应路径。

常用关键词

ircpts 参数类型:整数

  • 默认值:50

  • 可选值:正整数

设定反应路径(每个方向)上要检查的点的最大数量

ircdir 参数类型:整数

  • 默认值:0

  • 可选值:1,-1

设定反应的方向,1代表的是前进方向,-1代表的是后退方向,0代表两个方向都进行模拟。

ircalpha 参数类型:浮点数

  • 默认值:0.1

  • 可选值:非负浮点数

缩放初始位移,初始位移与过渡态的Hessian有关,通过调整ircalpha控制IRC计算的步长。

BDF多组态波函数方法模块手册

多组态自洽场 - mcscf模块

多组态自洽场(Multi-configuration self consistent filed, MCSCF)计算模块,如果未定义活性空间,则进行二阶收敛的RHF计算。如果不优化分子轨道,仅进行CASCI计算。

基本控制参数

AutoMC 参数类型:Bool型

当用户显式设置 $expandmo 模块以启用活性空间自动选择时, 采用此关键词,BDF将自动生成关键词``close``,active``actel``的值。

注意

用户输入优先级: 若用户在后续输入文件中手动设置``close``、activeactel 等关键词,用户自定义值将覆盖系统自动生成值。

Core 参数类型:整型数组

指定每个不可约表示的冻结双占据轨道数目。

Delete 参数类型:整型数组

指定每个不可约表示的冻结虚轨道。冻结轨道不参与轨道优化。

Close 参数类型:整型数组

指定每个不可约表示的非活性双占据轨道。

Active 参数类型:整型数组

指定每个不可约表示的活性轨道数目。

Actel 参数类型:整型

指定活性空间的电子数。

RootPrt 参数类型:整型数组

指定选择MCSCF的那个根计算数值梯度。

Symmetry 参数类型:整型

指定MCSCF计算电子态的对称性。

Spin 参数类型:整型

指定MCSCF计算电子态的自旋,2S+1。

Roots 参数类型:整型数组

roots是多行参数,指定MCSCF计算多少个根,如何态平均。根据计算的跟的数目,输入需要1或3行: 第一行:2到3个整数“n m i”,第一个整数“n”指定对多少个根做态平均;第二个整数“m”指定CI计算多少个根,n<=m; 第三个整数是控制参数,如果输入第三个整数为1,这无需额外的两行输入,直接对“n”个最低态做态平均;如果第三个整数未输入或输入0,这需要输入额外两行指定如何做态平均。 第二行:指定对那些根做态平均。 第三行:指定做态平均的根的权重,程序会自动归一化权重。

$MCSCF
...
Roots
3 4        # 对3个根做态平均,CI计算4个根
1 2 4      # 对第1、2、4三个态做态平均
1 1 1      # 每个态的权重相同
$End
$MCSCF
...
Roots
3 4 1   # 对3个根做态平均,CI计算4个根
$End

MixCI 参数类型:整型数组

MixCI是多行参数,参数控制对多个不同自旋多重度和对称性的电子态做态平均。需要四行输入。 第一行,整数“n”指定平均多少种不同自旋多重度和对称性的态。 第二行,每种态的自旋旋 多重度的。 第三行,每种态的数目。 第四行,每种态的空间对称性。

$MCSCF
....
MixCI
 3       # 3种不同对称性的电子态
1 3 5     # 自旋多重度分别为单重态、三重态和五重态
3 1 2     # 每种态分别平均3、1、2个根
1 4 3     # 每种态分数不可约表示1、4、3
$End

Guess 参数类型:字符串

可选值:hcore、huckel、hforb、mcorb、Inporb

指定MCSCF的初始猜测轨道。 hcore: 单电子哈密顿的解作为初始猜测。 huckel: 扩展的Huckel方法猜测 hforb: 读入bdftask.hforb作为初始猜测,由SCF计算产生 mcorb: 读入bdftask.mcorb作为初始猜测,有MCSCF计算产生 Inporb: 读入inporb作为初始猜测,inporb为文本格式,一般来自SCF或者MCSCF计算的文本格式输出的轨道。

Guga 参数类型:Bool型

指定采用GUGA算法计算CASCI。默认采用TUGA算法。

iCI 参数类型:Bool型

指定采用iCI方法作为CASCI求解器。但不提供iCI与CASCI偏差的ENPT2修正项。这就是iCISCF方法。

iCIPT2 参数类型:Bool型

指定采用iCI方法作为CASCI求解器。同时提供iCI与CASCI偏差的ENPT2修正项。这就是iCISCF(2)方法。

CVS 参数类型:Bool型

指定采用GUGA方法计算核电子激发(core excitations)。

Actfrz 参数类型:整型

冻结活性空间内实际为核心轨道(core orbitals)的分子轨道(MOs),可用于计算核电子激发(core excitations)。

输入格式规则: 第1行: 声明需冻结的活性MOs数量(正整数)。 第2行: 列出被冻结MOs的索引序号(需符合程序输入规范)。

$mcscf
...
actfrz
3
10 11 12  ! these three MOs are core orbitals
$end

SOCCAS 参数类型:Bool型

指定采用TUGA计算SOiCISCF。

SOCene 参数类型:Bool型

指定采用GUGA计算MCSCF所涉及的电子态之间的SOC。

XvrSet 参数类型:整型数组

设置通过expandmo生成的MCSCF的每个不可约表示的扩展虚轨道(XVR)轨道。 需与expandmo模块的``VSD``关键词联用,用于定义XVR的初始化配置。

注意

指定MCSCF轨道排序规则: 强制轨道按 双占据(Closed)→ 活性(Active)→ 虚轨道(Vir)→ XVR 的顺序排列。

  • 完整输入逻辑参见示例:test126.inp

Virdel 参数类型:Bool型

指定强制轨道按 双占据(Closed)→ 活性(Active)→ 虚轨道(Vir)→ XVR 的顺序排列。

  • 完整输入逻辑参见示例:test126.inp

XvrUse 参数类型:Bool型

指定将MCSCF计算生成的扩展虚轨道(XVR)输出至检查点文件(chkfil),供后续xianci模块调用。 启用此关键词时,程序将保留XVR轨道而非默认的删除操作,实现跨模块数据复用。

备注

若未启用XvrUse,xianci模块将自动删除临时XVR并重新计算。

  • 完整输入逻辑参见示例:test126.inp

Solvate 参数类型:Bool型

指定考虑溶剂化效应的MCSCF计算。

备注

所用溶剂、溶剂化模型、参数等都源自前面的SCF计算。

Sortact 参数类型:整型

指定活性空间轨道排序功能。

输入格式: 第1行:指定排序对数量(整数)。 第2行:按顺序列出需移入活性空间的分子轨道(MO)索引。 第3行:按顺序列出需移出活性空间的分子轨道(MO)索引,与第2行的索引一一配对交换。

$mcscf
...
SortAct
3
10 15 20   # 表示将MO 10、15、20移入活性空间
12 13 14   # 对应的MO 12、13、14将被移出活性空间
$end

备注

上述示例中实际执行三组MO交换操作: MO 10 ↔ MO 12、MO 15 ↔ MO 13、MO 20 ↔ MO 14 索引编号通常基于计算输出文件中的轨道排序(建议优先查看Output或Molden文件中的MO列表)。

应用场景: 在CASSCF计算中手动调整活性轨道组成。调整多参考态计算的轨道空间分布,修复因轨道编号错位导致的收敛问题

grad 参数类型:Bool型

指定计算并存储解析梯度计算所需要的分子轨道积分与轨道Hessian矩阵。 当用grad模块计算MCSCF解析梯度时,须在mcscf模块添加此关键词。

iCAS 参数类型:Bool型

指定采用iCAS方法对MCSCF每步宏迭代进行活性空间强制验证。

  • 功能描述: 通过MOM/SVD/Hungary算法验证双占据、活性及虚空间划分,并强制构建CAS活性空间。

  • 默认使用MOM方法,用户需显式设置关键词``Hungary``或``SVD``以调用替代算法。

SVD 参数类型:Bool型

指定SVD算法验证双占据、活性及虚空间划分。

Hungary 参数类型:Bool型

指定Hungary算法验证双占据、活性及虚空间划分。

Actadd 参数类型:Bool型

功能描述: 当该关键词与iCAS或SVD联用进行活性空间校验时,程序将自动扩大活性轨道数以优化空间划分。

触发条件: 1. 与iCAS联用时,根据轨道占据涨落自动补充近简并轨道。 2. 与SVD(奇异值分解)联用时,通过矩阵秩分析动态扩展轨道空间维度。

Statemo 参数类型:整型

指定态指定分子轨道输出。

  • 功能描述: 设置需输出态指定分子轨道的态编号。

  • 默认值: StateMO = 0表示输出态平均分子轨道。

Qcmo 参数类型:Bool型

指定CASSCF计算生成准正则活性分子轨道。CASSCF默认生成自然活性轨道。

Direct 参数类型:Bool型

指定每次MCSCF迭代做一次直接CI。

Molden 参数类型:Bool型

输出MCSCF优化得到的分子轨道至$BDFTASK.mcscf.molden文件。

Iprtmo 参数类型:整型

指定打印MO的级别。同SCF中的相关参数。

CASCI 参数类型:Bool型

指定只做CI计算,不优化分子轨道。

cionly 参数类型:Bool型

指定只做CI计算,不优化分子轨道。等价于关键词``CASCI``。

orbonly 参数类型:Bool型

指定只优化分子轨道,不做CI计算。

CIread 参数类型:Bool型

指定读入CI波函数作为CI计算的初始猜测波函数。

定域MCSCF相关参数

Localmc

指定定域化MCSCF优化得到的分子轨道。

Nolmocls 参数类型:Bool型

指定不定域化MCSCF生成的双占据轨道。

Nolmoact 参数类型:Bool型

指定不定域化MCSCF生成的活性轨道。

Nolmovir 参数类型:Bool型

指定不定域化MCSCF生成的虚轨道。

Nature

指定CASSCF计算生成自然活性分子轨道。此为默认输出活性轨道。

Mom

指定MOM算法验证双占据、活性及虚空间划分。此为默认方法。

MCSCF轨道优化算法控制

Quasi 参数类型:Bool型

指定使用准牛顿法MCSCF。

Superci 参数类型:Bool型

指定使用一阶方法Super-CI-PT计算MCSCF。此关键词用于替代``Quasi``。 * 此关键词所需分子轨道积分为(pw|uv)小于关键词``Quasi``的(pq|uv)。 * 目前Superci可以用于RI与NoRI基组体系。对于有对称性的分子体系,此方法无法使用Core关键词冻结双占据轨道。 * 采用NoRI时,Compass模块若使用关键词Saorb,可以在算完MCSCF后,接着进行XianCI模块计算。 * 采用NoRI时,Compass模块若不加关键词Saorb,则Superci使用的是直接原子轨道积分,可以用于原子轨道较多的体系(AO > 1500), * 但无法进行后续XianCI模块计算。 * 采用RI时,Compass模块需使用关键词RI-C设置辅助基组。若需要使用混合辅助基组,则需要设置本地辅助基组名:$BDF_WORKDIR/auxbas * 另外,对于BDF中RI-C辅助基组所在目录bdf-pkg-full/basis_library/RI-C中没有的辅助基组, * 可以使用bdf-pkg-full/sbin/auxbas-pyscf-bdf.py在pyscf软件中自动生成任意元素的辅助基组,并将其存在auxbas文件中。 * Superci对轨道转动的最大步长较为敏感。其所使用的默认Maxstep=0.05。 * Superci宏迭代步数较多。其所使用的默认Macit=100。 * 若MCSCF未收敛,可以使用优化的轨道$BDF_WORKDIR/$BDFTASK.casorb作为初始猜测续算。 * 若是采用Superci还未收敛,也可以将优化的轨道作为初始猜测,然后改为Quasi提高收敛性。

注意

此方法的近似较大,可能导致MCSCF轨道优化收敛拖尾的现象。若出现此情况,可通过增大关键词Conv的阈值。

SwitchIter 参数类型:整型

指定开始使用DIIS加速Super-CI-PT方法优化分子轨道时的宏迭代步数。默认值:15

SwitchConv 参数类型:浮点型

指定开始使用DIIS加速Super-CI-PT方法优化分子轨道时的梯度阈值。默认值:0.01

NmoCri 参数类型:浮点型

用于控制活性轨道自然轨道占据数接近双占据轨道(Close)与未占据轨道(Virtual)的情况。 * 默认值:2.0 0.0 表示未控制。 * 建议值:1.999 0.001 表示占据数大于1.999的轨道不与close轨道交换,而小于0.001的轨道不与Virtual轨道交换。

Werner 参数类型:Bool型

指定使用Werner的二次收敛的MCSCF优化方法。此为默认MCSCF优化算法。 此方法需要[pq|(i+u)(j+v)]的分子轨道积分,当体系的原子轨道数较大时, 请使用关键词``Quasi``或``Superci``所提供的近似方法。

Mixopt 参数类型:Bool型

指定混合Werner算法与Quasi算法,如果Werner算法难以收敛,可以使用这个参数。

MCSCF迭代与收敛阈值控制

Macit 参数类型:整型

指定最大MCSCF宏迭代次数。

Micit 参数类型:整型

指定最大MCSCF微迭代次数。

Ciiter 参数类型:整型

指定CI计算最大迭代次数。

Conv 参数类型:浮点型

默认值:1.D-8 1.d-4

备注

第一个阈值是能量收敛值,第二个阈值是轨道梯度收敛阈值。

Cmin 参数类型: 浮点数

指定UGA-CI/iCI截断阈值。 参数描述: 控制酉群组态相互作用(UGA-CI)与智能组态筛选(iCI)方法中组态函数(CSFs)的截断阈值 * 默认值: 1.0d-4 * 功能规则: 当CSFs的权重系数绝对值低于此阈值时,将被自动剔除。阈值越低,计算精度越高但耗时显著增加。 * 输入冲突处理: 若用户在输入文件中显式设置此参数,系统将优先采用用户定义值覆盖默认值。

Actmin 参数类型: 浮点数

指定控制iCI方法中活性分子轨道雅可比旋转(Jacobi Rotation)的精度阈值。 * 默认值: 1.0d-6

Actopt 参数类型:Bool型

指定活性空间轨道优化方法选择。

  • 参数选项说明:

  • ACTOPT=0:禁止在活性空间内进行任何轨道优化。默认状态: 强制生效(无需显式声明)。

  • ACTOPT=1: 启用活性空间轨道优化,采用Werner方法或准牛顿法(quasi-Newton)。

  • ACTOPT=2: 启用活性空间轨道优化,采用雅可比旋转(Jacobi rotation)。 优势: 在高精度需求下具有更好的数值稳定性。警告: 活性空间较大时可能导致计算时间显著增加。

Prtcri 参数类型:浮点型

指定打印输出的CSF的阈值。 * 默认值:0.05

SOCcri 参数类型: 浮点数

指定打印关键词``SOCene``计算所得SOC的阈值。

Prtiter 参数类型:Bool型

输出每步宏迭代所得分子轨道至$BDFTASK.mciter.molden文件。

Maxstep 参数类型:浮点型

默认值:0.1

备注

轨道转动矩阵元的最大值。即轨道转动的最大步长。

Ucutoff 参数类型:浮点型

默认值:1.D-8

指定内空间轨道优化近似积分变换的阈值。该参数对MCSCF计算效率有影响。

MCSCF中的GUGA-CI计算控制参数

Ncisave 参数类型:整型

默认值:20000

指定最大的可以保存CI矩阵的维数。

Node 参数类型:整型

默认值:30000

指定最大的DRT节点数。

Wei 参数类型:整型

指定最大的弧权数目。

Ploop 参数类型:整型

指定GUGA的Loop搜索最大的部分Loop的数目。

Nref 参数类型:整型

默认值:10000

指定参考态的数目。

Nvff 参数类型:整型

默认值:10000000

指定活性空间最大双电子积分数目。

算例

test004.inp

test015.inp

test016.inp

test019.inp

test020.inp

test021.inp

test061.inp

test069.inp

test070.inp

test071.inp

test080.inp

test086.inp

test095.inp

test100.inp

test105.inp

test114.inp

test126.inp

test131.inp

test139.inp

test148.inp

test150.inp

原子轨道到分子轨道积分变换模块 - traint模块

Traint模块用于将原子轨道积分变换为分子轨道积分。仅支持对称匹配的积分的变换,使用Traint,Compass中不能包含Skelton关键词。Traint模块主要用于与后Hartree-Fock计算联用,为Post-HF方法提供分子轨道积分。

基本控制参数

Frozen 参数类型:整型数组

指定每个不可约表示冻结的双占据分子轨道数目。

UTDDFT 参数类型:Bool型

用于MO-TDDFT算法,指定基于UKS轨道做积分变换。MO-TDDFT计算效率低,仅用于测试和对照。

TDDFT 参数类型:Bool型

用于MO-TDDFT算法,指定基于RKS轨道做积分变换。MO-TDDFT计算效率低,仅用于测试。

alpha & beta 参数类型:整型数组

指定MO-UTDDFT的alpha,beta轨道每个不可约表示的占据轨道数。

Occupy 参数类型:整型数组

指定MO-TDDFT计算每个不可约表示的占据轨道数。

Orbital 参数类型:字符串

可选值:hforb、mcorb、Orbtxt

指定从哪里读入分子轨道。hforb为读入SCF计算的分子轨道;mcorb为读入MCSCF计算大的分子轨道;Orbtxt为从文本文件读入分子轨道。

FCIDUMP 参数类型:Bool型

变换分子轨道并存入FCIDUMP文件。

Symmetry 参数类型:整型

指定分子态的对称性。

Nelectron 参数类型:整型

指定Full CI计算的电子数。

Spin 参数类型:整型

指定电子态的自旋,2S+1。

多参考态组态相互作用及多参考态二阶微扰理论计算 - xianci模块

xianci模块来自Xi'an-CI程序包,执行ucMRCI, icMRCI,XSDSCI, CB-MRPT2/3,MS-CASPT2, XMS-CASPT2, XDW-CASPT2, RMS-CASPT2, MS-NEVPT2,SS-NEVPT3, SDSPT2f, SDSPT2, SDSCIf, SDSCI等计算。

基本控制参数

Roots 参数类型:整型

指定计算的根(电子态)的数目。 * 若mcscf只算同一种空间与自旋对称性,xianci模块将读取mcscf模块计算的根的数目作为默认值,进而不需要设置此参数。 * 默认值:1

Istate 参数类型:整型

指定计算的根的数目并设置需要计算的根的编号。若使用此关键词,关键词``Roots``将失效。

注意

此关键词只可以用于所有CASPT2,NEVPT2, SDSPT2, SDSCI and XSDSCI类方法。

示例如下:第一行1个整数,设置需要计算的态的数目,第二行设置所选电子态(根)的编号。

$xianci
...
istate
2
1 3
$end

Spin 参数类型:整型

指定计算电子态的自旋多重度2S+1。 * 若mcscf只算同一种空间与自旋对称性,xianci模块将读取mcscf模块计算的根的数目作为默认值,进而不需要设置此参数。 * 默认值:1 Symmetry 参数类型:整型 ------------------------------------------------ 指定计算电子态的对称性。 * 若mcscf只算同一种空间与自旋对称性,xianci模块将读取mcscf模块计算的根的数目作为默认值,进而不需要设置此参数。 * 默认值:1

Frozen 参数类型:整型数组

指定计算冻结的每个不可约表示的双占据(inactive)轨道数。建议冻结原子的Core轨道。 * 默认是不冻结双占据轨道。

Core 参数类型:整型数组

指定计算冻结的每个不可约表示的双占据(inactive)轨道数。建议冻结原子的Core轨道。 * 默认是不冻结双占据轨道。

Dele 参数类型:整型数组

指定计算冻结的每个不可约表示的未占据(virtual)轨道数。 * 默认是不冻结未占据轨道。

Electron 参数类型:整型

计算相关轨道电子数。 * 默认值源自mcscf模块,可以不用输入。

Inactive 参数类型:整型数组

指定计算每个不可约表示的双占据轨道数。 * 默认值来源于mcscf模块,可以不用输入。

Active 参数类型:整型数组

指定计算每个不可约表示活性轨道数。 * 默认值来源于mcscf模块,可以不用输入。

XvrUse 参数类型:Bool型

当未使用关键词 'Dele' 设置需删除的分子轨道(MOs)时,关键字 'XvrUse' 用于通过 MCSCF XVR 方法选择性删除虚轨道。

注意

若同时指定了 'Dele' 和 'XvrUse',则 'Dele' 关键字优先于 'XvrUse'。

  • 完整输入逻辑参见示例:test126.inp

Rootprt 参数类型:整型

指定采用numgrad模块计算数值梯度的所需设定的电子态编号。 * 默认值:1

Orbtxt 参数类型:字符串型

指定读取分子轨道文件的后缀名。

CVS 参数类型:Bool型

指定计算时生成Core Valence Separation的DRT,并使用此DRT计算Core Valence激发态。

ReadDRT 参数类型:Bool型

指定计算时读取工作目录中$WORKDIR/$BDFTASK.cidrt中存储的DRT信息,从而减少DRT生成所需时间。 * 推荐在计算大活性空间体系使用。

Nexci 参数类型:整型

指定从参考组态激发的电子数。 * 默认值:2 * 可选值:1 (仅单激发),>=3(相对于参考组态的活性轨道内三电子以上激发)

Readref 参数类型:整型

自动从$WORKDIR/BDFTASK.select_*_#中读取参考组态,其中*表示自旋多重度,#代表不可约表示。 * 默认值来源于mcscf模块,可以不用输入。 * 若mcscf模块未设定关键词"iCI"或"iCIPT2",而需要选定参考组态,则需要设定此关键词。

Node 参数类型:整型

指定存储生成CAS为参考空间(P空间)的sub-DRTs中的结点所需数组的初始大小。对于选态方法生成的sub-DRTs所需数组不需要预设。 * 默认值:1000000

Pmin 参数类型:浮点型

指定$WORKDIR/BDFTASK.select_*_#中组态系数大于此值的参考组态为用于构造激发组态的参考组态。 * 默认值: Pmin=0.0, 若mcscf模块加入关键词iCI或iCIPT2,则默认值为Pmin=Cmin (Cmin来源于mcscf模块)。 * 建议值:Pmin=1.d-3

QminDV 参数类型:浮点型

指定裁剪Q子空间(bar{D}V,双电子激发算符中包括3个活性轨道和1个双占据轨道)未收缩激发组态的一级相互作用空间(FOIS)值的阈值。 * 默认值: 0.0 * 建议值:1.d-5

QminVD 参数类型:浮点型

指定裁剪Q子空间(bar{V}D,双电子激发算符中包括3个活性轨道和1个未占据轨道)未收缩激发组态的一级相互作用空间(FOIS)值的阈值。 * 默认值: 0.0 * 建议值:1.d-5

Qnex 参数类型:Bool型

指定不选择DVD近似。DVD近似:在生成bar{D}V与bar{V}D的激发组态时,部分3活性轨道参与的双激发组态将被忽略。 * 默认值: .false.

Epic 参数类型:浮点型

指定系数矩阵存储内收缩函数系数的阈值。 * 默认值: QminVD=0.0 * 建议值:QminVD=1.d-5

Seleref 参数类型:整型

指定MRCI计算的参考轨道组态(orbital configuration, oCFG)。该参数有nref+1行,nref是参考轨道组态的数目。 * 默认值:若使用关键词“readref”选参考组态,则可以不用此关键词。 * 若用户想重新指定oCFG,则需要设定此关键词及nref个选定oCFG。

$xianci
...
seleref
3
2200
2110
2020
$end

第一行:1个整数,指定参考态数目nref。 第二至nref+1行给出参考轨道组态。

Prtcri 参数类型:浮点型

指定打印输出的CSF的阈值。 * 默认值:0.05

Ethres 参数类型:浮点型

指定H0矩阵对角化的能量(本征值)收敛阈值。 * 默认值:1.D-8

Conv 参数类型:浮点型数组

指定MRCI计算H矩阵迭代对角化的收敛阈值。输入三个浮点数,分别控制MRCI的迭代大的能量、波函数和残余向量收敛阈值。 * 默认值:1.D-8、1.D-6、1.D-8

Maxiter 参数类型:整型

指定H0或H矩阵迭代对角化最大迭代次数。 * 默认值:200

Maxbloch 参数类型:整型

指定迭代求解CASPT2、SDSPT2f、SDSCIf所需的BLOCH方程的最大迭代次数。 * 默认值:5

InitHDav 参数类型:整型

指定在MRCI的迭代对角化过程中,设置初始向量的方式: * 默认值:1 使用与能量最低的组态函数(CSFs)耦合最大的激发组态作为初始向量。 * 可选值:2 根据CI哈密顿对角元的从低到高的能级顺序选择初始向量。 * 可选值:3 利用参考波函数作为Davidson对角化的初始向量。

InitH0Dav 参数类型:整型

指定在H0的迭代对角化过程中,设置初始向量的方式: * 默认值:2 根据CI哈密顿对角元的从低到高的能级顺序选择初始向量。 * 可选值:1 使用与能量最低的组态函数(CSFs)耦合最大的激发组态作为初始向量。

DoProp 参数类型:Bool型

指定计算单电子(跃迁)约化密度矩阵及相关的性质,如(跃迁)偶极矩等。 * 打印自然轨道占据数。 * 提供自然轨道文件$BDF_WORKDIR/$BDFTASK.xianciorb。 * 提供轨道图像文件$BDF_WORKDIR/$BDFTASK.xianci.molden。

DCRI 参数类型:浮点型

指定内收缩组态函数的正交化阈值。 * 默认值:1.D-12

EPCC 参数类型:浮点型

设置忽略的收缩组态耦合系数阈值。较大的值有利于提高icMRCI的计算效率,但会降低精度。 * 默认值:1.D-20

Qfix 参数类型:浮点型

指定iCMRCI迭代对角化过程中需要优化的组态。由SDSPT2(f)计算得到的一阶波函数中的系数大于此阈值的激发组态的系数才需要优化。 * 默认值:0.0

Ncisave 参数类型:整型

指定可以完全对角化的H0矩阵的维数。对于内存空间较大的计算机可以增大此值以减少矩阵元的重复计算。 * 默认值:50000

NoSaveact 参数类型:Bool型

指定H0迭代对角化计算时不存储耦合系数至内存,避免计算大活性空间时可能出现所需内存空间不足的问题。

Setlpact 参数类型:整型

指定H0迭代对角化计算时用于存储所有耦合系数的数组的初始大小。 初始输入越大,动态增大数组的次数越少,计算效率越高,但在计算大活性空间时可能出现所需内存空间不足的问题。 * 默认值: 100000000

Setblkact 参数类型:整型

指定H0迭代对角化计算时用于存储耦合系数类的数组的初始大小。 初始输入越大,动态增大数组的次数越少,计算效率越高,但在计算大活性空间时可能出现所需内存空间不足的问题。 * 默认值: 10000000

Nosavelp 参数类型:Bool型

指定icMRCI计算时不存储(内收缩)耦合系数,使用会降低计算效率,但能在计算大活性空间时节省硬盘存储空间。

Setloop 参数类型:整型

指定MRCI迭代对角化计算时用于存储一类耦合系数的数组的初始大小。 初始输入越大,动态增大数组的次数越少,计算效率越高,但在计算大活性空间时可能出现所需内存空间不足的问题。 * 默认值: 10000000

Setblk 参数类型:整型

指定MRCI迭代对角化计算时用于存储耦合系数类的数组的初始大小。 初始输入越大,动态增大数组的次数越少,计算效率越高,但在计算大活性空间时可能出现所需内存空间不足的问题。 * 默认值: 10000000

内收缩CI方法选择参数

FCCI 参数类型:Bool型

指定执行激发态空间(Q)全内收缩MRCI(icMRCI)计算,但参考态空间(P)不收缩,微扰计算会收缩参考态空间。 * 默认采用此方法。

XSDSCI 参数类型:Bool型

指定执行FCCI计算。 * 初始猜测的激发波函数的系数源自基于SDSPT2计算(Dyall哈密顿作为H0),在计算低激发态时,可以完全避免Intruder State问题。

VSD 参数类型:Bool型

虚拟空间分解(VSD)通过将大基组虚轨道(MOs)投影到小基组空间, 利用奇异值分解(SVD)筛选出强关联空间,从而将高维虚轨道空间划分为物理意义明确的子空间。 该方法与XSDSCI相结合,可显著提升多参考态计算的效率。 * 示例见test126.inp

NoVDVP 参数类型:Bool型

指定跳过Q子空间bar{V}D和bar{V}P与零级波函数之间的CI哈密顿矩阵元计算。

SDSCI 参数类型:Bool型

指定执行SDSCI计算。 * 激发波函数的系数源自基于SDSPT2计算(Dyall哈密顿作为H0),在计算低激发态时,可以完全避免Intruder State问题。 * 推荐使用此方法,是目前xianci模块中计算量最小的MRCI方法。

SDSCIf 参数类型:Bool型

指定执行SDSCIf计算。 * 激发波函数的系数源自基于SDSPT2f计算(广义Fock算符作为H0),可能出现Intruder State问题。

UCCI 参数类型:Bool型

指定执行非收缩MRCISD(ucMRCI)计算。

NICI 参数类型:Bool型

指定执行不收缩全内空间激发的icMRCI计算。

CWCI 参数类型:Bool型

指定执行Celani-Werner收缩的icMRCI计算。

WKCI 参数类型:Bool型

指定执行Werner-knowles收缩的WicMRCI计算。

SDCI 参数类型:Bool型

指定执行SDCI模式的icMRCI计算,收缩程度与精度介于CWCI与WKCI之间。

多参考态微扰计算相关参数

CASPT2 参数类型:Bool型

指定执行MS-CASPT2(Multi-State CASPT2),对每个参考态构建自己的Q空间。

RMSCASPT2 参数类型:Bool型

指定执行RMS-CASPT2(Rotated Multi-State CASPT2),对每个参考态构建自己的Q空间。

XMSCASPT2 参数类型:Bool型

指定执行RMS-CASPT2(Extened Multi-State CASPT2),对每个参考态构建自己的Q空间。

XDWCASPT2 参数类型:Bool型

指定执行XDW-CASPT2(Extened Dynamic Weight Multi-State CASPT2),对每个参考态构建自己的Q空间。

XDWPara 参数类型:浮点型

指定执行XDW-CASPT2(Extened Dynamic Weight Multi-State CASPT2)所需参数。 * 默认值:50 * 0: XMS-CASPT2; 无穷大:RMS-CASPT2。

SDSPT2f 参数类型:Bool型

指定执行SDSPT2f计算。 * 激发波函数的系数采用微扰方法(广义Fock算符作为H0),可能出现Intruder State问题。

Rshift 参数类型:浮点型

指定弱化CASPT2等基于广义Fock算符作为H0方法的Intruder State问题所需Real Level Shift参数。 ** 默认值:0.0 * 建议值: 0.3

Ishift 参数类型:浮点型

指定弱化CASPT2等基于广义Fock算符作为H0方法的Intruder State问题所需Imaginary Level Shift参数。 * 默认值:0.0 * 建议值: 0.1

NEVPT2 参数类型:Bool型

指定执行MS-NEVPT2(Multi-State NEVPT2),对每个参考态构建自己的Q空间。

SDSPT2 参数类型:Bool型

指定执行SDSPT2计算。 * 激发波函数的系数采用微扰方法(Dyall哈密顿作为H0),在计算低激发态时,可以完全避免Intruder State问题。

DVRLS 参数类型:浮点型

指定弱化NEVPT2等基于Dyall哈密顿作为H0方法在计算高激发态时Q子空间(bar{D}V)的Intruder State问题所需Real Level Shift参数。 * 默认值:0.0 * 建议值: 0.3

VDRLS 参数类型:浮点型

指定弱化NEVPT2等基于Dyall哈密顿作为H0方法在计算高激发态时Q子空间(bar{V}D)的Intruder State问题所需Real Level Shift参数。 * 默认值:0.0 * 建议值: 0.3

DDRLS 参数类型:浮点型

指定弱化NEVPT2等基于Dyall哈密顿作为H0方法在计算高激发态时Q子空间(bar{D}D)的Intruder State问题所需Real Level Shift参数。 * 默认值:0.0 * 建议值: 0.3

DVILS 参数类型:浮点型

指定弱化NEVPT2等基于Dyall哈密顿作为H0方法在计算高激发态时Q子空间(bar{D}V)的Intruder State问题所需Imaginary Level Shift参数。 * 默认值:0.0 * 建议值: 0.1 * 不建议使用此参数。

VDILS 参数类型:浮点型

指定弱化NEVPT2等基于Dyall哈密顿作为H0方法在计算高激发态时Q子空间(bar{V}D)的Intruder State问题所需Imaginary Level Shift参数。 * 默认值:0.0 * 建议值: 0.1 * 不建议使用此参数。

DDILS 参数类型:浮点型

指定弱化NEVPT2等基于Dyall哈密顿作为H0方法在计算高激发态时Q子空间(bar{D}D)的Intruder State问题所需Imaginary Level Shift参数。 * 默认值:0.0 * 建议值: 0.1 * 不建议使用此参数。

SAFock 参数类型:Bool型

指定在NEVPT2、SDSPT2、SDSCI计算中采用态平均(SA)的分子轨道能量和积分。 * 默认值:.true.

SDFock 参数类型:Bool型

指定在NEVPT2、SDSPT2、SDSCI计算中采用态指定(SS)的分子轨道能量和与态平均(SA)的分子轨道积分。 * 默认值:.false.

SSFock 参数类型:Bool型

指定在NEVPT2计算中采用态指定(SS)的分子轨道能量和积分。 * 默认值:.false.

Nolan 参数类型:Bool型

指定不计算SDSPT2(f)与SDSCI(f)所需Secondary states。 * 默认使用此关键词。

  • 对于活性空间较大的SDSPT2(f)和SDSCI(f)计算,可以采用关键词“Nolan”取消计算量较大的构建Ps波函数的计算过程。 基于此的SDSPT2(f)和SDSCI(f)方法构建的有效哈密顿矩阵的维数为2N维,一般情况下计算精度降低较小。 但需要强调的是:在计算过程中出现电子态相交(如圆锥相交点)时,计算精度可能有一定程度的降低。

Dylan 参数类型:Bool型

指定截断近似计算SDSPT2(f)与SDSCI(f)所需Secondary states。

  • 对于活性空间较大的SDSPT2(f)和SDSCI(f)计算,可以采用关键词“Dylan”截断能量较高的Ps函数对Secondary states的贡献。 基于此的SDSPT2(f)和SDSCI(f)方法构建的有效哈密顿矩阵的维数为3N维。 一般情况下可以保持计算精度,但不同的分子构型所选Ps函数数目不同。

Dolan 参数类型:Bool型

指定采用Lanczos方法计算SDSPT2(f)与SDSCI(f)所需Secondary states。

  • 对于活性空间较大的SDSPT2(f)和SDSCI(f)计算,采用关键词“Dolan”计算Secondary states的计算量非常大。 基于此的SDSPT2(f)和SDSCI(f)方法构建的有效哈密顿矩阵的维数为3N维。 一般情况下可以保持计算精度,但较大的计算量使得不推荐使用此方案。

DEPENST 参数类型:Bool型

指定在Dyall哈密顿中使用态指定的Fock对角元。默认:态平均的Fock矩阵对角元。

MR-NEVPT2 参数类型:Bool型

指定执行Multi-reference NEVPT2计算。 * 对所有的参考态构建全局正交的组态空间。

NEVPT3 参数类型:Bool型

指定执行SS-NEVPT3计算。 * 对每个态是独立的Q空间。

CBMPRT2 参数类型:Bool型

指定执行CBMRPT2计算。

MR-CBMRPT2 参数类型:Bool型

指定执行MR-CBMPRT2计算。 * 对所有的参考态构建全局正交的组态空间。

CBMRPT3 参数类型:Bool型

指定执行CBMRPT3计算。 * 对每个态是独立的Q空间。

算例

test069.inp

注意

SDSPT2(f),SDSCI(f),XSDSCI,icMRCI的能量取+Q1(Pople Correction)的结果。 ucMRCI的能量取+Q3(Davdison Correction)的结果。

$xianci
core
2 0 0 2
nroots
1
spin
1
symmetry
1
pmin
1.d-3
qmindv
1.d-5
qminvd
1.d-5
epic
1.d-5
CASPT2 # MS-CASPT2 with generalized Fock as H0
DBLOCH # the threshold of solving BLOCH equation
1.d-4  # default : 1.d-4
RLS    # Real Level Shift
0.0    # default : 0.0
#ILS    # Imaginary Level Shift
#0.0    # default : 0.0
$end

Output :

CASPT2 calculation is completed.

NROOT        MC ENERGY       SS-CASPT2 ENERGY    MS-CASPT2 ENERGY    SS-CASPT3 ENERGY    MS-CASPT3 ENERGY
  1       -154.98370235       -155.47704723       -155.47704723          0.00000000          0.00000000
$xianci
core
2 0 0 2
nroots
1
spin
1
symmetry
1
nevpt2
$end

Output:

NEVPT2 calculation is completed.

NROOT        MC ENERGY       SS-NEVPT2 ENERGY    MS-NEVPT2 ENERGY    SS-NEVPT3 ENERGY    MS-NEVPT3 ENERGY
  1       -154.98370416       -155.47772092       -155.47772092          0.00000000          0.00000000
$xianci
core
2 0 0 2
nroots
1
spin
1
symmetry
1
sdspt2f
dbloch
1.d-4
rls
0.0
$end

Output:

MRPT2 calculation is completed.

NROOT   MC ENE      SS-CASPT2 ENE   MS-CASPT2 ENE    SDSPT2 ENE  SDSPT2+Q1 ENE  SDSPT2+Q2 ENE   SDSPT2+Q3 ENE   DAVCOEF
  1  -154.98370416  -155.47702635   -155.47702635 -155.41225671  -155.47144162  -155.47211363  -155.46852939   0.883932
$xianci
core
2 0 0 2
nroots
1
spin
1
symmetry
1
sdspt2
$end

Output:

MRPT2 calculation is completed.

NROOT   MC ENE     SS-NEVPT2 ENE  MS-NEVPT2 ENE  SDSPT2 ENE    SDSPT2+Q1 ENE  SDSPT2+Q2 ENE   SDSPT2+Q3 ENE   DAVCOEF
  1  -154.98370416 -155.47772092  -155.47772092  -155.41222583 -155.47205111  -155.47273880   -155.46903845   0.882941
$xianci
core
2 0 0 2
nroots
1
spin
1
symmetry
1
sdscif
$end

Output:

MRPT2 calculation is completed.

NROOT   MC ENE    SS-CASPT2 ENE  MS-CASPT2 ENE  SDSCI  ENE    SDSCI+Q1  ENE  SDSCI+Q2  ENE   SDSCI+Q3  ENE   DAVCOEF
  1 -154.98370416 -155.47702635  -155.47702635  -155.43865322 -155.51060490  -155.51155875   -155.50597757   0.871094
$xianci
core
2 0 0 2
nroots
1
spin
1
symmetry
1
sdsci
$end

Output:

MRPT2 calculation is completed.

NROOT   MC ENE     SS-NEVPT2 ENE  MS-NEVPT2 ENE  SDSCI  ENE    SDSCI+Q1  ENE   SDSCI+Q2  ENE   SDSCI+Q3  ENE   DAVCOEF
  1  -154.98370416 -155.47772092  -155.47772092  -155.43734298 -155.50941634   -155.51037685   -155.50474252   0.870644
$xianci
core
2 0 0 2
nroots
1
spin
1
symmetry
1
xsdsci
ncisave
10
$end

Output:

Roots of Heff are calculated are listed below:

                ENE             ENE + Pople       ENE + App Pople       ENE + DAV           ENE + MEISS
root   1   -155.44999113       -155.52660992       -155.52767146       -155.52133469       -155.51198622
$xianci
core
2 0 0 2
nroots
1
spin
1
symmetry
1
$end

Output:
Roots of Heff are calculated are listed below:
                  ENE           ENE + Pople       ENE + App Pople       ENE + DAV           ENE + MEISS
root   1    -155.45099589       -155.52816454       -155.52923990       -155.52280494       -155.51339548

test080.inp

test095.inp

test126.inp

test131.inp

test139.inp

test148.inp

图形酉群不同行表计算 - drt模块

Drt模块与mrci模块联用,利用基于空穴-粒子对称的图形酉群(Hole-particle symmetry based graphical unitrary group approach - HP-GUGA)方法计算非收缩的多参考态单双激发组态相互作用(Multireference configuration interaction with single and double excitations - MRCISD)。drt模块用于产生基于HP-GUGA方法的活性空间不同行表(Distinct Row Tabular - DRT )。

基本控制参数

Title 参数类型:字符串

输入标题,不控制计算,仅用于标记计算任务。

Spin 参数类型:整型

指定计算电子态的自旋多重度,值为2S+1。

Symmetry 参数类型:整型

指定计算电子态的对称性,即电子态所属的不可约表示。

Electron 参数类型:整型

指定CI计算的总电子数。不包含在traint中冻结(Frozen)轨道上的电子。

Nactel 参数类型:整型

指定MRCI计算活性空间的电子数。

Inactive 参数类型:整型数组

指定MRCI计算每个不可约表示的双占据轨道数。

Active` 参数类型:整型数组

指定MRCI计算每个不可约表示的活性轨道数。

Reference 参数类型:整型数组

指定MRCI计算的参考态。

Ciall 参数类型:整型数组

利用CAS方式生成参考态。

单双激发多参考态组态相互作用计算 - mrci模块

MRCI模块与DRT模块联用,执行非收缩的MRCI计算。

基本控制参数

Nrroots 参数类型:整型

指定MRCI计算的根的数目。

PrintThresh 参数类型:整型

默认值:0.05

指定打印输出的CSF的阈值。

Convergence 参数类型:浮点型数组

默认值:1.D-8、1.D-6、1.D-8

指定MRCI计算的收敛阈值。输入三个浮点数,分别控制MRCI的迭代大的能量、波函数和残余向量收敛阈值。

Maxiter 参数类型:整型

指定MRCI计算最大迭代次数。

Cipro 参数类型:整型

指定计算单电子约化密度矩阵即相关的性质,如偶极矩等。

振动广义平均场方法 - VGMFCI 模块

VGMFCI模块执行双原子分子的振动广义平均场理论。该方法利用Kratz势的本征函数做为振动波函数基矢,执行非绝热的振动-电子耦合计算。

基本控制参数

Emethod 类型: 字符串

指定电子结构计算方法,可选方法为: SCF, MCSCF和MRCI。 对于MCSCF方法,并不优化分子轨道,只执行CASCI计算。

Nstate 类型: 整数

指定要打印并分析的振动-电子耦合态数目。

$COMPASS
Title
  H2 Molecule. vgmfci example
Basis
 cc-pvdz
Geometry
 H 0.000  0.000    0.70018162
 H 0.000  0.000   -0.70018162
 X 0.000  0.000    0.80018162
 X 0.000  0.000   -0.80018162
 X 0.000  0.000    0.60018162
 X 0.000  0.000   -0.60018162
End geometry
Check
Unit
 Bohr
nosymm
Kratzer
# maxnu maxj ngausslag re         de
 10   0   50 1.40036324  0.365148
$END

$XUANYUAN
#masspol
$END

$vgmfci
emethod
 mcscf  # scf mrci
maxiter
 1
Nstate
 20
$end

$SCF
RHF
checklinear
tollin
 1.d-6
$END

$MCSCF
close
 0
actele
 2
spin
 1
roots
 1 40
CASCI
mcvgmfci
#diagcimat
$END