VASP Scripts
Table of Contents

Scripts-FUNSOM64

提交任务一般需要INCARKPOINTSPOSCARPOTCARvasp.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

Energy-cutoff test

以\(TiO_2\) anatase为例进行计算,KPOINTSKPOINTS-5设置成一样,POTCAR从赝势库里复制。

晶体结构、原子位置可以从 American Mineralogist Crystal Structure Database搜索得到, 再用ASEVESTA 转化成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`

K-points test

以\(TiO_2\) anatase为例进行计算,INCARINCAR.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)

lattice constant test (single-parameter)

以Pd为例进行计算,INCARINCAR.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