xTB专题

xTB tblite参数文件使用实例

用公开CHNO参数文件完成vparam读取,并与内置tblite模型比较实际能量和全部梯度。

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

下载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. vparam是模型参数,不是结构输入#

--vparam读取tblite的TOML参数文件;普通xcontrol中的SCF设置则使用--input。两者不能混用。

本例参数来自tblitev0.3.0官方simple-xtb.toml测试文件,固定源码提交fa115545f7a6ba8e3f0e62df5cdace8781f4d309,包含H、C、N、O四种元素。原许可随资料包提供。它是公开的测试参数,不是为某种材料重新拟合的模型,不支持据此推断其他元素。

2. 完整参数文件#

cat inputs/water-tblite-param/parameters.toml
[meta]
format = 1

[hamiltonian.xtb]
wexp = 5.0000000000000000E-01
kpol = 2.0000000000000000E+00
enscale = 2.0000000000000000E-02
cn = "gfn"
[hamiltonian.xtb.shell]
ss = 1.8500000000000001E+00
pp = 2.2300000000000000E+00
dd = 2.2300000000000000E+00
sd = 2.0000000000000000E+00
pd = 2.0000000000000000E+00

[dispersion.d4]
sc = true
s6 = 1.0000000000000000E+00
s8 = 2.7000000000000002E+00
a1 = 5.2000000000000002E-01
a2 = 5.0000000000000000E+00
s9 = 5.0000000000000000E+00

[repulsion.effective]
kexp = 1.5000000000000000E+00
klight = 1.0000000000000000E+00

[charge.effective]
gexp = 2.0000000000000000E+00
average = "arithmetic"

[thirdorder.shell]
s = 1.0000000000000000E+00
p = 5.0000000000000000E-01
d = 2.5000000000000000E-01

[multipole.damped]
dmp3 = 3.0000000000000000E+00
dmp5 = 4.0000000000000000E+00
kexp = 4.0000000000000000E+00
shift = 1.2000000000000000E+00
rmax = 5.0000000000000000E+00

[element.H]
shells = [ "1s" ]
levels = [ -1.0707210999999999E+01 ]
slater = [ 1.2300000000000000E+00 ]
ngauss = [ 3 ]
refocc = [ 1.0000000000000000E+00 ]
shpoly = [ -9.5361800000000000E-03 ]
kcn = [ -5.0000000000000003E-02 ]
gam = 4.0577099999999999E-01
lgam = [ 1.0000000000000000E+00 ]
gam3 = 8.0000000000000016E-02
zeff = 1.1053880000000000E+00
arep = 2.2137169999999999E+00
xbond = 0.0000000000000000E+00
dkernel = 5.5638889999999996E-02
qkernel = 2.7430999999999999E-04
mprad = 1.3999999999999999E+00
mpvcn = 1.0000000000000000E+00
[element.C]
shells = [ "2s", "2p" ]
levels = [ -1.3970922000000002E+01, -1.0063292000000001E+01 ]
slater = [ 2.0964320000000001E+00, 1.8000000000000000E+00 ]
ngauss = [ 4, 4 ]
refocc = [ 1.0000000000000000E+00, 3.0000000000000000E+00 ]
shpoly = [ -2.2943210000000002E-02, -2.7110200000000002E-03 ]
kcn = [ -1.0214400000000000E-02, 1.6165700000000002E-02 ]
gam = 5.3801500000000002E-01
lgam = [ 1.0000000000000000E+00, 1.1056357999999999E+00 ]
gam3 = 1.5000000000000002E-01
zeff = 4.2310780000000001E+00
arep = 1.2476550000000000E+00
xbond = 0.0000000000000000E+00
dkernel = -4.1167399999999998E-03
qkernel = 2.1358300000000000E-03
mprad = 3.0000000000000000E+00
mpvcn = 3.0000000000000000E+00
[element.N]
shells = [ "2s", "2p" ]
levels = [ -1.6686243000000001E+01, -1.2523956000000000E+01 ]
slater = [ 2.3398810000000001E+00, 2.0143320000000000E+00 ]
ngauss = [ 4, 4 ]
refocc = [ 1.5000000000000000E+00, 3.5000000000000000E+00 ]
shpoly = [ -8.5060029999999995E-02, -2.5042010000000003E-02 ]
kcn = [ -1.9553360000000000E-01, 5.6107600000000001E-02 ]
gam = 4.6149299999999999E-01
lgam = [ 1.0000000000000000E+00, 1.1164892000000000E+00 ]
gam3 = -6.3978000000000007E-02
zeff = 5.2425920000000001E+00
arep = 1.6826890000000001E+00
xbond = 0.0000000000000000E+00
dkernel = 3.5212729999999998E-02
qkernel = 2.0267859999999999E-02
mprad = 1.8999999999999999E+00
mpvcn = 3.0000000000000000E+00
[element.O]
shells = [ "2s", "2p" ]
levels = [ -2.0229984999999999E+01, -1.5503116999999998E+01 ]
slater = [ 2.4397419999999999E+00, 2.1370230000000001E+00 ]
ngauss = [ 4, 4 ]
refocc = [ 2.0000000000000000E+00, 4.0000000000000000E+00 ]
shpoly = [ -1.4955291000000001E-01, -3.3508190000000000E-02 ]
kcn = [ 1.1782600000000001E-02, -1.4510199999999999E-02 ]
gam = 4.5189600000000002E-01
lgam = [ 1.0000000000000000E+00, 1.1497020000000000E+00 ]
gam3 = -5.1713400000000000E-02
zeff = 5.7844150000000001E+00
arep = 2.1657120000000001E+00
xbond = 0.0000000000000000E+00
dkernel = -4.9356700000000003E-02
qkernel = -3.1082800000000002E-03
mprad = 1.8000000000000000E+00
mpvcn = 2.0000000000000000E+00

meta.format定义格式版本;hamiltonian、色散、排斥、电荷及元素区块共同定义模型。修改一个参数就可能改变能量和力,不能把随意改值当作物理标定。

3. 比较内置模型和显式文件#

module load xtb/6.7.1
python3 run.py water-tblite-default
python3 run.py water-tblite-param

第二个例子的核心命令:

xtb input.xyz --gfn 2 --tblite --vparam parameters.toml --acc .0001 --grad --parallel 1

本例相同水分子的两种调用都得到约−5.070544378417Eh,全部梯度分量也一致。这说明这一份文件在这个模型上的读取衔接正确,不是证明任意自定义参数都能保持原精度。

cat data/parameter-ORCA-readback.csv
python3 read.py work

文件中的HOMO/LUMO、电荷、能量等输出能力还与所用后端和模型有关;不要把PTB的性质计算模式套成普通GFN2总能。相关区别见后端与溶剂模型和CEH/PTB。

需要自己的参数时,先确定格式、元素、拟合目标和独立测试集,再做结构、能量及导数检查。本例不会修改系统模型或用户的默认配置。

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

查看配图

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

100%查看原图 ↗