ALAMODE专题

ALAMODE 准谐结构优化:ZnO 晶胞与原子位置

用官方 ZnO 力常数实际运行 QHA,按终端步骤优化有限温度晶胞与内部原子位置,提取晶格参数、体积、位移和自由能。

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

QHA 可以回答一个常见问题:温度改变以后,晶胞的尺寸与形状、晶胞内部的原子位置怎样变化?这与固定晶胞的声子热力学不同,也与自洽声子计算的频率重整化不同。本例使用 ZnO,实际同时优化晶胞与原子位置。

先看流程#

下载资料并解压 → 准备完整力常数和应变耦合 → 修改温度及优化方式 → 运行 ANPHON → 检查每个温度的结构收敛 → 提取晶格、体积、原子位移 → 画图。

本例使用 ALAMODE 官方 ZnO 示例中的 DFT 力常数及配套弹性/应变数据;在鸢算科技集群实际重新运行 QHA。本次没有重新做 ZnO 的 DFT。谐波力常数来自 4×4×2 超胞,高阶力常数来自 3×3×2 超胞,原胞包含四个原子。

资料包:ZnO QHA 输入与绘图脚本。解压后进入目录:

unzip alamode-qha-wave191.zip -d zno-qha
cd zno-qha
module load alamode/1.5.0
python prepare.py

prepare.py 会解压官方 XML,建立三种方案的独立目录。完整计算和画图也可在已申请的 CPU 计算资源中直接运行:

bash run.sh

这里采用 ALAMODE 1.5.0,oneAPI 2024.2 编译器、Intel MPI 与 MKL 顺序数学库。正式计算应将命令放入本站 ALAMODE CPU 作业模板,经 Slurm 提交;本例单独限制为一个线程,便于快速操作演示。

1. 先检查需要哪些文件#

