VASP 专题

VASP RPA实操:四阶段输入与提交

从两原子硅的PBE自洽、空带到固定轨道精确交换与RPA,展示完整输入、文件传递与一条Slurm提交命令。

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

本篇用集群实际计算的两原子Si原胞,说明怎样准备RPA计算。顺序是PBE自洽→补充未占据态→分别计算固定轨道精确交换与RPA相关能→组合总能和画图。两个末端分支读取相同的PBE轨道,不能把其中一个分支更新过的波函数传给另一个。

这里固定原子和晶胞,常规立方晶格常数5.4689259126 Å、550 eV、EDIFF=1E−6、Gamma 3³、64条能带、ENCUTGW=150 eV和16个频率点。64条带只是演示的有限虚轨道空间,并非完整平面波空间;下面的能量不作为收敛的Si材料定值。

1. 下载后先重画参考结果#

下载Si RPA与精确交换完整实操包,在新目录解压:

python3 -m zipfile -e vasp-Si-RPA-EXX-wave305-*.zip .
cd vasp-Si-RPA-EXX-wave305
bash preview.sh
bash run.sh

这两条脚本只用1核分析已有数值,不提交VASP。preview/为快速预览,results/为重新组合的数值和CSV,plots/为重画的两张图。再做一次请使用新解压目录,以免覆盖结果。

实际Si原胞与固定轨道RPA总能的组成

2. 全部阶段共用的结构与k网格#

完整POSCAR:

Si
 1.0000000000000000
     0.0000000000000000    2.7344629562984917    2.7344629562984917
     2.7344629562984917    0.0000000000000000    2.7344629562984917
     2.7344629562984917    2.7344629562984917    0.0000000000000000
 Si 
   2
Direct
  0.0000000000000000  0.0000000000000000 -0.0000000000000000
  0.2500000000000000  0.2500000000000000  0.2500000000000000

完整KPOINTS:

Gamma mesh
0
Gamma
3 3 3
0 0 0

四个目录分别保留完整输入。准备匹配Si的合法PBE PAW POTCAR,放到资料包根目录,程序会复制到每个阶段。参考使用PAW64;更换赝势、晶胞或电子数后,应重新确定带数与收敛参数。

3. 第一阶段:PBE自洽#

inputs/si-manybody-scf/INCAR:

SYSTEM = si-manybody-scf
ENCUT = 550
PREC = Accurate
EDIFF = 1E-6
EDIFFG = -0.02
IBRION = -1
NSW = 0
ISIF = 2
ISMEAR = 0
SIGMA = 0.05
LREAL = .FALSE.
LASPH = .TRUE.
LWAVE = .TRUE.
LCHARG = .TRUE.
NELM = 150
ALGO = Normal
ISYM = 2
NBANDS = 64
LOPTICS = .TRUE.
NEDOS = 1001

LWAVE=.TRUE.为下一阶段保存轨道。EDIFFG=-0.02在这里不会触发优化,因为IBRION=-1、NSW=0是静态设置。NBANDS=64贯穿本例,换模型不能直接照搬。

4. 第二阶段:已有参考上求未占据态#

inputs/si-manybody-exact/INCAR:

SYSTEM = si-manybody-exact
ENCUT = 550
PREC = Accurate
EDIFF = 1E-6
EDIFFG = -0.02
IBRION = -1
NSW = 0
ISIF = 2
ISMEAR = 0
SIGMA = 0.05
LREAL = .FALSE.
LASPH = .TRUE.
LWAVE = .TRUE.
LCHARG = .FALSE.
NELM = 1
ALGO = Exact
ISYM = 2
NBANDS = 64
LOPTICS = .TRUE.
ISTART = 1

脚本把第一阶段的WAVECAR复制过来。ALGO=Exact、NELM=1用于已有自洽参考上的对角化;这里的单步不表示可以从任意初态只做一次普通SCF。LOPTICS=.TRUE.产生后续使用的WAVEDER。

本例只求64条带。正式RPA计算应按官方路线准备足够、必要时完整的虚轨道空间,并检查带数、k点、波函数和响应基组截断、频率积分。VASP RPA准备流程

