xTB调用ORCA与ONIOM内区截取
实际调用ORCA计算水分子的能量和梯度,并区分ONIOM切出结构与真正的多层能量计算。
阅读本篇目录
下载xTB偏置、参数文件与ORCA接口输入和真实结果,保存为example.zip:
python3 -m zipfile -e example.zip .
cd xtb-bias-parameter-examples
bash results.sh
bash plot.sh
这几步只读取参考数据并绘图。完整输入在inputs/,原生文本结果在reference-results/,四份CSV在data/。计算使用现有xtb/6.7.1与orca/6.1.1模块,每个进程1个CPU线程;xTB为官方x86_64预编译程序,ORCA使用现有OpenMPI4.1.8配套入口,不需要重新编译。自己计算时,从本目录提交sbatch job.slurm,或在已分配资源内运行文中的单例命令。
1. 调用外部ORCA#
本例使用ORCA6.1.1的HF/STO-3G、TightSCF计算三原子水分子,适合说明接口。它不是高精度水分子能量推荐方案。
完整xcontrol:
$external
orca bin=/public/software/orca/6.1.1/linux-x86_64-openmpi4.1.8/orca
orca input line=HF STO-3G TightSCF
$end
orca bin指向当前集群的程序,其他平台要改为自己合法安装的ORCA路径。随后在资源分配内:
module load orca/6.1.1 xtb/6.7.1
python3 run.py water-external-ORCA
核心调用为:
xtb input.xyz --orca --input settings.inp --grad --parallel 1
xTB调用ORCA并读取其ENGRAD文件,返回约−74.962006994289Eh。ORCA原生ENGRAD与父进程读回能量一致,全部梯度在打印精度下一致;这里核对的是数据接口,不能把这个HF总能与GFN2总能的大小直接作为方法优劣比较。
head -12 reference-results/water-external-ORCA/gradient
cat data/parameter-ORCA-readback.csv
2. 仅截取ONIOM内区#
另一个例子放两个水分子共6原子,指定前3个原子为内区:
python3 run.py ONIOM-cut
它运行:
xtb input.xyz --oniom gfn2:gfnff 1-3 --cut --json --parallel 1
得到inner_region_without_h.xyz,本例内容是3个原子:
3
xtb: 6.7.1 (edcfbbe)
O 0.05839482018800 0.11576003176400 0.15742639932400
H 0.82378043277000 0.27309729221300 -0.39857660421200
H -0.16109186075000 0.94760019763600 0.58119169328700
名字中的without_h指未添加新的边界封端H,不是把原结构所有H删除。本例内区是一整个水分子,没有跨边界共价键,输出位置和元素与原文件前3个原子保持一致。

3. 切出结构不等于得到了ONIOM能量#
--cut这个例子在准备几何后正常结束,没有输出多层总能。不要因为返回码为0,就把它解释成一次完成的ONIOM能量计算。
要运行真正的减法嵌入,应使用ONIOM片段实例中的完整输入,计算高层内区、低层全体系和低层内区,再检查减法关系;若内外区跨共价键,还需正确处理封端、元素与电荷。
4. 查看自己的结果#
python3 read.py work
读回表把ONIOM-cut标成geometry-only,能量为空。TURBOMOLE/MOPAC的外部入口还需要对应软件及配置;本例实际跑的是ORCA,不用其他软件已安装来代替这些前置条件。