VASP 6.4.0 从编译到实战:材料计算新手避坑指南
1. 从“安装”到“计算”一个VASP初学者的真实心路第一次接触VASP是在导师的催促下手忙脚乱地准备开始我的第一个材料计算课题。当时的感觉就像拿到了一台没有说明书、全是外文按键的精密仪器既兴奋又茫然。网上资料浩如烟海但要么过于简略要么假设你已经是个老手。我踩过的坑从软件安装的依赖冲突到结构优化时体系直接“飞”掉再到后处理数据时的一头雾水几乎涵盖了新手能遇到的所有典型问题。这篇笔记就是把我这段从零开始的VASP学习历程结合最新的vasp 6.4.0版本和vtst工具链的实践系统地梳理出来。它不追求面面俱到的理论深度而是聚焦于“如何让计算跑起来并得到正确结果”这一核心目标分享那些教程里不会细说、但实际工作中至关重要的步骤、参数和避坑经验。无论你是刚开始接触计算材料学的硕士生还是需要快速上手VASP的科研人员希望这份带着“泥土气息”的实战笔记能帮你少走弯路。2. 环境部署与软件安装构建稳定的计算基石万事开头难一个稳定、高效的VASP运行环境是后续所有工作的基础。很多人低估了这一步的复杂性直接使用他人编译好的二进制包往往会在后续遇到奇怪的兼容性问题或性能瓶颈。我的建议是只要条件允许尽量自己从源码编译。这不仅能让你更了解软件的依赖还能针对特定的硬件尤其是CPU指令集进行优化获得最佳性能。2.1 系统环境与依赖库准备VASP的编译依赖几个关键的数学库和并行环境。对于vasp 6.4.0其依赖关系比早期版本更为严格。核心依赖清单编译器Intel oneAPI 或 GNU GCC套件。Intel编译器在Intel CPU上通常有更好的优化但GNU套件更通用。我两者都尝试过对于新手如果系统是Ubuntu或CentOS使用系统自带的GCC建议gcc/g/gfortran版本 9.0会更简单。MPI库用于并行计算。OpenMPI和Intel MPI是主流选择。个人更推荐OpenMPI社区活跃文档丰富兼容性好。务必确保MPI库与编译器是配套编译的例如用GCC编译的OpenMPI。数学库BLAS, LAPACK: 基础线性代数运算。可以使用OpenBLAS开源性能优秀或Intel MKL商业性能极致且包含FFTW。FFTW或MKL中的FFT: 快速傅里叶变换。如果用了Intel MKL就直接用其内置的FFT无需单独安装FFTW。ScaLAPACK: 并行版的LAPACK用于多节点并行。通常随MKL或通过libscalapack-openmpi等包安装。一个基于Ubuntu 22.04 LTS的快速依赖安装命令示例如下sudo apt update sudo apt install -y gcc g gfortran make cmake openmpi-bin libopenmpi-dev libopenblas-dev libscalapack-openmpi-dev libfftw3-dev libfftw3-mpi-dev注意使用apt安装的数学库是通用版本性能尚可。但对于大规模计算手动编译OpenBLAS并针对特定CPU架构优化如设置TARGETHASWELL能带来显著性能提升。这是一条值得投入的优化路径。2.2 VASP 6.4.0 源码编译实战假设我们已经将VASP 6.4.0的源码包vasp.6.4.0.tar.gz解压到/opt/vasp.6.4.0目录。编译的关键在于正确配置makefile.include文件。VASP提供了多个模板我们需要选择一个最接近自己环境的进行修改。步骤一选择并配置编译模板cd /opt/vasp.6.4.0 cp arch/makefile.include.linux_gnu makefile.include # 使用GNU编译器模板接下来是编辑makefile.include的核心部分。以下是一个基于GCC OpenMPI OpenBLAS FFTW的配置片段示例# 预编译选项非常重要 CPP_OPTIONS -DHOST\LinuxGNU\ \ -DMPI -DMPI_BLOCK8000 \ -Duse_collective \ -DscaLAPACK \ -DCACHE_SIZE4000 \ -Davoidalloc \ -Duse_bse_te \ -Dtbdyn \ -Dfock_dblbuf # 编译器设置 FC mpif90 -fopenmp FCL mpif90 -fopenmp # 编译和链接优化选项 FFLAGS -O2 -marchnative -ffree-line-length-0 OFLAG -O2 -marchnative OFLAG_IN $(OFLAG) # 数学库链接设置 (根据实际路径调整) BLAS -lopenblas LAPACK -lopenblas SCALAPACK -lscalapack-openmpi BLACS -lblacs-openmpi FFTW -lfftw3 -lfftw3_omp实操心得-marchnative选项让编译器生成针对当前宿主CPU架构最优化的指令集这是提升性能最简单有效的一步。务必在编译节点上执行编译而非在架构不同的登录节点上。步骤二执行编译VASP有三个主要版本标准版vasp_std、伽马点版vasp_gam和非共线磁性版vasp_ncl。通常我们编译前两者。make all # 编译所有版本耗时较长 # 或分别编译 make std make gam编译成功后会在bin目录下生成vasp_std和vasp_gam可执行文件。将其路径加入PATH环境变量即可全局调用。2.3 编译VTSTVASP过渡态工具插件VTSTVienna Ab-initio Simulation Package Transition State Tools是进行过渡态搜索如NEB dimer方法和原子受力分析的必备插件。它需要以补丁形式集成到VASP源码中编译。下载VTST脚本从VTST官网下载对应版本的vtstcode.tgz和vtstscripts.tgz。合并源码将vtstcode.tgz解压其内容直接覆盖到VASP源码目录。当提示是否覆盖时选择“是”。这一步将VTST的Fortran源码文件合并到VASP的源码树中。修改main.F文件这是关键一步。找到VASP源码中的src/main.F文件搜索CALL CHAIN_FORCE。在其附近通常是在调用动力学相关的地方添加VTST的调用接口。具体添加的代码行在VTST的安装说明中有明确给出例如! VTST 修改开始 IF (LCHAIN) CALL CHAIN_FORCE(T_INFO%NIONS, DYN%POSION, TOTEN, TIFOR, LATT_CUR%A, LATT_CUR%B, IO%IU6) ! VTST 修改结束务必仔细核对行号错误的插入会导致编译失败。修改makefile.include在CPP_OPTIONS中添加-Dtbdyn标志如果之前没有的话这个标志对于VTST功能是必须的。重新编译VASP执行make veryclean清理旧目标文件然后重新make std进行编译。编译过程会包含VTST的代码。安装VTST脚本将vtstscripts.tgz解压到某个目录如~/bin/vtstscripts并将该目录加入PATH。这些Perl和Shell脚本用于后处理如从XDATCAR中提取构型、分析NEB结果等。踩坑记录最常见的错误是main.F修改不正确导致编译时提示CHAIN_FORCE未定义。请逐字核对VTST安装说明中的代码片段和插入位置。另一个坑是VTST版本与VASP版本必须兼容务必使用为VASP 6.4.0设计的VTST版本。3. 输入文件详解与VASP对话的“语法”VASP通过一组特定的输入文件来接收指令。理解每一个参数的含义是进行有效计算的前提。核心输入文件有四个INCAR,POSCAR,POTCAR,KPOINTS。3.1 INCAR计算任务的控制中枢INCAR文件包含了计算类型、算法、精度、收敛条件等所有关键控制参数。参数众多但掌握核心的二十几个就能应对大部分任务。基础必设参数SYSTEM: 计算体系的描述性标题会输出在文件头。ISTART: 决定是否读取波函数。0默认从头开始1读取WAVECAR继续计算如中断重启或改变参数2读取WAVECAR并重启电子步。ICHARG: 决定初始电荷密度来源。2默认从原子轨道叠加11读取CHGCAR文件常用于能带或态密度计算。PREC: 精度控制。Normal默认平衡精度与速度Accurate推荐提高实空间网格和倒空间积分精度大多数情况应用此设置Single快速测试High极高精度慎用极慢。ENCUT: 平面波截断能单位eV。这是最重要的参数之一决定了基组大小。必须不小于POTCAR中所有元素的ENMAX值取最大值。通常设置为ENMAX的1.3倍左右以保证收敛。例如POTCAR中ENMAX 400 eV则可设ENCUT 520。ISMEAR: 倒空间布居方法。对于绝缘体或半导体用0Gaussian smearing并设置较小的SIGMA如0.05对于金属用1Methfessel-Paxton或2Fermi smearingSIGMA通常0.1-0.2。SIGMA: 展宽宽度单位eV与ISMEAR配合使用。EDIFF: 电子自洽迭代收敛标准能量变化单位eV。通常1E-5到1E-6即可。NSW和IBRION: 控制离子弛豫结构优化或分子动力学。NSW是最大离子步数IBRION指定离子移动算法。例如NSW100; IBRION2表示使用共轭梯度法进行最多100步的结构优化。ISIF: 计算中晶胞和原子的自由度。2只优化原子位置固定晶胞3同时优化原子位置和晶胞形状体积4固定晶胞体积但优化形状和原子位置。LWAVE和LCHARG: 决定是否输出波函数(WAVECAR)和电荷密度(CHGCAR)。在结构优化中间步可以设为.FALSE.以节省磁盘空间最后一步或静态计算设为.TRUE.用于后续分析。LREAL: 实空间投影算符。.FALSE.在倒空间求值精确但慢.TRUE.或On在实空间求值快适用于大体系。对于小体系100原子建议用.FALSE.保证精度大体系用.TRUE.或Auto。一个用于半导体/绝缘体初始结构优化的INCAR示例SYSTEM Si Bulk Relaxation ISTART 0 ICHARG 2 PREC Accurate ENCUT 520 ISMEAR 0 SIGMA 0.05 EDIFF 1E-6 EDIFFG -0.01 # 离子弛豫收敛标准力收敛单位 eV/A NSW 100 IBRION 2 ISIF 3 LREAL .FALSE. LWAVE .FALSE. LCHARG .FALSE.3.2 POSCAR定义你的原子世界POSCAR描述了体系的晶格矢量和原子位置。格式必须精确。文件结构第一行注释行通常写体系名称。第二行晶格缩放因子一个数字。第3-5行三个晶格矢量a, b, c单位是Å如果缩放因子为1。第六行元素种类按顺序列出。第七行各元素对应的原子数目。第八行坐标类型。Direct分数坐标或Cartesian笛卡尔坐标单位Å。后续行每个原子的坐标每行三个数。示例硅的晶胞分数坐标Si Bulk 1.0 ! 缩放因子 0.000000 2.715000 2.715000 ! 晶格矢量 a 2.715000 0.000000 2.715000 ! 晶格矢量 b 2.715000 2.715000 0.000000 ! 晶格矢量 c Si ! 元素种类 2 ! 原子数 Direct ! 分数坐标 0.000000 0.000000 0.000000 0.250000 0.250000 0.250000注意事项坐标下方的原子排列顺序必须与第六、七行的元素种类和数量严格对应。使用Direct坐标时每个值应在0到1之间。创建POSCAR后强烈建议用VESTA等可视化软件检查原子位置是否正确避免出现原子距离过近重叠的情况这会导致计算一开始就发散。3.3 POTCAR赝势文件POTCAR是赝势文件包含了元素的势场和原子核信息。必须与POSCAR中的元素种类和顺序完全一致。生成方法VASP官方不直接提供赝势文件需要从官网下载赝势库如PBE文件夹。然后使用cat命令按POSCAR中的顺序拼接cat ~/potentials/PBE/Si/POTCAR POTCAR如果体系包含多种元素例如Si和Gecat ~/potentials/PBE/Si/POTCAR ~/potentials/PBE/Ge/POTCAR POTCAR核心要点务必检查拼接后的POTCAR文件头部的TITEL行确认元素顺序正确。错误的POTCAR顺序是导致计算结果物理意义错误的常见原因。另外要确保整个计算过程中使用同一套赝势不同赝势的结果不能直接比较。3.4 KPOINTS倒空间的采样网格KPOINTS文件定义了在倒易空间中进行积分的采样点k点。k点网格越密结果越精确但计算量也越大。常用格式Monkhorst-Pack网格Automatic mesh 0 ! 0表示自动生成Monkhorst-Pack网格 Monkhorst-Pack ! 网格类型 4 4 4 ! 三个方向上的k点数量 0 0 0 ! 偏移量 (通常为0 0 0)对于半导体或绝缘体4 4 4的网格通常是一个不错的起点。对于金属由于费米面附近需要更密集的采样以准确描述电子态通常需要更密的网格如8 8 8或更高。对于能带计算则需要沿着高对称路径设置k点这通常通过其他工具如vaspkit生成KPOINTS文件。k点收敛性测试这是严谨计算必须做的。固定其他参数逐步增加k点网格密度如2 2 2,3 3 3,4 4 4,5 5 5计算体系的总能量。当能量变化小于1 meV/atom时即可认为k点收敛。此时的网格密度可用于后续所有同类计算。4. 标准计算流程实操从结构优化到性质分析一个完整的材料计算研究通常遵循“结构优化 → 静态自洽 → 性质计算”的流程。下面以一块硅晶体为例拆解每个步骤。4.1 第一步晶体结构优化弛豫目标找到体系能量最低的原子位置和晶胞形状。输入文件准备INCAR: 使用3.1节中的示例设置NSW100,IBRION2,ISIF3,EDIFFG-0.01力收敛标准。POSCAR: 构建一个包含足够真空层的原胞或超胞。对于体相硅一个包含2个原子的原胞即可。POTCAR: 拼接Si的PBE赝势。KPOINTS: 设置一个中等密度的网格如6 6 6。提交计算与监控使用MPI命令并行运行例如在4个核心上mpirun -np 4 vasp_std vasp.out 计算过程中关键监控文件是OUTCAR和OSZICAR。tail -f OSZICAR实时查看每一步的离子步能量和受力变化。你会看到类似F -.123456E02 E0 -.123455E02 d E -.100000E-03的输出关注F自由能和d E能量变化是否在逐步稳定收敛。grep -i “reached required accuracy” OUTCAR计算结束后检查是否输出此信息表示电子步收敛。grep -i “reached” OUTCAR | tail -1查看结构优化是否达到力收敛标准EDIFFG。如果显示reached required accuracy - stopping structural energy minimisation则优化成功完成。结果检查收敛性确认上述收敛信息。能量变化查看OSZICAR最后几步的能量变化应远小于EDIFF。最终结构优化后的结构保存在CONTCAR中。务必将CONTCAR重命名为POSCAR用于下一步计算cp CONTCAR POSCAR。受力运行grep -A 3 “TOTAL-FORCE” OUTCAR | tail -4查看最后一个离子步中每个原子受力的分量。理想情况下所有力的分量绝对值都应小于EDIFFG的绝对值如0.01 eV/A。4.2 第二步静态自洽计算目标在优化好的稳定结构上进行高精度的电子结构自洽计算获得精确的总能量、电荷密度和波函数为后续分析做准备。输入文件调整INCAR:设置ISTART 0(或1如果利用上步的WAVECAR)。设置ICHARG 2。将NSW 0 因为不需要再移动离子。设置IBRION -1(静态计算)。提高精度可以略微增加ENCUT或使用更密的KPOINTS网格基于收敛性测试结果。设置LWAVE .TRUE.和LCHARG .TRUE.输出波函数和电荷密度。POSCAR: 使用上一步优化得到的CONTCAR。KPOINTS: 使用收敛性测试确定的高质量k点网格。执行与输出运行计算。此次计算会很快因为离子位置不动。输出的CHGCAR和WAVECAR是后续能带、态密度等非自洽计算的基础。4.3 第三步非自洽计算与电子性质分析在静态计算得到的基态上我们可以进行一系列“单点”性质计算如能带、态密度DOS、局域态密度LDOS等。这些计算通常是非自洽的即固定电荷密度(CHGCAR)和势场只求解不同k点的本征值。以态密度DOS计算为例备份重要文件将静态计算得到的CHGCAR,WAVECAR,POSCAR,POTCAR,KPOINTS备份到新目录。修改INCARSYSTEM Si Bulk DOS ISTART 1 # 读取WAVECAR ICHARG 11 # 读取CHGCAR固定势场 NSW 0 IBRION -1 PREC Accurate ENCUT 520 ISMEAR -5 # 使用四面体方法进行积分对于DOS计算更准确 SIGMA 0.05 LORBIT 11 # 输出投影态密度(PDOS)所需数据 NEDOS 2001 # 设置DOS输出的能量点数越多曲线越平滑 EMIN -15 # DOS能量范围下限 (eV) EMAX 10 # DOS能量范围上限 (eV)修改KPOINTSDOS计算需要在整个布里渊区进行均匀采样因此需要使用更密的均匀k点网格例如12 12 12。这与能带计算所用的高对称路径不同。执行计算运行VASP。计算结束后主要输出文件是DOSCAR和vasprun.xml。后处理使用p4vasp、VASPKIT或编写Python脚本如pymatgen读取DOSCAR或vasprun.xml绘制总态密度和分波态密度图。能带计算流程类似但关键区别在于KPOINTS文件需要指定一条在高对称点之间连接的k点路径。通常借助seekpath在线工具或vaspkit的102功能来生成这个特殊的KPOINTS文件。INCAR中ICHARG11同样关键并且通常设置LWAVE.FALSE.以节省空间。5. 进阶功能声子谱计算与VTST过渡态搜索掌握了基础流程后可以探索更强大的功能如计算晶格动力学性质的声子谱以及研究化学反应路径的过渡态搜索。5.1 DFPT声子谱计算VASP使用密度泛函微扰理论DFPT计算声子谱。这是一个两步甚至多步的过程。步骤一在优化好的平衡结构上进行DFPT力常数计算准备一个精确优化后的POSCAR。INCAR关键设置IBRION 8 # 启用DFPT声子计算 NSW 1 # 一个离子步实际不动 PREC Accurate ENCUT 600 # 声子计算通常需要更高的截断能 EDIFF 1E-8 # 极高的电子收敛标准 LREAL .FALSE. # 必须关闭实空间投影 ADDGRID .TRUE. # 使用更精细的网格提高精度 # LPHON .TRUE. # 输出力常数但IBRION8会自动开启使用一个适中的k点网格如4 4 4。这一步计算量很大。运行计算。完成后会生成vasprun.xml其中包含了力常数信息。步骤二后处理生成声子谱DFPT计算了单个超胞的力常数。要得到声子色散关系需要后处理。确保vasprun.xml文件存在。使用phonopy软件包是最通用的方法。首先用phonopy生成有限位移法的POSCAR集合虽然我们用DFPT但phonopy也能处理DFPT的输出然后通过phonopy读取vasprun.xml中的力常数。# 1. 通过VASP输出创建力常数文件 (FORCE_SETS) phonopy --fc vasprun.xml # 2. 生成band.conf路径文件需手动编辑或使用seekpath生成 # 3. 计算并绘制声子谱 phonopy -p band.conf也可以使用VASPKIT的601功能来辅助处理DFPT声子数据并生成绘图脚本。输出数据命令提示在计算过程中可以通过grep “THz” OUTCAR来快速查看Gamma点q0的几个声子频率。完整的声子色散关系需要通过后处理软件得到。5.2 使用VTST进行NEB过渡态搜索Nudged Elastic Band (NEB) 方法是寻找反应过渡态的经典方法。VTST插件提供了强大的NEB实现。准备工作已成功编译包含VTST的VASP。明确初始态Initial State, IS和最终态Final State, FS的原子构型并分别进行充分的能量最小化。得到POSCAR_IS和POSCAR_FS。使用VTST脚本nebmake.pl在IS和FS之间插入若干中间镜像Image。nebmake.pl POSCAR_IS POSCAR_FS 5 # 插入5个中间镜像这会生成00,01, ...06共7个文件夹含首尾每个里面都有一个POSCAR。NEB计算设置进入包含所有镜像文件夹的父目录。创建公用的INCAR,POTCAR,KPOINTS。INCAR需要特殊设置SYSTEM NEB Calculation IMAGES 5 # 中间镜像的数量与nebmake.pl参数一致 SPRING -5 # 弹簧常数负值表示使用改进的切向弹簧力 IBRION 3 # 使用准牛顿法优化对NEB更有效 POTIM 0 # 当IBRION3时设为0 LCLIMB .TRUE. # 启用爬升图像法CI-NEB自动将最高能量镜像推向鞍点 NSW 200 # 最大离子步数 IOPT 1 # 优化算法选择1准牛顿L-BFGS推荐 EDIFFG -0.05 # 力收敛标准每个原子上的切向力使用VTST提供的nebsubmit.pl脚本提交作业该脚本会为每个镜像创建作业目录并链接公用文件。监控计算使用nebresults.pl可以快速查看每个镜像的能量和受力情况。收敛的判断标准是所有镜像受到的切向力非弹簧力都小于EDIFFG。结果分析计算收敛后能量最高的那个镜像即为过渡态TS的近似构型。可以使用nebbarrier.pl绘制反应路径能垒图。为了确认找到的是真正的鞍点需要对TS构型进行频率分析计算其声子谱应该只有一个虚频imaginary frequency且其振动模式指向反应坐标。6. 常见问题、报错排查与性能调优在实际操作中你一定会遇到计算不收敛、报错或性能不佳的情况。以下是一些典型问题及解决思路。6.1 电子步不收敛表现OUTCAR中找不到reached required accuracy或OSZICAR中电子步循环数达到最大值NELM默认60后能量仍在剧烈震荡。解决策略检查初始结构原子是否太近用VESTA检查。糟糕的初始猜测是发散的主要原因。调整ALGO默认是Normal(Davidson)。尝试更稳健的算法ALGO All使用所有子空间迭代更稳定但稍慢。ALGO Damped使用阻尼动力学配合TIME0.4对难收敛体系如金属、磁性体系特别有效。降低SIGMA对于绝缘体尝试将SIGMA降到0.01。使用电荷密度混合设置IMIX4,AMIX0.2,BMIX0.0001。有时有效。分步收敛先使用较低的ENCUT和较稀疏的KPOINTS配合ALGODamped让计算“热启动”收敛然后读取其WAVECAR和CHGCAR再用高精度参数继续计算ISTART1, ICHARG1。6.2 离子弛豫结构优化不收敛或结构“飞掉”表现OSZICAR中离子步能量不降反升或原子位置变得非常不合理。解决策略收紧电子步收敛标准确保每一步离子移动前电子结构都已充分收敛。将EDIFF设为1E-6或更小。减小离子步长设置POTIM 0.1默认是0.5使离子移动更谨慎。使用更稳健的算法将IBRION从共轭梯度法(2)换为准牛顿法(1)后者对初始结构更宽容。固定部分原子在POSCAR中在坐标行后添加一行用T和F标记每个原子是否弛豫。对于表面或界面模型可以固定底部几层原子。分阶段优化先固定晶胞只优化原子位置ISIF2然后再放开晶胞优化ISIF3。6.3 计算速度慢如何调优核心参数ENCUT和KPOINTS是计算量的主要决定因素。务必进行收敛性测试在精度和速度间取得平衡。并行效率k点并行(KPAR)如果k点数量多4设置KPAR将k点分配到不同进程组能极大提升速度。例如有32核k点网格8 8 8可以设置NCORE4每个进程组处理4个能带和KPAR88组k点并行。总进程数KPAR * NCORE。能带并行(NCORE)对于能带数较多的体系100设置NCORE通常为单个CPU的物理核心数进行能带层面的并行。混合并行结合MPI跨节点和OpenMP节点内。在makefile.include中启用-openmp并在运行时设置OMP_NUM_THREADS。通常MPI进程数 x OpenMP线程数 总物理核心数。内存与磁盘对于大体系LREAL Auto或.TRUE.能显著减少内存消耗并提速。在结构优化中间步设置LWAVE.FALSE.和LCHARG.FALSE.可以避免读写巨大的WAVECAR和CHGCAR文件大幅提升I/O效率。6.4 报错信息速查ZBRENT: fatal error in bracketing通常与赝势或ENCUT设置过低有关。检查POTCAR是否匹配并提高ENCUT。ERROR in subspace rotation PSSYEVX并行设置问题。尝试减少NCORE的值如设为1或2或使用纯MPI并行不开OpenMP。Tetrahedron method failsISMEAR-5时k点不足。增加k点网格密度或改用ISMEAR0。POSMAP internal errorPOSCAR文件格式错误特别是缩放因子或晶格矢量格式不对。检查是否有多余的空格或Tab。计算中途退出无错误信息检查运行节点的内存是否耗尽。使用top或free命令监控。考虑使用LREAL.TRUE.或增加节点数。学习VASP的过程就是一个不断遇到问题、查阅文档、调试参数、分析结果的正向循环。每一次成功的计算不仅是对物理问题的深入理解也是对这套复杂工具掌控力的提升。从照着教程跑通第一个算例到自己设计研究方案、解决计算难题再到最终从数据中提炼出可靠的物理结论这条路上没有捷径唯有耐心、细致和持续的思考。这份笔记里提到的每一个参数和步骤背后都是我或同事们曾经耗费数小时甚至数天调试总结的经验。希望它能成为你探索材料计算世界的一块有用的垫脚石。当你熟悉了这些基础操作后不妨再深入去了解更高级的功能如HSE杂化泛函计算、GW准粒子能带、BSE光学性质等那将是另一个充满挑战和乐趣的广阔天地。