xTB专题

xTB ONIOM内外分区与能量组合

用完整水分子片段定义GFN2内区和GFN-FF外区,运行ONIOM并用三个独立单点重建分层总能。

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

当你希望把较精细的方法集中到局部区域,可使用ONIOM分层:低层方法计算全体系,再用内区的高层结果替换内区低层贡献。本例采用GFN2和GFN-FF两个现有方法,用两个完整水分子避免跨边界共价键的处理问题。

1. 运行例子#

下载完整输入、运行与绘图包,解压进入 xtb-cli-special,在已分配CPU作业内执行:

bash run.sh

也可 sbatch job.slurm 提交。CPU分区按56核整节点分配计费,本例一个线程,使用 xtb/6.7.1,绘图用 sisl/0.16.4。CPU队列维护时请待恢复后提交,不在登录节点做生产计算。共同资料包完整运行一次后即可阅读两篇教程,不需要反复计算。

2. 完整结构与内区编号#

cat inputs/dimer.xyz
6
Two intact water fragments;second shifted3Angstrom in x
O 0.05291772109030 0.10583544218060 0.15875316327090
H 0.81682432412487 0.28469910273760 -0.38959556953728
H -0.14865865300789 0.94592297669472 0.57088389466498
O 3.0529177210902998 0.10583544218060 0.15875316327090
H 3.81682432412487 0.28469910273760 -0.38959556953728
H 2.8513413469921098 0.94592297669472 0.57088389466498

前3个原子组成内区水分子,后3个是外区水分子。脚本使用 --oniom gfn2:gfnff 1,2,3:GFN2用于内区,GFN-FF用于全体系和内区低层参考。后一个水沿x平移3Å,保持各自几何;这里没有经过二聚体优化。

实际内外片段及分层能量贡献

这是一个减法组合,不能称为“全体系都按GFN2精度计算”。内外区域之间的作用仍受低层描述等模型假设影响。

3. 从原生输出读取总能#

tail -n 25 raw/oniom-dimer/native.out
cat results/SUMMARY.json

本次ONIOM命令没有生成包含最终分层总能的 xtbout.json,最终结果从原生文本里的 ONIOM TOTAL ENERGY 读取。不要把中间片段的某个能量误认为总体系结果。

独立计算项 能量/Eh
GFN-FF,全体系 −0.654517485464
GFN2,内区 −5.070369440854
GFN-FF,内区 −0.327257831610
原生ONIOM总能 −5.397629094707

组合公式为:

E_ONIOM = E_low(full) + E_high(inner) - E_low(inner)

三个独立单点重建得到约−5.397629094708Eh,与原生结果差约10⁻¹²Eh。最后一项必须减去,避免内区低层能量被重复计入。比较反应或不同构型时,区域、原子映射、电荷、自旋和方法设置必须一致。

4. 查内区、复查和绘图#

cat raw/oniom-dimer/inner_region.xyz
module load sisl/0.16.4
python -B verify.py --reference
python -B plot.py

本例只验证完整分子片段下的固定结构能量组合,不把它当成分层优化、梯度或跨共价键边界的示例。实际分区跨越化学键时,还需要检查连接原子、边界处理与区域依赖,不能直接套用本例的1、2、3编号。

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

查看配图

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

100%查看原图 ↗