xTB专题

xTB外部点电荷与受力

给水分子加入两个固定外电荷,提取分子与点电荷全部梯度,并演示卸载后恢复气相。

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

当你需要研究一个分子在固定电荷环境中的响应,可给xTB电子结构计算添加外部点电荷。这里用一正一负两个电荷做最小例;它们不是额外的量子原子,也不是可自洽极化的完整MM模型。

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/pointcharges.dat
2
1 0.1 6 2 1
8 -0.1 -3 5 -2

第一行是电荷数,后续每行依次是原子序数、电荷/e、x/y/z坐标/Bohr。原子序数用于相关参数,不能误作点电荷的电荷量。这里固定+0.1e和−0.1e,原始分子仍为中性水。

实际水分子与两个外部点电荷

3. 加载并取出两套梯度#

xtb_setExternalCharges(env, calc, &npc, numbers, charges, positions_bohr);
xtb_singlepoint(env, mol, calc, res);
xtb_getGradient(env, res, molecular_gradient);
xtb_getPCGradient(env, res, point_charge_gradient);

两套梯度分别有3N和3Npc个分量,单位均为Eh/Bohr;转换为受力时都要取负号。计算总平移力与总力矩时,必须同时包括分子和外部电荷。只看水分子自身,净力不为零可能就是外电场作用。

4. 从终端看实际结果#

cat raw/gfn2-pc/result.json
cat results/methods.csv

本例GFN2外电荷条件的总能为 −5.070075837739 Eh。分子9个分量、点电荷6个分量都做了正负0.001Bohr独立能量差分,最大误差约 2.0×10⁻⁷ Eh/Bohr。这个差分检查针对本例几何和固定电荷;不是对任意QM/MM模型精度的保证。

5. 卸载外电荷并重新计算#

xtb_releaseExternalCharges(env, calc);
xtb_singlepoint(env, mol, calc, res);

包内 result.json 的 released_gas 保存卸载后重新计算的结果。GFN2回到约 −5.070369440854 Eh,与共同气相水输入一致。卸载后仍要重新计算;原结果对象不会自动变成新的气相能量。

外电荷之间的MM内部作用和其他MM力场项不属于这个例子的xTB量子能量,组合到自己的多尺度程序时需要单独定义并避免重复计数。

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

查看配图

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

100%查看原图 ↗