1. 课程导入与VASP计算工程概览
VASP(Vienna Ab initio Simulation Package)是凝聚态物理、材料科学与化学领域使用最广泛的第一性原理计算程序之一。它基于密度泛函理论(DFT),通过平面波基组与赝势方法求解Kohn-Sham方程,能够在原子尺度上给出体系的总能、电子结构、力学性质、光学性质与动力学行为。对于晶体结构建模与计算而言,VASP的定位可以概括为:它是把"晶体结构模型"翻译成"可计算的物理量"的核心引擎。你给出的是一组晶格矢量与原子坐标,VASP返回的是能量、力、应力、能带、态密度等物理结果。
理解VASP,首先要理解它的输入输出文件体系。VASP不像图形界面软件那样"点一下就跑",它的工作方式是:在Linux终端中,于一个计算目录下准备好四个核心输入文件,然后执行可执行程序,程序读取输入、写出输出。这四个输入文件是:
- INCAR:控制计算类型与数值参数,如ENCUT(平面波截断能)、ISMEAR/SIGMA(展宽方法)、EDIFF(电子步收敛判据)、IBRION/NSW(离子步与结构优化)、ISIF(是否优化晶胞)等。
- POSCAR:描述晶体结构,包含晶格常数、晶格矢量、原子种类、原子数量与分数坐标。
- POTCAR:赝势文件,需与POSCAR中的原子种类顺序严格一致,通常由赝势库拼接生成。
- KPOINTS:倒空间采样点设置,常见为Monkhorst-Pack网格或Gamma-centered网格。
输出方面,OUTCAR记录最完整的计算过程与结果,包括能量、力、应力、收敛信息、内存与时间统计;OSZICAR给出每步电子/离子迭代的能量摘要,是判断收敛最直观的文件;CONTCAR是优化后的结构,可直接作为下一步计算的POSCAR;CHGCAR、WAVECAR、DOSCAR、EIGENVAL等则分别承载电荷密度、波函数、态密度与本征值信息。掌握"哪个文件回答哪个问题",是VASP工程能力的第一层。
在Linux环境与并行计算方面,VASP通常以MPI并行方式运行。一个典型提交命令形如:
mpirun -np 32 vasp_std > vasp.log 2>&1
其中-np 32表示使用32个MPI进程。并行效率并非随核数线性增长,K点并行与能带并行各有适用场景:K点较多时优先K点并行,体系较大、平面波数量多时优先能带/Rank并行。实际工程中常用NCORE、KPAR两个INCAR参数调节并行策略。例如KPAR=4表示将K点分成4组并行处理,NCORE=4表示每个K点组内再按4核协同。合理设置可显著缩短墙钟时间,设置不当反而增加通信开销。
学习路径上,建议按"结构—能量—性质"三层推进。第一层是结构建模与验证:能正确写出POSCAR,理解晶格常数单位(Å或缩放因子)、分数坐标与笛卡尔坐标的切换、选择性动力学(Selective dynamics)标记。第二层是能量与结构优化:掌握ENCUT收敛测试、K点收敛测试、ISIF=3晶胞优化与ISIF=2固定晶胞优化、以及如何从CONTCAR判断优化是否合理。第三层是性质计算:静态自洽、非自洽能带、态密度、电荷密度差分等。每一层都建立在前一层收敛可信的基础上。
以一个教学示例说明:假设对立方相Si(金刚石结构,a=5.43 Å)做结构优化。POSCAR中晶格矢量可写为缩放因子1.0,三行晶格矢量分别为(0, 2.715, 2.715)、(2.715, 0, 2.715)、(2.715, 2.715, 0),原子分数坐标为(0,0,0)与(0.25,0.25,0.25)。INCAR中设置ENCUT=400、EDIFF=1E-5、EDIFFG=-0.01、IBRION=2、ISIF=3、NSW=50。KPOINTS采用Gamma-centered 8×8×8网格。运行后观察OSZICAR能量逐步下降并趋于稳定,OUTCAR末尾显示"reached required accuracy",CONTCAR中晶格常数与实验值接近,即认为优化合理。这些参数属于教学示例,实际体系需自行做收敛性测试。
本课程后续将围绕这条工程主线展开:从POSCAR建模、INCAR参数体系、KPOINTS与POTCAR准备,到结构优化、静态计算、能带与态密度分析,再到常见报错排查与结果判读。你需要建立的不是"记住几个参数",而是"知道每个文件回答什么问题、每个参数影响什么物理量、每个结果如何判断是否可信"的工程思维。当你能独立完成一个从建模到性质分析的完整闭环,并清楚每一步的收敛依据与误差来源时,才算真正掌握了VASP计算工程。