24小时热门版块排行榜    

查看: 921  |  回复: 2
当前主题已经存档。
【有奖交流】积极回复本帖子,参与交流,就有机会分得作者 zhjh888888 的 7 个金币

zhjh888888

银虫 (小有名气)

[交流] 【求助】VASP计算能带的数据处理与作图 已有2人参与

我用VASP计算了能带,用脚本vaspbnd处理后得到vaspbndup.dat和vaspbnddn.dat,用Origin作图后发现:几条能带的部分数据互换了!如下图蓝色、红色和粉色的曲线!红色的中部应该是向上上去的,结果向下凹了,正好那部分应该是粉色的。检查了脚本vaspbnd处理的数据文件vaspbndup.dat,其数据是和outcar以及EIGENVAL的结果对应的!如何调整让同一能带的数据在同一列?不想手工移动数据!!请问有没有其他脚本处理后不会出现这种情况?
附脚本vaspbnd内容:
#! /bin/bash

#Writted by N.C.Arlonne
#Modified by Zhao Jian-Hua,2010/04/15
#Time: 2008/04/05 1:49
echo "Writted by N.C.Arlonne"
echo "Modified by Zhao Jian-Hua,2010/04/15"
#echo "how many nbands?"
#read nband

if [ -d BAND ]
then
rm -rf BAND
fi
mkdir BAND
#--------------- Required variable global start -----------------#
#rm OUTCARtmp
eig=EIGENVAL
outcar=OUTCAR
spin=$(sed -n '1 p' $eig|awk '{print $4}')
nband=$(sed -n '6 p' $eig|awk '{print $3}')
npoint=$(sed -n '6 p' $eig|awk '{print $2}')
export efermi=$(grep E-fermi OUTCAR|awk '{print $3}')
awk '{print NR, $0}' $outcar>>OUTCARtmp
tmpoutcar=OUTCARtmp
#efermi=$(grep E-fermi OUTCAR|awk '{print $3}')
echo "E-Fermi:" $efermi
#-------------- Required global variable end ------------------#

#========================== Main start ===============================#

if [ "$spin" -eq 1 ];then

echo "calculation is non-spin"  #---- Non-spin split OUTCAR start ---#

start=$(grep "k-point   1 :" $tmpoutcar|awk '{printf $1}')
if [ "$npoint" -ge 10 -a "$npoint" -lt 100 ];then

endp=$(grep "k-point  $npoint :" $tmpoutcar|awk '{printf $1}')

elif [ "$npoint" -ge 100 ];then

endp=$(grep "k-point $npoint :" $tmpoutcar|awk '{printf $1}')

else

endp=$(grep "k-point   $npoint :" $tmpoutcar|awk '{printf $1}')

fi

end=$(($endp+$nband+1))

sed -n ''$start','$end' p' $tmpoutcar>>OUTCARn
#echo "fermi?"
#read efermi
awk '/k-point/{
printf "%d\t",$3
getline
for (i=1;i<='$nband';i++) {
getline
printf "%8.4f\t",$3-'$efermi' }
printf "\n"}' OUTCARn>>BAND/vaspbnd.dat
rm OUTCARn

#-------------------- Non-spin split OUTCAR end ---------------#
    else

echo "calculation is spin-polarize" #--- Spin-up split OUTCAR start ---#

startup=$(grep "spin component 1" $tmpoutcar|head -1|awk '{printf $1}')

endup=$(grep "spin component 2" $tmpoutcar|head -1|awk '{printf $1}')

#endup=$(($endupp+$nband+1))

sed -n ''$startup','$endup' p' $tmpoutcar>>OUTCARup
#echo "fermi?"
#read efermi
awk '/k-point/{
printf "%d\t",$3
getline
for (i=1;i<='$nband';i++) {
getline
printf "%8.4f\t",$3}
printf "\n"}' OUTCARup>>BAND/vaspbndup.dat
#rm OUTCARup
#printf "%8.4f\t",$3 - '$efermi' }
#-------------------- Spin-up split OUTCAR end ---------------#

#-------------------- Spin-dn split OUTCAR start ---------------#

startdn=$(grep "spin component 2" $tmpoutcar|tail -1|awk '{printf $1}')

enddn=$(grep "aborting loop" $tmpoutcar|awk '{printf $1}')

#enddn=$(($enddnp+$nband+1))

sed -n ''$startdn','$enddn' p' $tmpoutcar>>OUTCARdn

awk '/k-point/{
printf "%d\t",$3
getline
for (j=1;j<='$nband';j++) {
getline
printf "%8.4f\t",$3}
printf "\n"}' OUTCARdn>>BAND/vaspbnddn.dat
#rm OUTCARdn

fi        #------------- Spin-dn split OUTCAR end ---------------#

#rm OUTCARtmp

exit 0
#========================== Main end ===============================#

[ Last edited by zhjh888888 on 2010-4-21 at 11:16 ]
回复此楼

» 猜你喜欢

路在脚下!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hgye

金虫 (小有名气)


zhjh888888(金币+3): 2010-04-21 11:27
gavinliu7390(金币+1):谢谢交流! 2010-04-21 11:28
这个没办法自动调整,只能手工移动,所有软件算得都是这样,按本征值大小排序。不要用颜色区分,整体看上去是没有问题的,简单的能带还可以手工移动,复杂的很难分清楚谁和谁是一个带。
2楼2010-04-21 11:20:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhjh888888

银虫 (小有名气)

引用回帖:
Originally posted by hgye at 2010-04-21 11:20:07:
这个没办法自动调整,只能手工移动,所有软件算得都是这样,按本征值大小排序。不要用颜色区分,整体看上去是没有问题的,简单的能带还可以手工移动,复杂的很难分清楚谁和谁是一个带。

感谢您的回答!也就是VASP等程序无法区分某个能量本征值究竟属于哪个能带!
路在脚下!
3楼2010-04-21 11:24:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zhjh888888 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见