5. 第三阶段之一:固定PBE轨道的完整精确交换总能#

inputs/si-exx-fixed-PBE/INCAR:

SYSTEM = si-exx-on-fixed-PBE
ENCUT = 550
PREC = Accurate
EDIFF = 1E-6
EDIFFG = -0.02
IBRION = -1
NSW = 0
ISIF = 2
ISMEAR = 0
SIGMA = 0.05
LREAL = .FALSE.
LASPH = .TRUE.
LWAVE = .FALSE.
LCHARG = .FALSE.
NELM = 1
ALGO = Eigenval
ISYM = 2
NBANDS = 64
LOPTICS = .FALSE.
ISTART = 1
LHFCALC = .TRUE.
AEXX = 1.0
ALDAC = 0.0
AGGAC = 0.0
ICHARG = 0

这个分支读取第二阶段的WAVECAR。ALGO=Eigenval、NELM=1只在给定轨道上评价HF能量,AEXX=1和关闭半局域关联项明确本例的精确交换设置;ICHARG=0从读取的轨道重建密度。它没有重新优化成自洽HF轨道,不能将结果标成RPA@自洽HF。

这里要保留完整HF总能,它包含动能、Hartree、离子和PAW等项;OUTCAR中单独的EXHF一行不是最终要相加的总能。VASP固定轨道精确交换步骤

6. 第三阶段之二:从相同轨道计算RPA相关能#

inputs/si-rpa/INCAR:

SYSTEM = si-rpa
ENCUT = 550
PREC = Accurate
EDIFF = 1E-6
EDIFFG = -0.02
IBRION = -1
NSW = 0
ISIF = 2
ISMEAR = 0
SIGMA = 0.05
LREAL = .FALSE.
LASPH = .TRUE.
LWAVE = .FALSE.
LCHARG = .FALSE.
NELM = 150
ALGO = ACFDT
ISYM = 2
NBANDS = 64
ENCUTGW = 150
NOMEGA = 16
ISTART = 1

这个分支复制第二阶段的WAVECAR和WAVEDER,不使用EXX阶段重新生成的轨道。ALGO=ACFDT计算相关能;ENCUTGW控制响应基组,与波函数的ENCUT是两个参数,NOMEGA控制频率积分。附件保留当前VASP版本的原始输出格式读取器,不假设GWR/RPAR或其他版本输出都相同。

7. 一条提交命令组织四个阶段#

在资料包根目录准备POTCAR,先看脚本:

ls POTCAR
cat run.slurm
sbatch run.slurm
squeue -u "$USER"

脚本申请P100分区1张卡、1个MPI进程和4 GiB内存,加载vasp/6.6.1-p100,依次完成四个阶段,并在最后加载Python环境读取与画图。参考构建为VASP6.6.1、NVHPC25.3、CUDA12.8、HPC-X2.22.1和MKL2023.2。申请GPU资源不等于每一个多体算法内核都已证明GPU加速;本篇不报告性能加速比。

work/存在时脚本停止,避免覆盖已有计算。重新算请新建目录,不要随意删除自己仍需使用的波函数。

grep 'EDIFF is reached' work/si-manybody-scf/OUTCAR | tail -n 1
tail -n 5 work/si-exx-fixed-PBE/OSZICAR
tail -n 45 work/si-rpa/OUTCAR
ls my-results my-plots

第一阶段检查电子自洽,Exact、EXX和ACFDT按各自单步/响应算法检查正常结束与专用输出,不要求它们都出现相同的普通SCF收敛语句。计算完成后怎样从数据组合总能,见RPA相关能与总能实操。

8. 换成自己的体系#

保持四阶段的结构、赝势、轨道来源、电子数和能量约定一致,先用小模型估算内存,再逐项增加虚轨道、k网格、响应截断和频率点。金属的占据修正尤其不能直接照抄本例的零值。附件不含POTCAR、WAVECAR、完整电子输出或VASP程序,前置文件由自己的合法计算生成。

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

查看配图

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

100%查看原图 ↗