Phono3py 位移与DFT输入
用实际Si16例子生成三阶位移,明确结构、超胞、38个有效位移与DFT输入的对应关系。
阅读本篇目录
三阶力常数通常需要单原子和成对位移。先确定同一套结构、超胞和原子顺序,再对每个需要的位移结构求力;不要将另一种超胞的力输出直接拼入当前数据集。
下载完整实例包,解压到自己的工作目录。包内含真实输入、已有力输出、28个计算条件、工具命令、结果CSV和绘图脚本。
1. 准备原胞#
本例 POSCAR 是Phono3py可以读取的通用结构文件;名字沿用VASP格式,实际力计算使用ABACUS,不表示运行过VASP。
Si
1.0000000000000000
0.0000000000000000 2.7149999999999999 2.7149999999999999
2.7149999999999999 0.0000000000000000 2.7149999999999999
2.7149999999999999 2.7149999999999999 0.0000000000000000
Si
2
Direct
0.0000000000000000 0.0000000000000000 -0.0000000000000000
0.2500000000000000 0.2500000000000000 0.2500000000000000
对应的 setup.conf:
CELL_FILENAME = POSCAR
DIM = 2 2 2
PRIMITIVE_AXES = 1 0 0 0 1 0 0 0 1
DISPLACEMENT_DISTANCE = 0.03
CUTOFF_PAIR_DISTANCE = 3.0
PM = .TRUE.
DIM以原胞为单位生成2×2×2超胞;本例不是2×2×2常规晶胞。DISPLACEMENT_DISTANCE单位Å。PM包括正负位移。CUTOFF_PAIR_DISTANCE减少相距较远的成对位移结构,模型拟合时仍需给出一致的三阶截断。
2. 生成位移#
在实例包中:
bash prepare.sh
ls generated/POSCAR-*
这个脚本也会读取包内真实力并建立 model/。只想单独生成位移,可以在自己的新目录放入 POSCAR 和 setup.conf,运行:
module load phono3py/4.8.2
phono3py-init -d setup.conf
保留 phono3py_disp.yaml。本例实际生成38个需要计算的位移结构;内部位移数据集有114个槽位,其中76个因成对位移距离截断而不需要计算。114不是需要提交的DFT任务数。平衡结构另算1个,因此本例力数据共有39个DFT条件。

3. 对每个位移结构求力#
包内 DFT-inputs/ 保存实际39组ABACUS输入,PP_ORB/保存对应Si赝势/轨道文件,DFT-logs/保存真实力日志。每组 STRU 的原子顺序必须对应当前位移结构;不要独立优化这些位移结构,否则位移关系就改变了。
实际ABACUS INPUT:
INPUT_PARAMETERS
suffix tutorial
pseudo_dir ../../PP_ORB
orbital_dir ../../PP_ORB
ntype 1
calculation scf
basis_type lcao
ks_solver elpa
device gpu
precision double
nbands 48
ecutwfc 80
dft_functional pbe
nspin 1
smearing_method fixed
symmetry -1
scf_thr 1e-8
scf_nmax 100
mixing_type pulay
mixing_beta 0.4
cal_force 1
cal_stress 0
out_chg 0
实际 KPT:
K_POINTS
0
Gamma
2 2 2 0 0 0
关键是 calculation scf 和 cal_force 1:固定结构求力。symmetry -1不让不同位移条件受到不一致的对称处理。此处 scf_thr 1e-8、ecutwfc 80、48条带和2×2×2电子网格是本例参数,不是所有体系通用的精度要求。Phono3py后面的q网格与这里电子k网格是两件事。
用户换体系时,先用已安装的DFT程序完成平衡结构,再生成位移输入,保持赝势、基组、电子网格和SCF设置一致。ABACUS模块与提交方式见ABACUS专题;本包默认只重用现有日志,不自动提交39个电子结构计算。
4. 传递到下一步#
ls generated/phono3py_disp.yaml
ls DFT-logs/*.log | wc -l
第二条在本例输出39。下一步按 DISPLACEMENT-MAP.json 的对应关系收集力,见力收集与力常数。不能只按任意文件名排序后假定顺序相同。