xTB专题

xTB接口运行GFN0与GFN-FF

用同一水分子演示GFN0电子结构与GFN-FF力场接口,读取能量和完整梯度。

更新于 2026-11-09约 2 分钟阅读按任务与环境选择适用配置
阅读本篇目录

GFN0-xTB是电子结构方法,GFN-FF是通用力场。两者都可以用xTB接口调用,但不能把GFN-FF当成“GFN3”,也不能用两种方法的绝对总能量直接排列稳定性。

1. 跑通例子#

下载完整接口源码、输入与绘图包,解压进入 xtb-api-extensions。在已分配的CPU作业内执行:

bash run.sh

也可 sbatch job.slurm 提交。CPU分区按56核整节点分配和计费,本例只使用一个线程,不使用GPU。脚本用现有xTB6.7.1头文件与静态库、oneAPI2024.2的icx/ifx编译链接,Python绘图来自 sisl/0.16.4。流程一次生成全部案例;完成后只读结果和绘图,不重复运行完整计算。

2. 查看完整分子输入#

cat inputs/water.dat
3 0 0
8 0.10000000000000001 0.20000000000000001 0.29999999999999999
1 1.5435742645285506 0.53800333210075846 -0.73622892579305521
1 -0.28092414024069312 1.7875353609437803 1.078814209876515

第一行依次是原子数、总电荷、未成对电子数;随后是原子序数及Bohr坐标。这里是中性闭壳层水分子。与XYZ常用的Å单位不同,不能把坐标原样混用。

3. 两个方法如何切换#

完整C源码在 api_extra.c,关键调用为:

xtb_loadGFN0xTB(env, mol, calc, NULL);
/* 换用新建的计算器和结果对象时: */
xtb_loadGFNFF(env, mol, calc, NULL);
xtb_singlepoint(env, mol, calc, res);
xtb_getEnergy(env, res, &energy);
xtb_getGradient(env, res, gradient);

本包助手中的方法选择器 3 明确代表GFN-FF;它只是脚本编号,不是方法名称。更换方法要使用匹配的计算器和结果对象,避免沿用不兼容波函数数据。

4. 读取结果与梯度#

cat results/methods.csv
head -n 12 raw/gfnff-gas/result.json
方法 本例能量/Eh 完整梯度最大差分误差/(Eh/Bohr)
GFN0-xTB −4.366765394851 2.08×10⁻⁷
GFN-FF −0.327257831610 2.18×10⁻⁷

这些数值来自同一固定几何的单点,不是优化结果。受力等于负梯度。需要优化时应使用匹配方法的优化流程;水分子单点能量不能说明力场适合任意材料。

再看外部点电荷和GBSA网格。接口对象与单位基础见已有教程。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