那些不提及 GIC 并可与 Geom 关键字一起使用的选项应按照描述的方式工作,除了 NewDefinition 和 NewRedundant。后者不应与任何与 GIC 相关的选项结合使用。对于 GIC,应该使用 Geom=(Checkpoint,GIC) 而不是 Geom=NewDefinition,使用 Geom=GIC 而不是 Geom=NewRedundant,使用 Geom=(Checkpoint,addGIC) 而不是 Geom=(Modify,NewRedundant)。
这一部分讨论了在 Gaussian 输入文件中指定广义内坐标(GIC)的问题。 GIC 具有许多潜在用途:定义额外坐标在几何优化期间报告其值、在分子系统优化期间冻结各种结构参数、指定要在其上执行扫描的参数、根据结构参数或它们之间的复杂关系定义几何优化的约束条件、请求计算部分Hessian矩阵以及其他目的。
GIC 输入部分与先前的输入通过空行分隔。它包含一个或多个包含坐标定义、表达式或独立选项的行。以下是一个简单的用于水的 GIC 输入部分,展示了一些可能的特性:
R(1,2) 为原子 1 和 2 定义一个键长坐标 Bond2=R[1,3] 定义另一个名为 Bond2 的键长坐标 HOH(freeze)=A(2,1,3) 定义一个优化约束:名为 HOH 的键角坐标(∠2-1-3)
对于优化,这些坐标将导致键角保持不变,并优化两个键距。
坐标的基本形式如下:
label(options)=expression
所有组件都是可选的。在上述示例中,所有组件仅在第三行中出现。第一行只包含一个坐标表达式,而第二行还包含了一个不带选项的标签。请注意,选项也可以放在表达式之后:
HOH=A(2,1,3) Freeze
标签是用户分配的坐标标识符。它们不区分大小写。标签可能包含字母和数字,但必须以字母开头。如果未指定标签,则程序将分配一个通用标签(例如 R1、R2、A1 等)。标签之后可以包括一个括号、逗号分隔的选项列表(如果需要)。请注意,方括号或大括号可以在坐标定义的任何位置替换成括号。
结构参数
坐标由表达式定义。最简单的表达式仅标识分子内的特定结构参数,使用以下结构。请注意,星号可以用作任何原子编号的通配符(参见示例)。
R(i,j)
定义原子 i 和 j 之间的键坐标。B、Bond 和 Stretch 是 R 的同义词。
A(i,j,k)
定义涉及原子 i、j 和 k 的非线性角坐标,其中角顶点位于原子 j 上。Angle 和 Bend 是 A 的同义词。
D(i,j,k,l)
定义介于包含原子 i、j 和 k 的平面和包含原子 j、k 和 l 的平面之间的二面角。Dihedral 和 Torsion 是 D 的同义词。
L(i,j,k,l,M)
定义涉及原子 i、j 和 k 的线性弯曲坐标,其中角顶点位于原子 j 上。Linear 和 LinearBend 是 L 的同义词。
线性弯曲坐标具有两个组成部分,对应于第一和第二组件的 M 值分别为 -1 和 -2(不允许其他值)。线性弯曲由其两个正交方向来指定。这可以通过两种方式指示:
- 对于原子数超过 3 的非线性分子,可以使用一个不与 i、j 和 k 中的任何原子形成线性角的第四个原子。在这种情况下,l 可以设置为该原子的原子编号。例如,可以使用以下内容指定涉及原子 1、2 和 3 的线性弯曲,使用原子 6 确定两个正交方向:
L(1,2,3,6,-1) L(1,2,3,6,-2)
如果 l 设置为 -4,则第四个原子将根据分子结构自动确定。
- 另一种方法是将线性弯曲投影到坐标系的一个轴平面上:对于 l 的值 -1、-2 和 -3 指定 YZ、XZ 和 XY 平面(分别)。值 0 也可以用于请求自动确定适当的平面:
L(1,2,3,0,-1) L(1,2,3,0,-2)
X(i)
定义原子 i 的 x 笛卡尔坐标。Cartesian(i,-1) 和 Cartesian(i,X) 是 X 的同义词,而 Cartesian 可以缩写为 Cart。
Y(i)
定义原子 i 的 y 笛卡尔坐标。Cartesian(i,-2) 和 Cartesian(i,Y) 是 Y 的同义词,而 Cartesian 可以缩写为 Cart。
Z(i)
定义原子 i 的 z 笛卡尔坐标。Cartesian(i,-3) 和 Cartesian(i,Z) 是 Z 的同义词,而 Cartesian 可以缩写为 Cart。
XCntr(atom-list)
YCntr(atom-list)
ZCntr(atom-list)
定义包含指定原子的分子片段的几何中心(质心)的 x、y 或 z 笛卡尔坐标。原子列表是逗号分隔的原子编号和/或范围列表。例如,XCntr(1,12-15,27) 定义了包含原子 1、12、13、14、15 和 27 的片段的 x 坐标。如果省略了原子列表,则默认为整个分子。
DotDiff(i,j,k,l)
定义了原子 i、j、k 和 l 的两个笛卡尔坐标差向量 a 和 b 的点积 (a·b),其中 a = (Xi–Xj, Yi–Yj, Zi–Zj) 且 b = (Xk–Xl, Yk–Yl, Zk–Zl)。
复合表达式
可以通过使用一个或多个数学运算符结合多个项来构建复杂的表达式。参数 A 和 B 可以是先前定义的坐标的标签、有效的 GIC 表达式甚至是常量(整数或浮点数)。操作名称不区分大小写。以下操作可用:
- 平方根: SQRT(A).
- e的幂: EXP(A) 表示 eA.
- 三角函数: SIN(A), COS(A), TAN(A).
- 反余弦: ARCCOS(A).
- 加法: A+B
- 减法: A–B
- 乘法: A*B
- 除法: A/B
- 指数运算: A**n 表示 A^n(其中 n 是整数)。也接受 A^n 的形式。
以下是一些简单示例,定义了水中对称化的OH键:
R12(不活跃)=B(1,2) R13(不活跃)=B(1,3) RSym = (R12 + R13)/SQRT(2) RASym = [Bond(1,2) - Bond(1,3)]/SQRT(2)
前两个坐标被设置为不活跃,因为它们是不打算用于优化的中间体。第三行说明了使用先前定义的标签的表达式,而第四行展示了带有运算符的字面表达式的使用。注意,根号函数的参数是常量 2。
选项
坐标标签后面可以跟随一个逗号分隔的选项列表,包括在括号内。或者,选项可以跟随表达式,由空格分隔开,并相互之间也由空格分隔。所有选项不区分大小写。
为了几何优化的目的,坐标可以被指定为:
- 活跃(Active):该坐标是用于几何优化中的内部坐标列表的一部分。相比之下,不活跃的坐标不包含在用于几何优化的集合中。默认情况下,活跃的坐标未冻结:允许其值发生变化(参见下一个符号)。
- 冻结(Frozen):在几何优化过程中保持其值恒定的坐标。活跃且未冻结的坐标的值在几何优化过程中会发生变化。在优化过程中,不活跃坐标的冻结或未冻结状态是无关紧要的。
在以下描述中,“已经存在的坐标”指的是先前定义的具有相同标签或相同值表达式的坐标。这些坐标可能在输入流中的较早位置被定义,或者从先前作业的检查点文件中检索出来。
活跃(Active)
如果指定的坐标尚不存在,则建立由给定表达式定义的新坐标,并将其标记为活跃和未冻结。如果坐标以前已定义,则将其标记为活跃和未冻结(无论其先前状态如何)。这是默认行为。Activate、Add 和 Build 是 Active 的同义词。在表达式之后指定时,可以将其缩写为 A。
冻结(Frozen)
如果坐标不存在,则根据表达式建立一个坐标,并将该坐标标记为几何优化中的活跃坐标,并在当前值上冻结它。
Freeze 是 Frozen 的同义词。在表达式之后指定时,可以将其缩写为 F。
不活跃(Inactive)
如果坐标不存在,则根据表达式建立一个由该表达式定义的新坐标,并将其标记为不活跃。如果具有给定标签或给定表达式的坐标已经被建立并标记为活跃(冻结或未冻结),则通过将其标记为不活跃来从几何优化中移除它。Remove 是 Inactive 的同义词。在表达式之后指定时,可以将其缩写为 R。
删除(Kill)
通过将所有这些坐标标记为不活跃,将该坐标从用于几何优化的内部坐标列表中移除。这些相关坐标包括任何依赖于给定坐标相同原子的坐标。例如,R(1,5) Kill 将导致移除坐标 R(1,5)——原子 1 和 5 之间的间距,以及键角、二面角和分子中其他原子的笛卡尔坐标的组合。RemoveAll 是 Kill 的同义词。在表达式之后指定时,可以将其缩写为 K。
仅打印(PrintOnly)
将坐标的初始值包括在高斯输出文件中的起始结构中,然后将其标记为不活跃。
修改(Modify)
在坐标说明中必须包含一个标签。它用新表达式替换具有指定标签的旧坐标,并将新修改的坐标标记为活跃和未冻结。
差分(Diff)
计算与该坐标对应的初始 Hessian 的行和列的数值二阶导数。在表达式之后指定时,可以将其缩写为 D。
FC=x
将初始 Hessian 中给定坐标的对角元素更改为 x,一个以原子单位表示的浮点数。ForceConstant 是 FC 的同义词。
值 Value=x
将给定内部坐标的初始值设置为 x,一个浮点数值。值的单位是高斯程序中由Unit关键词定义的单位(默认为埃或度)。当前的笛卡尔坐标将被调整以尽可能接近这个值。应该谨慎和节制地使用此选项。在类似 GaussView 的图形环境中将初始分子结构设置为所需的结构要容易得多且更可靠。
步长 StepSize=x,NSteps=n
这些选项用于指定一个松弛的势能面扫描,在此过程中,该坐标将被增加 x 总共 n 次,并且将从每个产生的起始几何执行约束优化。x 应该是一个正的以原子单位表示的浮点数,N 应该是一个大于 1 的整数。当这些选项跟随表达式时,应该将逗号替换为一个空格。
最小值 Min=min,最大值 Max=max
此选项与活跃、冻结或不活跃一起使用。当坐标的值满足条件 min≤value≤max 时,它添加、冻结或使坐标不活跃。min 和 max 是以高斯程序定义的单位(默认为埃或度)表示的浮点数。如果省略了 Min 或 Max,则条件变为 value≤max 或 min≥min。当这些选项跟随表达式时,应该将逗号替换为一个空格。
action只有在条件为真时 OnlyIf condition
action只有在条件为假时 IfNot condition
这些选项提供条件坐标操作。它们只能放置在定义当前坐标的表达式之后。动作是 Active、Freeze 或 Inactive 中的一个。条件是另一个坐标的标签或表达式。如果条件中引用的坐标对于 OnlyIf 是活跃的或对于 IfNot 是不活跃的,那么指定的动作将针对当前坐标执行。请注意,条件测试仅适用于在选项之前指定的操作,而不适用于可能存在于坐标说明中的其他选项。
独立选项
以下选项与坐标定义无关,而应用于全局。它们应该单独在输入行上指定。
FreezeAll
冻结以前添加的所有活跃内部坐标。
UnFreezeAll
解冻以前添加的所有已冻结的活跃内部坐标。
RemoveAll
移除/停用以前添加的所有活跃内部坐标(已冻结或未冻结)。
原子 i 动作
将指定的动作应用于原子 i 的笛卡尔坐标。如果 i 是星号,则该动作适用于所有原子。动作是 Active、Freeze、UnFreeze、Remove(使不活跃)、RemoveAll 和 XYZOnly 中的一个。这些选项如上所定义;XYZOnly 表示移除任何依赖于原子 i 的内部坐标,但保留/添加该原子的坐标。默认动作是 Active。
示例
以下示例操作一些自动生成的坐标,定义一些新的坐标,然后使用通配符移除与特定原子相关的坐标:
R(5,9) freeze 冻结键长 R(5,9)。 R(8,9) 添加一个新的活跃坐标 R(8,9),带有默认标签。 Ang189 = A(1,8,9) 添加一个新的活跃坐标 A(1,8,9),标记为 Ang189。 R10(remove) 移除标记为 R10 的坐标。 Dih6123(remove) = D(6,1,2,3) 如果 D(6,1,2,3) 存在,则移除该坐标。 Dis79(freeze) = R(7,9) 冻结坐标 R(7,9):如果它是新的,则标记为 Dis79;如果它已经存在,则保留旧标签。 G1 = (R16+R19)*0.529177 添加一个新坐标,标记为 G1。 Ang189a(modify)=cos(g2)*57.29577951 更改坐标 Ang189a 的定义。 R(11,*) remove 移除原子 11 和任何其他原子之间的距离。 D(*,1,17,*) remove 移除围绕 1-17 键构建的任何二面角。
请注意,如果指定的坐标已经存在,则添加它的条目将导致错误(例如,上面的第 1-3 行)。
以下示例首先定义了两个片段的质心。然后,它将片段间距离定义为优化坐标:
定义片段 1 的中心,但不包括在优化中。 XC1(Inactive)=XCntr(1-10) YC1(Inactive)=YCntr(1-10) ZC1(Inactive)=ZCntr(1-10) 定义片段 2 的中心,但不包括在优化中。 XC2(Inactive)=XCntr(11-21) YC2(Inactive)=YCntr(11-21) ZC2(Inactive)=ZCntr(11-21) 定义距离 F1-F2 并将其包括在优化中。其值将以 Å 报告: F1F2=sqrt[(XC1-XC2)^2+(YC1-YC2)^2+(ZC1-ZC2)^2]*0.529177
以下示例请求对相同坐标进行弛豫势能面扫描:
F1F2(NSteps=10,StepSize=0.2)
以下示例如果默认情况下生成的角度坐标 ≥179.9°,则替换为线性弯曲:
A(1,2,3) Remove Min=179.9 如果角度太大,则移除角度坐标。 L(1,2,3,0,-1) Add IfNot A(1,2,3) 仅在角度坐标不活跃时添加线性弯曲。 L(1,2,3,0,-2) Add IfNot A(1,2,3)
以下示例如果角度坐标 ≤ 指定值,则移除它,并将相应的力常数设置为 0.2 au。后者在需要时应用:作为初始力常数和应该重新激活的力常数。第二行指定了键坐标的力常数:
A(1,2,3) Remove Min=3.139847 ForceConstant=0.2 R(1,2) FC=0.5
以下示例设置了各种坐标的力常数。它还使键角坐标 ≥179.8° 时失活:
R(1,*) FC=0.8 D(*,4,5,*) FC=0.4 A(*,1,*) FC=0.5 A(*,*,*) R Min=179.8
目前实现中 GICs 的局限性
在当前的实现中,GICs 可以成功地用于许多目的,包括优化约束和势能面扫描。然而,对于包含多个二面角的活跃复合坐标存在潜在问题。一般来说,由键距和键角的组合构成的坐标应该表现良好。简单的二面角也受到良好支持。对于冻结坐标和势能面扫描,接受包含多个二面角的复杂表达式。然而,它们在作为活跃优化坐标时应该被避免。
在非 GIC 优化或仅使用常规二面角的 GICs 的情况下,程序会谨慎处理这些坐标的周期性。例如,在决定几何中的步长是否太大并需要缩小时,它会认识到从 1 度到 359 度的值的变化实际上是 -2 度而不是 358 度。同样,在对力进行数值差分以更新 Hessian 时,需要在内部坐标中的几何之间的位移,周期性也得到了考虑。当 GIC 是由对其周期性重要的部分的组合时,通常会出现问题,典型地,多个二面角的组合。例如,考虑这些 GICs:
D1 = D(1,2,3,4) D2 = D(5,6,7,8) V1 = D1 + 2*D2
D1 和 D2 是二面角,但它们是中间项,不会在优化中用作变量。它们的周期性目前在复合坐标 V1 中不被识别。假设它们在一个几何中的值为 1 度和 2 度,而在下一个几何中的值为 1 度和 359 度。优化变量 V1 的变化应该是 0 + 2*(-3) = -6 度,但实际上是 0 + 2*(357) = 714 度,这看起来是一个巨大的变化。这将导致优化算法表现非常差。V1 不是一个简单的周期函数;在计算时需要对其组成部分应用周期性,但目前的 GIC 实现没有这样做。
GIC 在 Gaussian 输出中的单位
纯距离和角度(包括键角、线性弯曲和二面角/扭转)定义的 GICs 的值是从原子单位(Bohrs)中的笛卡尔坐标计算并以 Bohrs 和弧度用于内部存储。然而,为了用户的方便,它们在 Gaussian 输出中通常以常规的 Å 和度表示。对于通用的 GIC(即,当 GIC 不是纯笛卡尔坐标、键距或角度时),GIC 的值是作为笛卡尔坐标和键距(Bohrs)以及弧度角度的函数计算的,结合用户定义单位中的可选常数。这样的通用 GIC 值(标记为 GIC)是使用相同的单位计算、存储和输出的:即,如果 GIC 是键的组合或键角的组合,则这些任意单位对于键为 Bohr 、对于角度为弧度。
使用 ModRedundant 格式输入
可以使用当前内部坐标算法中的 ModRedundant 格式读取对 GICs 的修改。然而,旧格式仅适用于仅包含纯键距、键角或扭转角的 GICs。此外,上述的旧格式和新的 GIC 格式不能混合在同一输入部分中。
Last updated on: 12 June 2024. [G16 Rev. C.01]