|
本帖最后由 hydrogen2333 于 2025-8-14 17:42 编辑
让AI写了一个小脚本用于VASP收敛性测试,面向集群上的slurm作业系统和个人计算机。
前者原来提交任务的命令是
后者原来提交任务的命令是集群上需要将脚本放在包含"INCAR POSCAR KPOINTS POTCAR slurm.sh(原提交任务的脚本)"五个文件的目录下,然后运行收敛性测试脚本就行;个人计算机上则只需放在包含四个输入文件的目录就行。测试脚本会先进行ENCUT参数的测试,然后进行K点的测试,最后给出合适的ENCUT值和K点的值。集群那个测试脚本开头的内容可以自己设定,如下:
- ENCUT_START=200 #测试起始截断能
- ENCUT_END=500 #测试终止截断能
- ENCUT_STEP=20 #测试截断能步长
- NATOMS=2 #POSCAR中原子总数
- ENERGY_CRITERION=0.001 #收敛标准:前后两次测试任务中每个原子的平均能量差小于0.001 eV/原子的第一个点处
- MAX_JOBS=999 #脚本向集群提交的最大任务数量
- KPOINT_SCHEME="Gamma" #选择使用Gamma方案或者Mp方案
- KPOINT_START=1 #测试起始KPOINTS
- KPOINT_END=8 #测试终止KPOINTS
- KPOINT_STEP=1 #测试KPOINTS步长
- SLURM_SCRIPT="slurm.sh" #原集群上提交任务的脚本,拷贝一份到测试脚本目录下
- LOG_FILE="convergence_test.log" #日志文件名称
复制代码 测试了两个例子,均为结构优化后的Static Calculation
一个是cubic Fe的惯用晶胞,晶胞参数是2.86 angstrom,测试结果是开始收敛处的ENCUT=310<ENMAX(267.882, POTCAR)*1.3,这里和平常的经验:ENCUT设置为ENMAX*1.3不太一样,有点疑惑,单独设置ENCUT=310和收敛的K点进行计算无报错。开始收敛处的k点是11*11*11(Gamma scheme),和vaspkit的102功能使用Gamma scheme得出的k区间一致(9*9*9~12*12*12)
另一个是Li6PS5Cl的惯用晶胞,晶胞参数是10.24 angstrom,测试结果是开始收敛处的ENCUT=460<ENMAX*1.3,单独设置ENCUT=460(甚至设置400)和收敛的K点进行计算无报错,开始收敛处的k点是3*3*3(Gamma scheme),和vaspkit生成的KPOINTS也相同。
测试结束后encut_results.txt和kpoints_results.txt记录了每次任务中每个原子的平均能量,可以绘制能量曲线
不过我还是不太确定纠结“先进行ENCUT参数的测试,然后进行K点的测试,最后给出合适的ENCUT值和K点的值”这种思路是否合理,恳请各位老师批评指正
|
|