thirdorder 位移结构与VASP求力
实际生成Si16和Si54位移,贴出结构、电子设置和提交步骤,区分位移与结构优化。
阅读本篇目录
计算三阶力常数时,先固定参考晶胞,再生成微小位移,最后对每个固定构型求力。位移结构不能再做离子优化,否则会把用于有限差分的位移消掉。
下载完整Si实例包。在新目录解压后操作;包内有真实VASP输入和原始力输出、位移映射、三阶/二阶力常数、ShengBTE结果、CSV和高清图,不含POTCAR。
1. 参考Si原胞#
本例固定立方晶格常数5.43 Å,使用两原子FCC原胞。它是用于比较参数的统一参考结构,不把这次静态求力称为结构优化。
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
2. 生成三组位移#
bash prepare.sh
ls workflow/sow/si16-c0p30nm
脚本分别执行:
thirdorder_vasp.py sow 2 2 2 0.3
thirdorder_vasp.py sow 2 2 2 0.4
thirdorder_vasp.py sow 3 3 3 0.4
每一条在独立目录运行。后三个整数是沿原胞基矢的超胞重复数,最后的正数单位为 nm:0.3 nm=3 Å,0.4 nm=4 Å。
| 设置 | 超胞原子数 | 原生位移文件数 |
|---|---|---|
| 2×2×2,3 Å | 16 | 8 |
| 2×2×2,4 Å | 16 | 52 |
| 3×3×3,4 Å | 54 | 52 |
3RD.SPOSCAR是未位移超胞;3RD.POSCAR.01等是求力结构。程序中的基本位移为0.01 Å;两个基本位移作用到同一原子分量时,实际坐标变化可能相加到0.02 Å或相互抵消,不能假定每个输出结构都只有一个原子移动0.01 Å。
第一份真实Si16位移POSCAR
97337518ba6daccac9b19eec841c8d72999c243f
1.0
0.000000000000000 5.430000000000001 5.430000000000001
5.430000000000001 0.000000000000000 5.430000000000001
5.430000000000001 5.430000000000001 0.000000000000000
Si
16
Direct
0.000000000000000 -0.001841620626151 0.001841620626151
0.500000000000000 0.000000000000000 0.000000000000000
0.000000000000000 0.500000000000000 0.000000000000000
0.500000000000000 0.500000000000000 0.000000000000000
0.000000000000000 0.000000000000000 0.500000000000000
0.500000000000000 0.000000000000000 0.500000000000000
0.000000000000000 0.500000000000000 0.500000000000000
0.500000000000000 0.500000000000000 0.500000000000000
0.125000000000000 0.125000000000000 0.125000000000000
0.625000000000000 0.125000000000000 0.125000000000000
0.125000000000000 0.625000000000000 0.125000000000000
0.625000000000000 0.625000000000000 0.125000000000000
0.125000000000000 0.125000000000000 0.625000000000000
0.625000000000000 0.125000000000000 0.625000000000000
0.125000000000000 0.625000000000000 0.625000000000000
0.625000000000000 0.625000000000000 0.625000000000000
3. 固定构型计算设置#
Si16的完整INCAR:
SYSTEM = Si thirdorder and Phonopy fixed-structure reference
ENCUT = 450
PREC = Accurate
EDIFF = 1E-6
NELM = 120
ALGO = Normal
ISMEAR = 0
SIGMA = 0.05
IBRION = -1
NSW = 0
ISYM = 0
LREAL = .FALSE.
LASPH = .TRUE.
ADDGRID = .TRUE.
LWAVE = .FALSE.
LCHARG = .FALSE.
NBANDS = 48
KPOINTS:
Gamma
0
Gamma
3 3 3
0 0 0
关键是 NSW=0、IBRION=-1、ISYM=0以及足够稳定的电子收敛。Si54使用2×2×2电子k网格与128条带;Si16为3×3×3与48条带。两者按“超胞重复数×电子k网格数=6”保持相近的原胞采样密度。
4. 自己提交一份求力任务#
例如准备第一份Si16位移:
mkdir -p my-dft/001
cp workflow/sow/si16-c0p30nm/3RD.POSCAR.01 my-dft/001/POSCAR
cp electronic-settings/Si16/INCAR my-dft/001/
cp electronic-settings/Si16/KPOINTS my-dft/001/
cp vasp-single.slurm my-dft/001/run.sh
cd my-dft/001
在该目录放入与Si元素和泛函相符、具备使用授权的POTCAR,核对自己的分区和账户后:
ls POSCAR INCAR KPOINTS POTCAR
sbatch run.sh
squeue -u "$USER"
模板采用1个MPI进程、1张P100和1个CPU线程,保留Slurm设置的GPU选择。将同样的电子设置用于这一组所有位移。
5. 看计算是否可以用于求导#
tail OSZICAR
grep 'EDIFF is reached' OUTCAR
grep 'General timing and accounting' OUTCAR
既要正常结束,也要电子收敛;还要核对XML中的最终原子顺序和坐标与该位移输入一致。vasprun.xml用于reap,OUTCAR便于查看电子迭代和原子力。后续步骤见力收集。