xTB IFF分子间作用能实操
明确指定两个分子、扫描固定取向间距并读取相互作用能,说明当前版本的梯度限制。
阅读本篇目录
下载xTB操作、筛选和IFF完整输入与真实结果,保存为example.zip:
python3 -m zipfile -e example.zip .
cd xtb-operations-examples
bash results.sh
bash plot.sh
以上只读取参考数据并画图,不启动新计算。本组使用xTB6.7.1官方预编译x86_64程序,直接加载xtb/6.7.1模块,无需自己编译;实际运行每个进程使用1个CPU线程。完整输入在inputs/,原生文本结果在reference-results/,六份CSV在data/。独立提交模板为job.slurm,请在Slurm分配的资源中执行计算命令。
1. IFF不是普通GFN2总能#
IFF是xTB中的分子间作用模型。这里放置两个水分子,前3个原子是分子A,后3个是分子B;两分子保持相同取向,仅沿z方向整体平移第二个分子,取3.0、3.5、4.5、6.0Å四个间距。
3.5Å条件的完整结构:
6
Own two-water separation 3.5 A
O 0.058394820188 0.115760031764 0.157426399324
H 0.823780432770 0.273097292213 -0.398576604212
H -0.161091860750 0.947600197636 0.581191693287
O 0.058394820188 0.115760031764 3.657426399324
H 0.823780432770 0.273097292213 3.101423395788
H -0.161091860750 0.947600197636 4.081191693287
这里的Å值是第二分子沿z的刚性平移量,也等于两个O原子的间距;不是最短原子距离。
2. 指定分子划分并计算#
module load xtb/6.7.1
python3 run.py water-IFF-3.5
实际调用为:
xtb input.xyz --iff --nat 1-3 --grad --json --parallel 1
--nat 1-3给出分子A的原子编号,其他原子归分子B,不是“总共有3个原子”。程序内部准备两个分子的电荷与局域轨道,再计算作用能。
其他三个间距:
python3 run.py water-IFF-3.0
python3 run.py water-IFF-4.5
python3 run.py water-IFF-6.0
3. 读取作用能与能量分量#
cat data/IFF-separation.csv
python3 read.py work

| O—O间距 / Å | 作用能 / kcal·mol⁻¹ |
|---|---|
| 3.0 | 1.739162 |
| 3.5 | 0.773344 |
| 4.5 | 0.361639 |
| 6.0 | 0.176506 |
这组固定取向的点全部为正值,不能画成“找到了水二聚体结合能最低点”。它只展示给定几何的距离依赖。
输出中E Pauli、E disp total、E ES total、E induction、E CT、E cavity的单位是kcal/mol;最后TOTAL ENERGY及gradient文件能量使用Eh。1Eh约627.509474kcal/mol。分量只打印3位小数,手工相加存在舍入差。
4. 这个版本不要拿IFF梯度驱动MD#
当前xTB6.7.1的IFF计算器直接写零梯度。 本例的--grad确实产生文件,但其中的零值不代表这些构型没有力,也不代表已经优化。
因此本例使用固定几何能量扫描,不能把这些梯度交给优化器或动力学。需要分子内外统一的能量与力时,可考虑适用的GFN-xTB/GFN-FF方法,并先做相应的导数与模型检查。选择模型时也应区分这里的IFF、DIPRO电子耦合和一般色散修正,它们解决的问题不同。