Phonopy专题

Phonopy 势函数结构优化与重新建模

实际优化一个扰动Si原胞,明确固定晶胞与原子优化,以及如何把优化结构传给新的声子计算。

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

下载原生QHA、随机位移与结构优化实例包,在普通账号已分配的CPU资源中运行:

unzip phonopy-qha-random-relax-wave247.zip -d phonopy-practical
cd phonopy-practical
bash setup.sh
bash run.sh

setup.sh创建本目录个人.env,需要联网下载固定版本的conda-forge Linux x86_64包;公共模块不变。环境为Phonopy4.8.3、Python3.11.18、NumPy2.4.6、pypolymlp0.22.1和symfc1.7.3,实际预编译C/C++运行库libgcc/libstdcxx16.2.0。绘图另用集群phonopy/4.8.3模块。所有计算使用1个CPU线程,不需要GPU,不启动DFT。

一键流程输出source/、analysis/和figures/;已有结果目录不覆盖,重新练习请换新的解压目录。以下手动命令都放在独立新目录,便于自己修改参数。

1 固定晶胞,只优化原子位置#

本例使用小型多项式势,将2Si原胞中一个Si沿笛卡尔x方向移动0.04 Å。该势来自NEP标签拟合,本节也是势函数计算,不是DFT结构优化。

cat source/POSCAR-perturbed
cat source/POSCAR-relaxed

扰动后的实际输入:

generated by phonopy
1.0
0.0 2.715 2.715
2.715 0.0 2.715
2.715 2.715 0.0
Si
2
Direct
0.0 0.0 0.0
0.2426335174953959 0.2573664825046040 0.2573664825046040

原胞基矢不正交,所以沿笛卡尔x移动,不是只给某个分数坐标加0.04。

本节固定全部晶胞参数,只优化内部原子位置;它不是晶胞优化。结果文件中的晶胞与初始完全相同,不能据此声称找到了该势的零压平衡晶格常数。

2 原生relax参数的行为#

cat source/native-relax/native.out

run.py运行--pypolymlp --relax-atomic-positions -d。当前版本会显示优化后原子坐标,同时明确提示:

Note: This unit cell is not used in phonon calculations.

因此,一条命令里出现优化参数和声子参数,并不意味着后者已经使用优化后的结构。看到了优化输出后,还需要明确传递新结构。

3 把返回的结构保存,再建立新Phonopy对象#

本例脚本实际采用:

from phonopy import Phonopy
from phonopy.interface.pypolymlp import relax_atomic_positions
from phonopy.interface.vasp import write_vasp

relaxed = relax_atomic_positions(unitcell, model, gtol=1e-4)
write_vasp("POSCAR-relaxed", relaxed)
new_phonon = Phonopy(relaxed, [2, 2, 2], primitive_matrix=primitive_matrix)
new_phonon.save("relaxed.yaml")

relaxed为返回的新原胞;随后在新工作目录中,复制模型并用relaxed.yaml调用原生--pypolymlp -d重新求力、拟合力常数。run.py已把这几步连接起来,不需要自己从日志抄坐标。

ls source/relaxed.yaml source/relaxed-phonons/qpoints.yaml
cat analysis/relaxation.csv

4 实际能量和力的变化#

阶段 能量/eV·(2Si)⁻¹ 最大力分量/eV·Å⁻¹
初始扰动 −9.242522354 0.48645869
优化后 −9.252253269 5.96×10⁻⁹

能量降低约9.73092 meV/2Si。这里的力阈值gtol=1e-4是该势优化器使用的设置,结果中的最大分量明显更小;表格不是DFT误差或不同节点的性能实测。

势模型优化前后能量与力,随后明确重建声子输入

对于自己的材料,要先确认势的训练范围覆盖该晶胞和位移。优化后若原子跨过周期边界,比较周期距离和相对结构,不要仅看某个分数坐标从0附近变成1附近。

需要同时研究晶胞体积随温度变化时,看QHA状态方程与压力;需要有限温度势采样时看MLP与SSCHA。接口来源见Phonopy官方MLP说明。

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

查看配图

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

100%查看原图 ↗