ls data/*.xml
ls data/strain_IFC

需要谐波和高阶力常数,以及二/三阶弹性常数、应变引起的力、应变下的谐波力常数。strain_IFC/ 不是可有可无的附属文件;换自己的材料时,不能只改 KD = Zn O 就直接使用本例的 XML 和耦合数据。

文件 在流程中做什么
ZnO442_harmonic.xml 参考结构的谐波力常数
ZnO332_500K_cutoff1208_nbody233.xml 高阶力常数,用于结构变化后的势能和力常数重整
strain_IFC/elastic_constants.in 二阶、三阶弹性常数的配套输入
strain_IFC/strain_force.in 应变与原子力的耦合
strain_IFC/strain_harmonic.in 和六个应变 XML 应变与谐波力常数的耦合

elastic_constants.in 使用上游约定的 Ry 单位及晶胞体积因子;不要直接把以 GPa 输出的弹性矩阵原样填入。应变 XML、参考晶胞、原子顺序和力常数必须属于同一套数据。

2. 输入文件里改什么#

cd cases/scheme-0
cat input.in

本例实际输入如下:

&general
  PREFIX = ZnO_qha
  MODE = QHA
  EMIN = 0
  EMAX = 700
  DELTA_E = 0.5
  NKD = 2
  FCSXML = ZnO332_500K_cutoff1208_nbody233.xml
  FC2XML = ZnO442_harmonic.xml
  KD = Zn O

  TMIN = 0
  TMAX = 600
  DT = 300
/

&qha
  KMESH_INTERPOLATE = 4 4 2
  KMESH_QHA = 4 4 2

  RELAX_STR = 2
  QHA_SCHEME = 0
/ 
&relax
  RELAX_ALGO = 2
  MAX_STR_ITER = 1000
  COORD_CONV_TOL = 1.0e-5
  MIXBETA_COORD = 0.5
  CELL_CONV_TOL = 1.0e-5
  MIXBETA_CELL = 0.7

  SET_INIT_STR = 2
  ADD_HESS_DIAG = 0.0

  RENORM_3TO2ND = 2
  RENORM_2TO1ST = 2
  RENORM_34TO1ST = 0

  STRAIN_IFC_DIR = strain_IFC
/

&cell
  1.88972612462577
  3.235859326375770 0.000000000000000 0.000000000000000
  -1.617929663187880 2.802336379714220 0.000000000000000
  0.000000000000000 0.000000000000000 5.224712025937350
/

&displace
1
0.0 0.0 0.0
0.0 0.0 0.0
0.0 0.0 0.0
0.0 0.0 0.0
/

&strain
0.0 0.0 0.0
0.0 0.0 0.0
0.0 0.0 0.0
/

&kpoint
  2 
  8 8 8
/

MODE = QHA 选择准谐结构优化;RELAX_STR = 2 同时优化内部原子位置与晶胞,RELAX_STR = 1 只优化内部坐标、固定晶胞。QHA 不使用 RELAX_STR = 0 来代替普通固定结构声子计算。

KMESH_QHA 是结构优化用的声子网格,KMESH_INTERPOLATE 是插值网格,每个方向前者应为后者的整数倍。这里都用 4×4×2,&kpoint 中的 8×8×8 用于后处理;三者作用不同。它们是教学参数,正式材料计算要检查网格收敛。

TMIN = 0、TMAX = 600、DT = 300 给出 0、300、600 K。结构优化同时检查 COORD_CONV_TOL 与 CELL_CONV_TOL;其中原子位移更新量使用 Bohr,晶胞更新量是无量纲应变。它们不是 VASP 的电子或原子力收敛阈值。

DELTA_E = 0.5 是输出态密度的频率采样间隔,单位 cm⁻¹。它不改变温度步长,也不是能量截断。输入里还给出 0–700 cm⁻¹;1.5.0 的该后处理流程会按频率自动更新输出范围,读图时以实际文件第一列为准。

3. 运行并检查每个温度#

在作业申请到的 CPU 资源中运行:

anphon input.in > anphon.log
grep 'Structural optimization converged' anphon.log
tail -20 anphon.log

三个温度应各有一条结构优化收敛信息,再检查 .umn_tensor、.atom_disp 与 .qha_thermo 是否包含三个温度。只看退出码、只看到最后一行 Job finished,不足以判断所有温度都已优化好。

4. 提取晶格、体积与内部位移#

cat ZnO_qha.umn_tensor
cat ZnO_qha.atom_disp
cat ZnO_qha.qha_thermo
cd ../..
/public/toolkit/miniconda3/envs/ase-3.29.0/bin/python analyze.py

最后一条命令在三种方案都算完后执行;一键 run.sh 会顺序完成这些步骤。提取表为 analysis/qha-summary.csv,三张图片在 figures/。

.umn_tensor 第一列为温度,后九列依次是 3×3 位移梯度张量。以输入参考晶胞为 (A_{ref}),晶格矩阵按 (A(T)=A_{ref}(I+u)^T) 计算,体积为 (V(T)=V_{ref}\det(I+u))。本例 u_xx ≈ u_yy,说明六方基面方向保持等价。

特别注意:输出应变相对于输入的参考结构,不是自动相对于 0 K。要看热变化,需计算 a(T)/a(0 K)-1 或 V(T)/V(0 K)-1。0 K 仍有零点振动贡献,不能强行把文件里 0 K 的应变改成零。

.atom_disp 中位移为 Bohr,乘 0.529177210903 转为 Å。它与晶胞应变是两组不同结果:晶胞增大并不意味着内部原子分数坐标完全不变。

本次 Full QHA 的实际结果:

温度 / K a / Å c / Å 体积 / ų 相对 0 K 体积变化
0 3.244061 5.234200 47.704468 0.0000%
300 3.245254 5.234873 47.745693 0.0864%
600 3.251127 5.240214 47.967533 0.5514%

ZnO 三种 QHA 方法的晶格应变与体积变化

ZnO 内部原子位移与声子热容

5. 自由能和热容怎样读#

.qha_thermo 给出温度、声子热容 Cv、振动自由能、重整静态势能 Phi0 和总自由能。这里的声子 Cv 对应每个温度下的优化结构,单位为每四原子原胞的 kB;它不是自动求得的定压热容 Cp。总自由能包含 Fvib + Phi0,也不能只拿 Fvib 一列比较结构的总稳定性。

ZnO QHA 声子态密度与相对自由能

本例只有三个温度点,适合学会运行、读表和画图。要计算热膨胀系数,应采用更密的温度点、更严格的结构阈值,并检查声子网格;不能用这三个点直接宣称得到了收敛的热膨胀曲线。

更多方法对照见QHA、ZSISA 与 v-ZSISA。数据来源与方法说明见 ALAMODE 官方 ZnO 教程。

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

查看配图

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

100%查看原图 ↗