QE:从ibrav生成晶胞矢量
实际运行ibrav2cell,展示FCC、BCC、六方和正交原胞的完整输入、Bohr单位及体积检查。
阅读本篇目录
下载四种晶格输入、原生输出、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. 为什么先检查晶胞#
pw.x 的 ibrav 和 celldm 决定晶格。把常规胞晶格常数、原胞矢量长度和 Å/Bohr 混淆,会改变实际体积。ibrav2cell.x 可先把参数展开为三条晶胞矢量,不启动自洽计算。
2. 完整 FCC 输入与命令#
cat > fcc.in <<'EOF'
&system
ibrav=2,
celldm(1)=10.26,
celldm(2)=0,
celldm(3)=0,
celldm(4)=0,
celldm(5)=0,
celldm(6)=0,
angle(1)=0, angle(2)=0, angle(3)=0
/
EOF
ibrav2cell.x < fcc.in > fcc.out
cat fcc.out
这里 celldm(1)=10.26 的单位为 Bohr,约为 5.429 Å。它是 FCC 常规立方胞的 a,不是输出每条原胞矢量的长度。angle(1..3)=0 显式关闭工具的附加旋转;这三个 angle 属于此小工具的输入,不应直接当作 pw.x 的通用输入字段。
实际输出的 Bohr 矢量为:
-5.13 0.00 5.13
0.00 5.13 5.13
-5.13 5.13 0.00
下面另一组输出为相对 alat 的无量纲矢量:
-0.5 0.0 0.5
0.0 0.5 0.5
-0.5 0.5 0.0
不要把这两组数混作 Å。使用 ibrav=0、CELL_PARAMETERS bohr 时可以采用第一组;使用其他长度约定时应先换单位。
3. 另外三种实际输入#
BCC、六方和简单正交原胞分别使用:
| 输入目录 | ibrav | celldm(1),Bohr | 额外非零参数 |
|---|---|---|---|
| bcc | 3 | 6.2 | 无 |
| hexagonal | 4 | 5.9 | celldm(3)=1.6,即 c/a |
| orthorhombic | 8 | 7.0 | celldm(2)=1.2,celldm(3)=1.5,即 b/a、c/a |
这些是用于工具演示的晶格参数,不对应已计算的材料性质。每个目录均提供完整输入:
cat inputs/hexagonal/input.in
ibrav2cell.x < inputs/hexagonal/input.in > hexagonal.out
ibrav2cell.x < inputs/bcc/input.in > bcc.out
ibrav2cell.x < inputs/orthorhombic/input.in > orthorhombic.out
六方矢量中的第二条与第一条夹角为 120°;celldm(3) 为比值,不是 c 的 Bohr 数值。

图中只有晶胞边和矢量,没有添加原子或把原胞画成常规胞。
4. 用体积和度量矩阵核对#
head -n 6 analysis-read/cell-summary.csv
head -n 8 analysis-read/cell-vectors.csv
原胞体积为三矢量行列式绝对值。FCC 为 a³/4,BCC 为 a³/2,六方为 √3·a²c/2,简单正交为 abc;本例同时独立核对了矢量内积,而不是只看图像是否像某种晶格。
需要完整运行本包时:
bash run.sh
bash read.sh work-new analysis-new
bash plot.sh analysis-new
下一篇用反向转换检查参数能否恢复。输入定义可对照 QE 7.6 的该工具源码。