Jerkwin分享 http://blog.sciencenet.cn/u/Jerkwin

博文

VASP使用

已有 7458 次阅读 2014-7-19 04:53 |个人分类:我的工具箱|系统分类:科研笔记

VASP的使用方法设计的缺陷很大, 如果只是简单算个东西, 倒也可以, 若是想大规模使用, 成千上百的文件, 都有着一样的名字, 看了不疯才怪. 所以, 我们需要一个脚本, 将VASP计算的流程进行改造. 改造的原则是支持不同文件名, 且不同文件之间可任意组合.

创建赝势文件POTCAR的脚本

  1. 整理好四种赝势文件, uspp.LDA, uspp.GGA, paw.LDA, paw.GGA, paw.PBE, 将其分别放于与名称相应的文件夹下, 再将这四个文件夹 放在名称为POT的文件夹下

  2. 下面的脚本用来提取创建POTCAR

# Language: bashPOTROOT=$1; shiftusage="CatPot \<Type\> \<Elements...\>Type: uspp.LDA | uspp.GGA | paw.LDA | paw.GGA | paw.PBE"[[ $# -lt 2 ]] && { echo "$usage"; exit; }Type=$1; shiftecho-n >POTCARfor i in$*;dozcat ${POTROOT}/${Type}/$i/POTCAR  >> POTCARdonegrep -A 21 VRHFIN POTCAR运行作业脚本

vasp运行需要四种输入文件, INCAR, KPOINTS, POSCAR, POTCAR, 且不能是其他名字, 程序也没提供选项指定其他名字. 彻底的解决方法是修改源代码, 困难不大, 但不建议. 除此之外可以使用一个脚本, 先将文件改名, 复制至作业运行目录下, 运行vasp, 完成后复制输出文件至原目录, 再将输出文件更名.

我的解决办法是参照GROMACS的运行方式, 先利用这四个文件产生一个总的输入文件, 然后运行这个.ikp文件即可. ikp文件的内容很简单, 里面写好使用的四个文件的绝对路径, 脚本运行时根据路径复制文件, 运行vasp.

# Language: bashfunction vsp_ikp {usage="\>>>>>>>>>>>>>>>>   vsp_ikp    <<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>  Jicun Li    <<<<<<<<<<<<<<<<>>>>>>>>>>    2014-05-21 10:12:32    <<<<<<<<<>>Usage: vsp_ikp [File.in] [File.kpt] [File.pos] [File.pot] [Out.ikp]"echo"$usage"local Fin Fkpt Fpos Fpot FoutPWD=$(pwd)Fin=INCAR; Fkpt=KPOINTS; Fpos=POSCAR; Fpot=POTCAR; Fout=vsp.ikpopt=($@); N=${#opt[@]}for((i=0; i<N; i++));doarg=${opt[$i]##*\.}[[$arg=~in]]&&{ Fin=${opt[$i]};}[[$arg=~ kpt ]]&&{ Fkpt=${opt[$i]};}[[$arg=~ pos ]]&&{ Fpos=${opt[$i]};}[[$arg=~ pot ]]&&{ Fpot=${opt[$i]};}[[$arg=~ ikp ]]&&{ Fout=${opt[$i]};}doneechoecho Ouput ikp File:$Foutecho-n >$Foutecho INCAR:$PWD/$Fin>>$Foutecho KPOINTS:$PWD/$Fkpt>>$Foutecho POSCAR:$PWD/$Fpos>>$Foutecho POTCAR:$PWD/$Fpot>>$Fout}function vsp_run {usage="\>>>>>>>>>>>>>>>>   vsp_run    <<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>  Jicun Li    <<<<<<<<<<<<<<<<>>>>>>>>>>    2014-05-21 10:12:32    <<<<<<<<<>>Usage: vsp_run  [-cpu Ncpu]"[[ $# -lt 1 ]] && { echo "$usage"; exit; }File=${1%\.*}; Fout=$FileNcpu=4#$(cat /proc/cpuinfo | grep "processor" | wc)[[ $# -ge 3 ]] && { Ncpu=$3; }Fin=$( grep INCAR   $File.ikp | sed 's/INCAR://')Fkpt=$(grep KPOINTS $File.ikp | sed 's/KPOINTS://')Fpos=$(grep POSCAR  $File.ikp | sed 's/POSCAR://')Fpot=$(grep POTCAR  $File.ikp | sed 's/POTCAR://')cp $Fin./INCARcp $Fkpt./KPOINTScp $Fpos./POSCARcp $Fpot./POTCARPath="/home/jicun/VASP/vasp.x"MPIRUN="/share/apps/intel/impi/4.1.0.030/intel64/bin/mpirun"$MPIRUN-np $Ncpu-machinefile $PBS_NODEFILE$Path}job=$1; shiftvsp_$job$*


◆图片/表格/公式/代码完整版请参看:VASP使用



https://blog.sciencenet.cn/blog-548663-812885.html

上一篇:GNU Parallel
下一篇:
收藏 IP: 130.184.197.*| 热度|

1 Vetaren11

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-16 06:35

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部