ORCA数据与基组导出
导出轨道、密度矩阵、重叠矩阵和基组,用真实水分子结果说明JSON读取和反向转换。
阅读本篇目录
需要自己画轨道能级、读取原子电荷,或把波函数数据交给分析脚本时,可以使用 orca_2json。需要查看基组的指数和收缩系数时,使用 orca_exportbasis。两者都可以利用已有结果,不必重新做电子结构计算。
1. 准备本例#
下载并解压ORCA文件处理实例包,进入 orca-file-tools。如果已按轨道与电子密度画图运行 bash run.sh,直接继续;否则先在已分配的 CPU 资源中执行这一步。完整流程要求新目录;后面的 json、plot、basis、potential 是对已有波函数的后处理,可以单独再次运行。
环境为 ORCA 6.1.1 官方预编译版、配套 OpenMPI 4.1.8;本组以 1 个 CPU 进程处理 HF/def2-SVP 水分子。分析脚本使用集群现有 NumPy 环境。
2. 导出JSON#
bash run.sh json
ls work/case.json work/roundtrip/original_copy.json
这一步先导出原波函数,再演示 JSON→GBW→JSON。需要手动操作时,在原计算目录准备同主名的配置:
module purge
module load orca/6.1.1
cd work
cat > case.json.conf <<'EOF'
{
"MOCoefficients": true,
"Basisset": true,
"MullikenCharge": true,
"LoewdinCharge": true,
"1elIntegrals": ["S", "H", "T", "V"],
"Densities": ["all"],
"JSONFormats": ["json"]
}
EOF
"$ORCA_ROOT/orca_2json" case.gbw > json.log
cd ..
配置名是 case.json.conf,与 case.gbw 主名一致。这里只请求这组分析所需的数据;没有要求输出双电子积分。大体系的积分与密度矩阵会占用较多磁盘,不要盲目打开所有输出。
| 本例字段 | 内容与单位 |
|---|---|
Molecule.Atoms |
原子坐标、基组和电荷;坐标单位看CoordinateUnits,本例为Angs |
MolecularOrbitals.MOs |
每个轨道的系数、占据数和能量;本例能量单位Eh |
S-Matrix |
AO重叠矩阵 |
H-Matrix、T-Matrix、V-Matrix |
单电子哈密顿量、动能和核吸引矩阵 |
Densities.scfp |
本次SCF的AO密度矩阵 |
打印所有轨道能量和占据数:
/public/toolkit/miniconda3/envs/ase-3.29.0/bin/python - <<'PY'
import json
m = json.load(open('work/case.json'))['Molecule']
print(m['CoordinateUnits'], m['MolecularOrbitals']['EnergyUnit'])
for i, orbital in enumerate(m['MolecularOrbitals']['MOs']):
print(i, orbital['Occupancy'], orbital['OrbitalEnergy'])
PY

水分子有 24 个基函数、24 个分子轨道和10个电子。Mulliken 与 Löwdin 的原子电荷可以不同,它们是不同划分方式,不能把两列数混在一起解释。
3. 从JSON重建GBW#
在独立目录中操作,保留原波函数:
mkdir json-back
cp work/case.json json-back/original.json
cd json-back
module purge
module load orca/6.1.1
"$ORCA_ROOT/orca_2json" original.json -gbw > json-to-gbw.log
ls original_copy.gbw
cat > original_copy.json.conf <<'EOF'
{
"MOCoefficients": true,
"Basisset": true,
"MullikenCharge": false,
"LoewdinCharge": false,
"JSONFormats": ["json"]
}
EOF
"$ORCA_ROOT/orca_2json" original_copy.gbw > gbw-to-json.log
cd ..
本版实际写出 original_copy.gbw。重建依赖 JSON 中保存的基组、几何和轨道信息,不是重新计算一个 SCF,也不会自动补回所有原始计算的密度容器和性质文件。本例逐项比较了反向转换前后的全部轨道能量、占据数和系数。
4. 查看和导出基组#
bash run.sh basis
cat work/water-def2-svp.orca
cat work/water-def2-svp.bas
对应的原生命令为:
module purge
module load orca/6.1.1
cd work
"$ORCA_ROOT/orca_exportbasis" -b def2-SVP -a H O -f ORCA -o water-def2-svp.orca
"$ORCA_ROOT/orca_exportbasis" -b def2-SVP -a H O -f GAMESS-US -o water-def2-svp.bas
cd ..
-a H O 限定导出氢、氧;-f 选择格式,-o 指定文件。ORCA格式中包含 NewGTO 片段,需要自定义基组时,取相应片段放入自己的 %basis 块;不要把整份含说明文字的文件直接当作主输入。
本例氧为 3s2p1d 收缩,共14个球谐基函数;每个氢为 2s1p,共5个,因此水分子为 14+5+5=24。不同格式的收缩系数可能采用不同归一化尺度,原始系数不一定逐字相等;应连同指数与收缩归一化方式一起比较。
5. 核对自己的导出#
bash analyze.sh work
脚本检查本例的 CᵀSC=I、tr(PS)=10、P=C·occ·Cᵀ、H=T+V、总电荷、基组和反向转换数据。核对有助于发现读取矩阵方向、轨道编号或单位时的错误;如果更换为其他分子,应相应修改电子数、输入和分析目标。
字段和选项见 ORCA的JSON说明及基组导出工具说明。