vasptool专题

vasptool极化与压电实操

GaN三点应变实例:原子固定与内部弛豫、最终静态Berry极化及分支处理。

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

下载本篇完整输入、实际输出和绘图脚本。解压后执行 bash run.sh,可先从实际输出重建结果和四张图,不会启动VASP。

1 先分清两种响应#

压电计算研究应变引起的极化变化。本例对四原子纤锌矿GaN施加x方向的−1%、0、+1%应变,观察z方向极化,演示proper压电响应e31。

  • 固定分数坐标:晶胞形变,原子随晶胞仿射移动,不允许额外内部位移。
  • 内部弛豫:每个应变下固定晶胞,优化原子位置,然后在最终结构上重新静态计算极化,包含内部位移贡献。

两者使用同一个已优化原子位置的参考晶胞。这里没有进行晶胞优化,晶格常数a=3.19Å、c=5.189Å;参考体积45.729417ų。优化力阈值0.02eV/Å,电子收敛1E-6。数字用于学习流程,不能当作已收敛GaN材料常数。

2 查看参考结构与静态设置#

module load vasptool/1.5.2
cat inputs/piezo-gan/POSCAR
cat inputs/piezo-gan/INCAR

Ga和N按下面顺序排列,POTCAR也必须为Ga_d、N:

Ga N                                    
   1.00000000000000     
     3.1899999999999999    0.0000000000000000    0.0000000000000000
    -1.5950000000000000    2.7626210380723593    0.0000000000000000
     0.0000000000000000    0.0000000000000000    5.1890000000000001
   Ga   N 
     2     2
Direct
0.0000000000000000    0.0000000000000000    0.0000000000000000
     0.3333333333333357    0.6666666666666643    0.5000000000000000
     0.3333333333333357    0.6666666666666643    0.1229999999999976
     0.0000000000000000    0.0000000000000000    0.6229999999999976

静态INCAR:

SYSTEM = piezo-gan
ENCUT = 500
EDIFF = 1E-6
PREC = Accurate
ISMEAR = 0
SIGMA = 0.05
ISPIN = 1
NSW = 0
IBRION = -1
LREAL = .FALSE.
LWAVE = .FALSE.
LCHARG = .FALSE.
ISIF = 2
EDIFFG = -0.02
LCALCPOL = .TRUE.
ISYM = 0

LCALCPOL=.TRUE.计算Berry相位极化,ISYM=0在这组形变计算中关闭对称性。KPOINTS使用与参考相同的5×5×5 Gamma网格。极化分支分析针对绝缘体;换材料后应先确认各个应变点仍保持绝缘,不把金属体系的输出套入本流程。

GaN参考结构与固定分数坐标的极化变化

3 先生成应变结构#

GaN的INPUT.in与前文单轴Si示例相同:

1
3D
3
-0.01 0.00 0.01
1 0 0 0 0 0

在解压根目录执行:

python3 prepare_native.py
ls prepared/piezo-gan
ls prepared/piezo-gan-relaxed

脚本调用的原生功能是:

vasptool --feature piezo-polarization

它生成对应的三个应变结构,不会替代VASP计算。piezo-gan使用静态INCAR;piezo-gan-relaxed使用以下优化设置:

NSW = 60
IBRION = 2
ISIF = 2
EDIFFG = -0.02

ISIF=2固定当前应变晶胞,只优化原子。若让程序自由改变晶胞,会改变原先指定的应变条件。

4 内部弛豫必须有最终静态步骤#

提交包内模板前先检查账户资源和队列:

cat submit-cpu.slurm
sbatch submit-cpu.slurm
squeue -u "$USER"

模板对内部弛豫系列自动执行:优化 → 保存optimization目录 → 复制CONTCAR为POSCAR → 改为NSW=0、IBRION=-1 → 最终Berry静态计算。关键文件操作是:

mkdir optimization
cp POSCAR INCAR CONTCAR OUTCAR OSZICAR optimization/
cp CONTCAR POSCAR

随后恢复静态INCAR并用正式作业模板运行VASP。不要仅从结构优化OUTCAR里出现的偶极值就判断它对应最终结构。本流程明确用最终静态OUTCAR提取极化,也检查最终力和电子收敛。

新材料先优化参考结构的原子位置,再生成应变系列;可参考 inputs/gan-reference-relax/INCAR。本包参考结构已经完成这一步,不能把它当作其他材料的通用优化结果。

5 提取偶极、统一分支并画图#

全部结束后:

bash analyze_results.sh
cat prepared/piezo-gan/polarization-independent.csv
cat prepared/piezo-gan-relaxed/polarization-independent.csv

脚本先把INPUT.in第一行临时改为2,调用原生piezo-polarization,提取两个表:

DIPOLE_MOMENTS_ELETRONIC.dat
DIPOLE_MOMENTS_IONIC.dat

其中ELETRONIC是当前程序的实际文件名。然后从原始OUTCAR分别读取 p[elc] 和 p[ion],只进行一次eÅ到C/m²的换算。本机441摘要对这组数据出现重复换算,附件不直接采用该摘要斜率。

原子越过周期边界时,同一个物理结构可能改变原始离子偶极的晶格分支。本包按参考结构的最近周期像和OUTCAR记录的Ga13/N5价电荷检查离子位移,确认原始值与连续值相差整数晶格量子;原始数据保留在JSON中,不覆盖OUTCAR。电子Berry分支也必须在小应变序列中保持连续,不能用任意跳变拟合。

对于形变矩阵F,本例使用连续约化偶极 F⁻¹p/V₀ 的应变导数获得proper响应,避免直接对变化晶胞中的P=p/V求导引入几何项。这里用的是小正应变,不包含剪切系数的工程应变约定;不能直接复制为所有张量分量的通用脚本。方法见Vanderbilt关于proper压电响应的说明。

6 本例得到什么#

流程 电子贡献/C·m⁻² 离子贡献/C·m⁻² 总e31/C·m⁻²
固定分数坐标 −0.424987 约0 −0.424987
每点内部弛豫后最终静态 −0.827376 +1.290201 +0.462826

GaN内部弛豫前后及电子、离子贡献的实际对照

这里的正负号对应本包的晶胞取向与极性方向,和其他资料比较前必须统一坐标、极性与proper定义。内部弛豫后,离子项改变了总响应;只取电子项会得到另一种量。

两组非零应变最终静态最大力分别为0.007459和0.016999eV/Å,均在本例0.02阈值内。三个点、1%应变以及这个力阈值只用于操作教学;精确压电常数需要更紧的力、更多小应变点,以及k网格和截断能收敛。拟合应查看残差,不能因程序输出一个数就认为材料常数可靠。

最后得到 GAN-VALIDATION.json、GAN-RELAXED-VALIDATION.json、两份CSV和两张GaN图;JSON同时保留原始偶极、连续偶极、晶格分支修正、最终力和拟合结果。

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

查看配图

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

100%查看原图 ↗