QE专题

QE:从晶胞矢量反查ibrav

实际运行cell2ibrav,解释输入单位、canonical晶格约定、正反向核对及任意晶胞的使用边界。

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

下载四种晶格输入、原生输出、CSV 与绘图脚本,保存为 example.zip:

python3 -m zipfile -e example.zip .
cd qe-cell-tools
module load ase/3.29.0 qe/7.6-8173m
bash read.sh
bash plot.sh

本例使用 QE 7.6 的 CPU 小工具;公共 8173m 版本采用 Intel oneAPI 2024.2 / Intel MPI 2021.13 与 MKL,具体构建以模块内 BUILD-INFO 为准。后处理使用 NumPy、ASE 环境与 Matplotlib。本例只是晶胞几何转换,没有原子基元、赝势或 DFT 能量,也不是这些材料的优化结果。

1. 反向输入的四行分别是什么#

cell2ibrav.x 先读取三条晶格矢量,再读取长度标度 alat;若矢量本来就是 Bohr,可输入 x 表示不额外缩放。

FCC 的完整输入为:

cat > fcc-vectors.in <<'EOF'
-5.13 0.0 5.13
0.0 5.13 5.13
-5.13 5.13 0.0
x
EOF
cell2ibrav.x < fcc-vectors.in > fcc-recovered.out
cat fcc-recovered.out

实际恢复 ibrav=2、celldm(1)=10.26000000,新矢量与原输入一致。这里 x 不是“单位 Å”,而是让 alat 取 1,工具按 Bohr 解释这些数。

若手里是 Å 矢量,先用一致的 Bohr/Å 换算,再输入;不要直接在第四行填入字母 angstrom 期待自动转换。

2. 读取三组不同的输出#

原生输出包括:

  • New lattice vectors in bohr:Bohr 矢量。
  • New lattice vectors in old alat:相对于输入长度标度的矢量。
  • New lattice vectors in new alat:相对于识别结果 celldm(1) 的矢量。

本例输入 x 后 old alat=1,因此前两组数值相同;new alat 则恢复 FCC 的 −0.5/0/0.5 等无量纲分量。相同数字来自长度标度约定,不能据此忽略单位。

3. 实际检查另外三个晶胞#

cell2ibrav.x < inputs/bcc/reverse.in > bcc-recovered.out
cell2ibrav.x < inputs/hexagonal/reverse.in > hexagonal-recovered.out
cell2ibrav.x < inputs/orthorhombic/reverse.in > ortho-recovered.out
grep -E 'ibrav|celldm|Discrepancy' hexagonal-recovered.out

实际识别依次为 3、4、8,并恢复原 a 与比值。四组都核对了体积、度量矩阵和输出矢量;有限小数位可能产生极小的重写误差,不应把打印出来的 0.000000 当成无限精度相等。

实际正反向转换的原胞体积和输出误差

4. 不把它当作通用空间群识别#

这个小工具匹配 QE 的标准 Bravais 矢量约定。任意旋转、非标准取基、超胞、畸变结构或仅有晶胞而缺少原子基元时,都不应指望它自动判断完整晶体空间群或生成正确原胞。

使用 ibrav=0 和明确的 CELL_PARAMETERS 是合法选择;不要为了得到非零 ibrav,强行改变原子与晶胞的对应关系。若更换晶格基底,还必须同步转换原子坐标。

5. 从输入到结果的完整顺序#

bash run.sh
bash read.sh work-new analysis-new
bash plot.sh analysis-new
cat analysis-new/cell-summary.csv

run.sh 对四组输入分别先执行正向工具,再把实际得到的 Bohr 矢量交给反向工具;不调用 pw.x,也不提交科学计算作业。已有 work-new/ 时停止,避免覆盖。

工具输入约定见 QE 7.6 的 cell2ibrav 源码,正向操作见从 ibrav 生成矢量。

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

查看配图

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

100%查看原图 ↗