Phonopy专题

Phonopy 特殊结构格式转换

用Si和NaCl小结构练习WIEN2k、CRYSTAL、TURBOMOLE与Fleur转换,区分几何文件、计算模板和真实输出。

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

下载输入、力常数、转换脚本与绘图资料包。在已分配的 CPU 资源内解压,一份新目录运行一次:

unzip phonopy-special-formats-wave241-*.zip -d phonopy-practice
cd phonopy-practice
bash run.sh
ls analysis figures

run.sh 每次使用 1 个 CPU,不需要 GPU。它完成结构生成、原生格式转换、读回比较和既有 Si 力常数后处理,最后得到 CSV 和三张高清图;不会启动 VASP 或其他电子结构程序。输出目录已存在时,另解压到新目录继续练习。

环境为 phonopy/4.8.3、Python 3.11.16、NumPy 2.3.5、SciPy 1.16.3、spglib 2.7.0;C/OpenMP 部分使用 GCC 13.3,默认 Rust 后端为 phonors 0.6.0。CRYSTAL 外部几何独立读回使用集群的 ASE 3.29.0 环境。后面的短命令在 module load phonopy/4.8.3 后使用。

1. 先看整体流程#

已有 POSCAR → 选择目标格式并补元数据 → 生成结构 → 读回检查晶胞、元素、坐标 → 补全目标软件的基组、网格、SCF 等参数 → 真正计算位移结构的力 → 交给 Phonopy 计算声子。

本文演示前四步。四种格式有转换接口,不代表这四种电子结构程序已经安装或具有相同授权。力文件必须来自实际计算,不能把结构文件当成力输出。其他十四条格式路线见跨软件结构转换,单位选择见格式与单位。

本例实际Si和NaCl原胞结构

Si:两原子金刚石原胞#

以晶格常数 5.43 Å 构造参考几何,尚未优化:

Si diamond primitive reference
1.0
0.000 2.715 2.715
2.715 0.000 2.715
2.715 2.715 0.000
Si
2
Direct
0.00 0.00 0.00
0.25 0.25 0.25

NaCl 参考几何使用常规晶格常数 5.64 Å;完整输入:

NaCl rocksalt primitive reference
1.0
0.00 2.82 2.82
2.82 0.00 2.82
2.82 2.82 0.00
Na Cl
1 1
Direct
0.0 0.0 0.0
0.5 0.5 0.5

脚本生成的文件在 work/cli/Si2/POSCAR 和 work/cli/NaCl2/POSCAR。以下从已运行目录进入 Si 实例;手动试命令请用新的输出名,保留首次结果。

cd work/cli/Si2

2. WIEN2k:需要径向网格元数据#

先进入已有 wien2k 子目录,结构名为 case.struct。下面命令把 POSCAR 转成另一个文件:

cd wien2k
phonopy-calc-convert -i POSCAR -o manual.struct \
  --calcin vasp --calcout wien2k \
  --additional-info '781 781' '.0001 .0001' '1.8 1.8'
head -25 manual.struct
phonopy-calc-convert -i manual.struct -o manual.POSCAR \
  --calcin wien2k --calcout vasp

--additional-info 的三组数据分别是每个原子的 NPT、R0、RMT;本例两个原子,所以每组两个值。这里是文件格式练习用的元数据,真实计算应根据元素和原有 WIEN2k 输入选择,不能把示例 RMT 当作通用推荐值。缺少这几组信息时,当前版本不能完成导出。

.struct 的长度使用 Bohr,POSCAR 使用 Å,交给转换器处理单位;不要把 Bohr 数值再当成 Å 输入。

为什么读回不是逐位完全相同#

4.8.3 原生 WIEN2k 写出器将晶格长度写到六位小数。Si 与 NaCl 的实际读回相对体积差分别约为 1.00×10⁻⁷、1.02×10⁻⁷,原胞内最近两原子距离差约为 7.84×10⁻⁸ Å、9.61×10⁻⁸ Å。这是这组几何的文件舍入量,不是力或声子收敛精度。

