24小时热门版块排行榜    

查看: 1009  |  回复: 2

mlbiao

新虫 (初入文坛)

[交流] 请教一个VASP脚本问题,谢谢~ 已有2人参与

刚接触VASP,对linux SHELL也不是很熟,故在此请教:
如下有两文件,第一个是常见的vasp运行PBS ;
第二个是好像是用来进行ENCUT 收敛情况的测试(或类似其他测试)。
请问怎样这两个合成一个PBS呢?也就是要仍以PBS运行VASP。谢谢~
PS: 没金币只好发成资源帖  
#PBS -N vasp
#PBS -j oe
#PBS -l nodes=5:ppn=8
source /public/software/profile.d/intel-env.sh
source /public/software/profile.d/openmpi-intel-env.sh
NP='cat $PBS_NODEFILE | wc -l'
cd $PBS_O_WORKDIR
mpirun -np -$NP -machinefile $PBS_NODEFILE
/public/software/vasp5.2/vasp

----------------------------------------------------------
#!/bin/sh
rm WAVECAR
for  i  in  150   200   250  300   350   400
do
cat > INCAR <<!
SYSTEM = Si-Diamond
ENCUT = $i
ISTART = 0 ; ICHARG = 2
ISMEAR = -5
PREC = Accurate
!
echo "ENCUT = $i eV" ;  time vasp
E='grep "TOTEN" OUTCAR | tail -1 | awk '{printf "%12.6f \n",  
$5 }''
echo $i   $E  >>comment
done
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

灯塔守望者

铁杆木虫 (正式写手)


小木虫: 金币+0.5, 给个红包,谢谢回帖
合并会造成一个问题就是提交作业之后,还没有算,就开始执行读取total energy 命令。除非你加入反馈代码,VASP每计算完毕一次反馈给shell,之后再执行读取操作。建议你提交和读取分两次进行,代码还需修改一下。
我写一个,供参考,些许有小错,根据情况修改。

(1) 提交脚本
#!/bin/sh
cd=`pwd`
for  i  in  150   200   250  300   350   400
do
mkdir $i
cd $i
cp ../POSCAR .
cp ../KPOINTS .
cp ../POTCAR .
cat > INCAR <<!
SYSTEM = Si-Diamond
ENCUT = $i
ISTART = 0 ; ICHARG = 2
ISMEAR = -5
PREC = Accurate
!
bash ../vasp_pbs.sh
cd ..
done

(2)读取脚本
#!/bin/sh
cd=`pwd`
for  i  in  150   200   250  300   350   400
do
cd $i
echo "ENCUT = $i eV" ;  time vasp
E='grep "TOTEN" OUTCAR | tail -1 | awk '{printf "%12.6f \n",  
$5 }''
echo $i   $E  >>../comment
cd ..
done


(3)提交作业脚本vasp_pbs.sh
#PBS -N vasp
#PBS -j oe
#PBS -l nodes=5:ppn=8
source /public/software/profile.d/intel-env.sh
source /public/software/profile.d/openmpi-intel-env.sh
NP='cat $PBS_NODEFILE | wc -l'
cd $PBS_O_WORKDIR
mpirun -np -$NP -machinefile $PBS_NODEFILE
/public/software/vasp5.2/vasp
2楼2014-05-22 11:13:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bluewhale

铁杆木虫 (正式写手)


小木虫: 金币+0.5, 给个红包,谢谢回帖
引用回帖:
2楼: Originally posted by 灯塔守望者 at 2014-05-22 11:13:55
合并会造成一个问题就是提交作业之后,还没有算,就开始执行读取total energy 命令。除非你加入反馈代码,VASP每计算完毕一次反馈给shell,之后再执行读取操作。建议你提交和读取分两次进行,代码还需修改一下。
我 ...

正规的做法是用-W选项,见下:

It is possible to start a job on the condition that another one completes beforehand; this may be necessary for instance if the input to one job is generated by another job. Job dependency is defined in PBS using the -W flag.

To illustrate with an example, suppose you need to start a job using the script second_job.sh after another job finished successfully. Assume the first job is started using script first_job.sh and the command to start the first job

   $ qsub first_job.sh

returns the job ID 7777. Then, the command to start the second job is

   $ qsub -W depend=afterok:7777 second_job.sh

This job dependency can be further automated (possibly to be included in a bash script) using environment variables:

   JOB_ID_1=`qsub first_job.sh`
   JOB_ID-2=`qsub -W depend=afterok:$JOB_ID_1 second_job.sh`
3楼2014-05-22 18:18:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 mlbiao 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见