xTB CEH与PTB电子性质
比较水和铵离子的CEH、GFN2和PTB电荷,辨认实际输出文件、PTB零能量占位与轨道导出范围。
阅读本篇目录
同一个分子的部分电荷会随分配模型变化。本篇用中性水和+1电荷的铵离子,演示CEH、GFN2和PTB输出怎么读,重点是把方法与文件对应起来,而不是用电荷大小给方法排“好坏”。
1. 运行与输入#
下载完整输入、运行与绘图包,解压进入 xtb-cli-special,在已分配CPU作业内执行:
bash run.sh
也可 sbatch job.slurm 提交。CPU分区按56核整节点分配计费,本例一个线程,使用 xtb/6.7.1,绘图用 sisl/0.16.4。CPU队列维护时请待恢复后提交,不在登录节点做生产计算。共同资料包完整运行一次后即可阅读两篇教程,不需要反复计算。
cat inputs/water.xyz
cat inputs/ammonium.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坐标是Å。脚本对水设置 --chrg 0,对铵设置 --chrg 1;两者都是闭壳层。CEH使用 --ceh,PTB使用 --ptb,各自在独立 raw/ 子目录运行,避免输出互相覆盖。
2. CEH电荷要读取哪个文件#
cat raw/ceh-water/ceh.charges
cat raw/ceh-water/xtbout.json
ceh.charges 才是本次CEH电荷。当前6.7.1这条命令还执行了默认GFN2计算,JSON的 partial charges 属于GFN2,不能因为它们在同一目录,就把JSON电荷当成CEH。
| 水分子原子 | CEH/e | GFN2/e | PTB/e |
|---|---|---|---|
| O | −0.29445651 | −0.56363896 | −0.13850611 |
| H1 | +0.14722826 | +0.28181948 | +0.06925627 |
| H2 | +0.14722826 | +0.28181948 | +0.06924984 |
每种方法分别检查电荷总和;水约为0,铵约为+1。部分电荷不是唯一的形式氧化态,也不能把一套模型的电荷未经参数匹配就用于另一套力场。

3. PTB输出中的0能量与轨道长度#
cat raw/ptb-water/xtbout.json
cat results/SUMMARY.json
PTB提供电荷、偶极、键级等电子性质,本例不提供有效总能量或核梯度。JSON里 total energy 和 electronic energy 的0是占位,不能据此计算反应能、做能量比较或当作成功的结构优化结果。
本例水的JSON报告23个分子轨道,铵报告33个,但轨道能量和占据数组各只导出12个值。教程按实际导出范围读取,不把这12项当作全部轨道,也不补造缺失的虚轨道。导出的占据总和均为8个价电子。
bond orders 是带原子索引的稀疏列表,未列出的原子对不应直接补成精确零。总偶极包含模型自身贡献,不应只用部分电荷乘坐标替代;带电分子还要注意偶极原点。
4. 复查并重画#
module load sisl/0.16.4
python -B verify.py --reference
python -B plot.py
这些命令只读取已有输出。换自己的体系时先确认电荷、自旋、方法支持和字段含义,再组织后处理;不要只按JSON字段名字猜它是否是可用物理量。