精确到 10⁻⁸ 相对体积的比较会显示差异,不能因为转换成功就要求输出任意精确。包内另有原胞边长恰好 8 Bohr 的结构单位对照,原生格式可精确表示;它仅用于核对单位,不代表平衡硅晶格。需要严格保持原始晶胞时,保留原输入和高精度参考,逐项比较目标格式允许的小数位数。

四种原生格式的真实读回误差,含WIEN2k舍入边界

3. CRYSTAL:输入与输出不是同一种文件#

从初始解压目录进入:

cd work/cli/Si2/crystal
phonopy-calc-convert -i POSCAR -o manual \
  --calcin vasp --calcout crystal --additional-info 14 14
ls manual.ext manual.d12
head -20 manual.ext
head -25 manual.d12

这里生成 .ext 外部几何和 .d12 输入骨架;Si 的常规原子编号是 14。NaCl 两个原子的示例用 --additional-info 11 17。使用赝势或特殊基组时,常规原子编号要与真正的 CRYSTAL 基组定义一致。

补齐基组和 SCF 模板后才是可计算输入。资料包没有虚构基组、总能或原子力。phonopy.interface.crystal.read_crystal 读取的是 CRYSTAL 计算输出;它不能读取刚生成的 .ext 来冒充一次完整电子计算。若已有自己的真实 CRYSTAL 输出,读取命令形式为:

phonopy-calc-convert -i your-real-crystal-output.o -o readback.POSCAR \
  --calcin crystal --calcout vasp

这里的文件名需替换成自己的真实输出。集群上另外使用 Phonopy 官方提供的 Si、NaCl 历史输出做过原生读取和 CLI 转换,晶胞及周期等价坐标一致;这是读取已有官方数据,不是本次新跑 CRYSTAL。资料包不包含这些完整原始输出。

只想检查本例生成的几何,可以独立用 ASE 读 fort.34 格式:

/public/toolkit/miniconda3/envs/ase-3.29.0/bin/python - <<'PYCODE'
from ase.io import read
atoms = read('manual.ext', format='crystal')
print(atoms.get_chemical_symbols())
print(atoms.cell)
print(atoms.get_scaled_positions())
PYCODE

负的分数坐标与加一个整数后的坐标可以表示同一个周期位置。例如 −0.125 与 0.875 周期等价;判断结构是否改变,应同时比较晶胞和周期位置,不能只逐行相减笛卡尔坐标。

4. TURBOMOLE:control 与 coord 作为一组#

cd work/cli/Si2/turbomole
phonopy-calc-convert -i POSCAR -o manual \
  --calcin vasp --calcout turbomole
ls manual/control manual/coord
cd manual
phonopy-calc-convert -i control -o ../manual.POSCAR \
  --calcin turbomole --calcout vasp

读取时进入 control 所在目录,因为它通过相对路径引用 coord。坐标使用 Bohr。生成的 control 仍需补基组、k 点等真实设置,尤其不要保留网格占位符直接启动生产计算。本例 Si 与 NaCl 读回相对体积差分别约为 1.22×10⁻⁹、1.98×10⁻⁹。

5. Fleur:元素编号之外还需要标题信息#

cd work/cli/Si2/fleur
phonopy-calc-convert -i POSCAR -o manual.in \
  --calcin vasp --calcout fleur \
  --additional-info 14.0 14.0 'Si primitive geometry'
head -25 manual.in
phonopy-calc-convert -i manual.in -o manual.POSCAR \
  --calcin fleur --calcout vasp

本例两个 Si 使用 14.0 14.0 物种编号;NaCl 示例对应 11.0 17.0。额外的一行作为标题/后续输入片段。Fleur 几何接口使用 Bohr;实际 inpgen、电子计算参数仍按自己的 Fleur 流程补齐。

6. 最后应得到什么#

四种格式各有两个材料几何;额外一个精确 Bohr 长度对照。analysis/format-errors.csv 保存晶胞度量、体积和原胞内最短周期原子间距误差。结构成功转换后,再去运行目标电子结构软件;后续声子步骤可参考Si有限位移流程。

手动示例中的 cd work/... 均以初始解压目录为起点;切换另一节前先回该目录。原生完整工作流见 Phonopy计算软件接口。在线官方页面当前为4.9.0,本篇命令及数值来自集群4.8.3。

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

查看配图

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

100%查看原图 ↗