xTB专题

xTB接口取数与分子电子性质

运行四个小分子的GFN1/GFN2,读取能量、梯度、电荷、偶极、完整键级和轨道数据,并独立检查梯度。

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

当你需要在自己的脚本里获取xTB计算结果,可以调用稳定C API,直接读取完整数组。本篇用H₂O、NH₄⁺、OH自由基和H₂,演示xTB6.7.1的静态库接口;资料包已把编译、计算和绘图串起来,不要求先手写C程序。

1. 下载后先运行#

下载完整输入、接口源码和绘图包,进入 xtb-c-api,在已分配CPU作业内执行:

bash run.sh

也可 sbatch job.slurm 提交;CPU分区按56核整节点分配和计费,本例只用一个线程,不使用GPU。脚本使用现有xTB6.7.1头文件和 libxtb.a,通过oneAPI2024.2的icx/ifx编译链接助手程序;Python取数和绘图使用 sisl/0.16.4。

流程是:编译接口助手 → 四个分子分别运行GFN1/GFN2的API与CLI → 水分子做正负位移检查梯度 → 输出CSV、全数组和两张图。每次54个电子单点中包含位移和坐标更新,属于同一套小例流程。

2. 看清结构、单位、电荷和自旋#

cat inputs/water.xyz
cat inputs/water.dat

本例水分子的完整XYZ为:

3
Fixed generic3D rotated teaching geometry
O 0.05291772109030 0.10583544218060 0.15875316327090
H 0.81682432412487 0.28469910273760 -0.38959556953728
H -0.14865865300789 0.94592297669472 0.57088389466498

XYZ坐标是Å;.dat 第一行是原子数、总电荷和未成对电子数,随后每行是原子序数与三维Bohr坐标,供C接口读取。不要把Å坐标不换算就送入API。

体系 总电荷 未成对电子数
H₂O 0 0
NH₄⁺ +1 0
OH 0 1
H₂ 0 0

OH演示开放壳层占据的输入。这里的未成对电子数与自旋多重度不是同一个整数;也不在本例讨论磁性响应。

实际三维结构与GFN2部分电荷

颜色和文字来自实际部分电荷,连线按Wiberg键级>0.1绘制,不能直接当作唯一的形式氧化态或整数化学键级。

3. 从终端直接读结果#

head -n 10 results/molecular-properties.csv
cat raw/water-gfn2/cli/wbo
module load sisl/0.16.4
python -B show_results.py

脚本直接读取已算完的水GFN2结果,打印能量、梯度、电荷、偶极、完整Wiberg矩阵和轨道占据,不会重新启动计算。

结果 单位和含义
电子总能 Eh;只在一致方法与配平组分下组合比较
梯度 Eh/Bohr;原子受力是负梯度
部分电荷 e;分配方案和方法会影响数值
总偶极 e·Bohr;1 e·Bohr约为2.54175 Debye
轨道能量 API为Eh,图中换成eV;分子轨道不是晶体能带
轨道系数 列优先的AO×MO矩阵,需要匹配该方法的基组

实际水分子GFN2电子能约 −5.07036944085 Eh。不要用不同分子、不同方法的绝对电子能直接判定哪个“更稳定”。

4. 为什么API矩阵比wbo文件完整#

这版CLI的 wbo 文件只写出键级大于0.1的原子对。水的O–H项约0.9202,而H–H项约0.0004,不会出现在稀疏文件里;未列出不表示这个矩阵元素严格等于零。API返回完整矩阵,适合做后续筛选或自己的图。

总偶极也不能简单由部分电荷乘坐标求和替代。GFN2还包含原子偶极贡献;带电分子在平移t后,总偶极增加Q·t。NH₄⁺的数值必须结合本例坐标原点解释,不能与另一个原点下的结果直接比大小。

5. 独立检查梯度并重画#

module load sisl/0.16.4
python -B verify.py
python -B plot.py

这里用水分子每个坐标的正负0.001 Bohr能量差分核对完整梯度。当前6.7.1 Intel发布包在本例恰好沿坐标轴放置的水构型上,出现过梯度与能量差分不一致;API和CLI彼此一致仍不足以排除该问题。本包使用一般三维方向,同时核对总力矩和刚性旋转关系。遇到类似异常时,应保留原结果,做旋转对照和独立差分,不把更换摆放方向视作任意体系的通用保证。

新方向下最大梯度差分误差约 2×10⁻⁷ Eh/Bohr。换自己的分子时另建目录,准备匹配的电荷、自旋和坐标,重新做必要检查,不能沿用水的固定参考文件。

完整数组在 results/full-fields.npz,本次新图在 plots/,原示例图在 reference-plots/。继续看对象管理与接口范围;接口定义见官方C API文档。

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

查看配图

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

100%查看原图 ↗