ABACUS 专题

ABACUS二维体系原子与面内晶胞优化

MoS2单层分别优化原子和面内晶胞,保持真空方向固定并核对力、应力与最终结构。

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

下载完整输入、实际结果、赝势与五张高清图。解压后在已分配P100资源中执行 bash run.sh,也可用 sbatch submit.slurm提交一张GPU。新结果在 work/cases,表格在 work/analysis,结构在 work/converted,图片在 work/figures。

1 先选清楚要优化什么#

二维体系有两种常见任务:

  • 只优化原子位置:保持面内晶格与真空盒不变,用 calculation relax。
  • 同时优化原子和面内晶胞:用 calculation cell-relax并设置 fixed_axes c,保留真空方向的c晶格矢量。

本例使用MoS₂单层原胞,3个原子,c=23.13Å。原始层厚3.13Å,两侧总真空间隔20Å。固定原子优化从a=3.18Å开始;面内晶胞优化从压缩的a=3.10Å开始。

实际优化后的MoS2单层和真空盒

图中的3×3重复仅用于看清结构,实际DFT输入仍为3原子原胞。

2 准备三个文件与赝势#

module load abacus/3.10.1-p100
cat inputs/mos2-relax/INPUT
cat inputs/mos2-relax/STRU
cat inputs/mos2-relax/KPT

程序为ABACUS3.10.1 P100版,GNU13.3、HPC-X2.50、CUDA12.8。平面波基组不需要LCAO数值轨道,但仍需要Mo/S赝势。

只优化原子的完整INPUT:

INPUT_PARAMETERS
suffix tutorial
calculation relax
basis_type pw
ecutwfc 60
scf_thr 1e-8
scf_nmax 150
ks_solver cg
device gpu
precision double
cal_force 1
cal_stress 1
pseudo_dir ../PP
symmetry 0
smearing_method fixed
mixing_beta 0.3
relax_nmax 80
force_thr_ev 0.02
relax_method cg
out_stru 1
展开原子优化起点STRU与KPT
ATOMIC_SPECIES
Mo 95.95 Mo_ONCV_PBE-1.0.upf
S 32.06 S_ONCV_PBE-1.0.upf

LATTICE_CONSTANT
1.8897261246257702

LATTICE_VECTORS
3.180000000000 0.000000000000 0.000000000000
-1.590000000000 2.753960784035 0.000000000000
0.000000000000 -0.000000000000 23.130000000000

ATOMIC_POSITIONS
Direct
Mo
0.0
1
0.000000000000 0.000000000000 0.500000000000 1 1 1
S
0.0
2
0.666666666667 0.333333333333 0.567661046260 1 1 1
0.666666666667 0.333333333333 0.432338953740 1 1 1
K_POINTS
0
Gamma
3 3 1 0 0 0

cal_force 1输出力;cal_stress 1输出应力,但单纯输出应力不会自动优化晶胞。是否改变晶胞由 calculation和约束设置决定。

3 允许面内变化,固定c方向#

完整晶胞优化INPUT如下:

INPUT_PARAMETERS
suffix tutorial
calculation cell-relax
basis_type pw
ecutwfc 60
scf_thr 1e-8
scf_nmax 150
ks_solver cg
device gpu
precision double
cal_force 1
cal_stress 1
pseudo_dir ../PP
symmetry 0
smearing_method fixed
mixing_beta 0.3
fixed_axes c
stress_thr 1
relax_nmax 80
force_thr_ev 0.02
relax_method cg
out_stru 1

它使用 fixed_axes c固定c矢量,a、b和原子位置可以优化。不是把所有原子的z坐标固定,也不是把水平方向的原子移动全部锁住。STRU中的移动标志仍决定各原子哪些方向可动。

cat inputs/mos2-cell/STRU
sbatch submit.slurm

本例用60Ry、3×3×1、电子密度残差1E−8、力0.02eV/Å、应力1kbar。它们用于实操参考,实际性质计算仍应检查基组、k点和真空间隔收敛。

4 运行后分开检查力与应力#

grep 'charge density convergence is achieved' work/cases/mos2-cell/OUT.tutorial/running_cell-relax.log
grep 'Largest gradient' work/cases/mos2-cell/OUT.tutorial/running_cell-relax.log
grep 'Relaxation is converged' work/cases/mos2-cell/OUT.tutorial/running_cell-relax.log
grep 'FINAL_ETOT' work/cases/mos2-cell/OUT.tutorial/running_cell-relax.log
cat work/cases/mos2-cell/OUT.tutorial/STRU_ION_D

running_relax.log对应原子优化;running_cell-relax.log对应晶胞优化,不要只按一个固定文件名寻找结果。

工作流 最终面内a/Å c/Å 最终最大力分量/eV·Å⁻¹
只优化原子 3.180000 23.130000 0.009199
原子+面内晶胞 3.193171 23.130000 0.005049

晶胞优化最终最大应力分量约0.378758kbar,达到本例1kbar设置。二维体系输出的三维应力包含真空盒体积影响;不能把含真空盒的kbar数值不换算就当作二维面应力。

实际原子/晶胞优化能量轨迹与面内晶格

两条曲线初始晶格不同,分别减去各自最终能量,不能把曲线高度当成同一个起点的优化效率比较。

5 取出最终结构并画图#

module load ase/3.29.0
ase convert work/cases/mos2-cell/OUT.tutorial/STRU_NOW.cif mos2-final.extxyz
python -B work/convert_structures.py
python -B work/analyze.py
python -B work/plot_results.py

原子优化后a、b、c均保持原值;面内晶胞优化后a、b改变、c保持原值。自己换材料时,应实际读取最终晶格矢量确认约束生效,不能只看到 fixed_axes c就省略结果检查。

较厚薄层、表面吸附和带电体系还需考虑偶极、电荷、真空及边界处理;本例为中性、镜面对称的单层MoS₂。

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

查看配图

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

100%查看原图 ↗