xTB PTB 极化率与拉曼:从输入到光谱数据
水分子极化率张量、GFN2振动频率与PTB的IR和拉曼强度。
阅读本篇目录
下载输入、参考输出、CSV与画图程序,保存为example.zip:
python3 -m zipfile -e example.zip .
cd xtb-properties-examples
bash results.sh
bash plot.sh
图片生成在figures目录,实际计算的原始文本在reference-results。环境为xtb/6.7.1,官方Intel版、固定提交edcfbbe;每个例子单线程,无需GPU。下文的xtb命令展示实际计算步骤,集群提交时使用配套sbatch job.slurm 算例名;不要在登录终端长时间占用资源。每次重算使用新目录,避免旧文件混入。
1. 先明确两种计算各做什么#
--ptb --alpha计算PTB极化率;--ptb --hess --raman使用GFN2 Hessian计算振动频率,并由PTB计算相关强度。不能把普通GFN2后面加--alpha就视为得到了所需响应,也不要省掉拉曼命令的--ptb和--hess。
2. 极化率#
sbatch job.slurm water-ptb-alpha
实际命令:
xtb input.xyz --ptb --alpha --json --parallel 1
grep -A 6 'Numerical polarizability tensor' stdout.log
水分子本例张量,单位Bohr³:
x y z
x 7.2415 -0.0765 -1.2016
y -0.0765 7.5157 0.5935
z -1.2016 0.5935 6.8726
各向同性平均是迹除以3,约7.2099原子单位,即1.0684ų。非对角元随分子朝向变化;比较不同方向必须保持相同坐标系。该张量读取自标准输出,本版本JSON中的总能量零值是占位值,不能用来做PTB反应能或溶剂化能。
3. 拉曼与红外#
sbatch job.slurm water-ptb-raman
xtb input.xyz --ptb --hess --raman --json --parallel 1
cat vibspectrum
本例3个正振动模的结果:
| 频率/cm⁻¹ | IR强度/(km/mol) | 拉曼活度/(Å⁴/amu) |
|---|---|---|
| 1538.82 | 78.72274 | 3.15729 |
| 3645.71 | 47.22631 | 36.74898 |
| 3653.98 | 146.04458 | 13.78886 |
非线性三原子分子还有6个接近零的平移/转动模。JSON方法名显示GFN2,是因为Hessian来自GFN2;不要把它误写为“PTB能量Hessian”。拉曼活度不是指定激光和温度下的实验散射强度。

4. 从JSON导出CSV#
python3 - <<'PY'
import json,csv
d=json.load(open('xtbout.json'))
with open('raman.csv','w') as f:
w=csv.writer(f)
w.writerow(['frequency_cm-1','IR_km/mol','Raman_A4/amu'])
w.writerows(zip(d['vibrational frequencies / rcm'],
d['IR intensities / km/mol'],
d['Raman activities / A^4/amu']))
PY
配套图保留离散频率,不人为加上实验峰宽。需要连续谱时另行说明所选展宽函数和宽度。更多方法边界见官方PTB说明。
需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。