提交任务一般需要INCAR
,KPOINTS
,POSCAR
,POTCAR
,vasp.pbs
这五个文件。
INCAR
:VASP的输入文件,告诉VASP需要执行哪些任务。KPOINTS
:K点信息POSCAR
:晶格参数,原子位置POTCAR
:原子的赝势信息vasp.pbs
:提交任务的脚本文件,名称可按自己习惯随意修改。注:前三个文件均可在提交任务的脚本中动态生成。
INCAR.static
PREC = High ISTART = 0 ICHARG = 2 ISMEAR = -5 ENCUT = 400
KPOINTS-5
Automatic mesh 0 Gamma 5 5 5 0 0 0
vasp.pbs
#!/bin/bash #$ -S /bin/bash #$ -cwd #$ -j y #$ -N vaspjob #$ -pe make 12 source /share/apps/intel/Compiler/11.1/073/bin/iccvars.sh intel64 source /share/apps/intel/Compiler/11.1/073/bin/ifortvars.sh intel64 source /share/apps/intel/impi/3.2.0.011/bin64/mpivars.sh mpirun -r ssh -np 12 ~/bin/vasp5.3.3
提交任务的方式为qsub vasp.pbs
,关于中间的三行source
命令,最好加上。否则,有些节点会不识别mpirun
命令,出现下面的这样的错误信息。
/opt/gridengine/default/spool/cn025/job_scripts/59839: line 8: mpirun: command not found
以\(TiO_2\) anatase为例进行计算,KPOINTS
和KPOINTS-5
设置成一样,POTCAR
从赝势库里复制。
晶体结构、原子位置可以从
American Mineralogist Crystal Structure Database搜索得到,
再用ASE或VESTA
转化成POSCAR
形式。
Anatase 1.0 3.7844998837 0.0000000000 0.0000000000 0.0000000000 3.7844998837 0.0000000000 0.0000000000 0.0000000000 9.5143003464 Ti O 4 8 Cartesian 0.000000000 0.000000000 0.000000000 1.892249942 1.892249942 4.757150173 0.000000000 1.892249942 2.378575087 1.892249942 0.000000000 7.135725260 0.000000000 0.000000000 1.979545295 1.892249942 1.892249942 6.736695752 0.000000000 1.892249942 4.358120382 1.892249942 0.000000000 9.115270839 1.892249942 0.000000000 5.156179681 0.000000000 1.892249942 0.399029791 1.892249942 1.892249942 2.777604878 0.000000000 0.000000000 7.534754767
在提交任务的脚本en.vasp
中动态生成INCAR
文件,执行一系列的任务。
#!/bin/bash #$ -S /bin/bash #$ -cwd #$ -j y #$ -N k-test #$ -pe make 12 source /share/apps/intel/Compiler/11.1/073/bin/iccvars.sh intel64 source /share/apps/intel/Compiler/11.1/073/bin/ifortvars.sh intel64 source /share/apps/intel/impi/3.2.0.011/bin64/mpivars.sh for i in 200 250 300 350 400 450 500 650 700 do cat > INCAR <<! PREC = High ISTART = 0 ICHARG = 2 ISMEAR = -5 ENCUT = $i ! echo "ENCUT= $i"; mpirun -r ssh -np 12 ~/bin/vasp5.3.3 E=`grep "TOTEN" OUTCAR | tail -1 | awk '{printf "%12.6f \n", $5 }'` echo $i $E >> SUMMARY.dat done
这里的for循环还有一种更为简洁的方法:for i in `seq 200 50 700`
。
以\(TiO_2\) anatase为例进行计算,INCAR
和INCAR.static
设置成一样,POTCAR
从赝势库里复制。
POSCAR
Anatase 1.0 3.7844998837 0.0000000000 0.0000000000 0.0000000000 3.7844998837 0.0000000000 0.0000000000 0.0000000000 9.5143003464 Ti O 4 8 Cartesian 0.000000000 0.000000000 0.000000000 1.892249942 1.892249942 4.757150173 0.000000000 1.892249942 2.378575087 1.892249942 0.000000000 7.135725260 0.000000000 0.000000000 1.979545295 1.892249942 1.892249942 6.736695752 0.000000000 1.892249942 4.358120382 1.892249942 0.000000000 9.115270839 1.892249942 0.000000000 5.156179681 0.000000000 1.892249942 0.399029791 1.892249942 1.892249942 2.777604878 0.000000000 0.000000000 7.534754767
在提交任务的脚本k.vasp
中动态生成KPOINTS
文件,执行一系列的任务。
#!/bin/bash #$ -S /bin/bash #$ -cwd #$ -j y #$ -N k-test #$ -pe make 12 for k in 2 3 4 5 6 7 8 do cat > KPOINTS <<! Automatic mesh 0 Gamma $k $k $k 0 0 0 ! echo "k= $k"; mpirun -r ssh -np 12 ~/bin/vasp5.3.3 E=`grep "TOTEN" OUTCAR | tail -1 | awk '{printf "%12.6f \n", $5 }'` echo $k $E >> SUMMARY.dat done
同样地for循环有一种更简单的写法:for k in `seq 2 8`
(间隔默认为1)
以Pd为例进行计算,INCAR
和INCAR.static
设置成一样,KPOINTS
设为12,POTCAR
从赝势库里复制。
lc.vasp
#!/bin/bash #$ -S /bin/bash #$ -cwd #$ -j y #$ -N lc_test #$ -pe make 12 source /share/apps/intel/Compiler/11.1/073/bin/iccvars.sh intel64 source /share/apps/intel/Compiler/11.1/073/bin/ifortvars.sh intel64 source /share/apps/intel/impi/3.2.0.011/bin64/mpivars.sh for a in `seq 3.85 0.01 4.04` do cat > POSCAR <<! Pd 1.0000000000000000 $a 0.0000000000000000 0.0000000000000000 0.0000000000000002 $a 0.0000000000000000 0.0000000000000002 0.0000000000000002 $a 4 Cartesian 0.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000002 1.9295000000000002 1.9295000000000000 1.9295000000000002 0.0000000000000001 1.9295000000000000 1.9295000000000002 1.9295000000000000 0.0000000000000000 ! echo "a= $a" ; mpirun -r ssh -np 12 ~/bin/vasp5.3.3 E=`grep "TOTEN" OUTCAR | tail -1 | awk '{printf "%12.6f \n", $5 }'` V=`grep "volume" OUTCAR | tail -1 | awk '{printf "%12.4f \n" , $5}'` echo $a $V $E >> SUMMARY.dat done