24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 3727  |  回复: 18
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

fly_elephan

银虫 (小有名气)

[交流] vasp计算结果处理态密度要用到的程序 已有7人参与

在材料电学特性的研究中,能带和态密度是我们最关心的,下面的这个程序可以用于vasp计算结果的处理,可以分离出总态密度和分态密度,这个程序是我们研究所用了很久的,绝对没问题,有资源大家共享,欢迎下载。
#! /bin/ksh
# Script to break the VASP DOSCAR file into segments for
# each atomic site.
# JMS NRL 5/0/02

# Modified to also align the Fermi level from the ground state
# to E=0.0
# JMS NRL 6/19/02


# Executables reside here
BIN=~/tzyy/AlP/swnt10


if [ $# -ne 0 ]; then
        echo "Usage: split_dos"
        exit 2
fi

# Script to split the DOSCAR file into the atomic
# projections labeled by atom number
dosfile=DOSCAR
outfile=OUTCAR
infile=INCAR


# Token for splitting the files
token=$(sed -n '6 p' $dosfile | awk '{print $1}')

# Number of points
nl=$(sed -n '6 p' $dosfile | awk '{print $3}')

# Number of atoms
natom=$(sed -n '1 p' $dosfile | awk '{print $1}')


# Get the Fermi level if the OUTCAR file is present,
# else we set it to zero.
if [ -a $outfile ]; then
    echo "The" $outfile "exists, we use it to get the Fermi level,"
    echo "the RWIGS tag and the number of spins."
    efermi=$(grep "E-fermi" $outfile | tail -1 | awk '{print $3}')
    echo "Fermi level:" $efermi
    nspin=$(grep "ISPIN" $outfile | tail -1 | awk '{print $3}')
    if [ $nspin -eq 2 ]; then
        echo "Spin polarized calculation"
    else
        echo "Unpolarized calculation"
    fi

# 2.a
# JMS 2/3/03 Modified to accept specification by LORBIT token.
#
    lorbit=$(grep "LORBIT" $outfile | tail -1 | awk '{print $3}')
    if [ $lorbit -ge 10 ]; then
        echo "LORBIT > 10"
        echo "WARNING: not completely test for vasp.4.*"
        echo "Use at your own risk. Please check results for consistency."
        form=1
    else
# 2.a
        rwigs=$(grep "RWIGS" $outfile | tail -1 | awk '{print $3}' | sed 's/\.//g')
        if [ $rwigs -eq -100 ]; then
            echo "RWIGS token not set"
            form=0
        else
            echo "RWIGS token set"
            form=1
        fi
# 2.a
    fi
# 2.a

else
    echo "The" $outfile "does not exist, we set the Fermi level to 0"
    echo "assume an unpolarized calculation, and RWIGS not set"
    form=0
    nspin=1
    efermi=0.0
fi

# If the outcar file is not present and you wish to set something by hand
# you should do it here. Uncomment the tokens below and set them by hand.

#efermi=2.255
#form=
#nspin=



# Get the atomic coordinates
$BIN/vp >| tmp.dat
tail -$natom tmp.dat | awk '{printf "%s %12.8f %12.8f %12.8f \n", "#", $2, $3, $4}' >| tmp.dat2


# Total is first DOS
if [ $form -eq 0 ]; then
i=0
else
i=0
fi


start=7
end=$((start+nl-1))
#echo $start $end
#exit 0
rm -f DOS0
if [ $form -eq 1 ]; then

    while [ $i -le $natom ]; do

            #echo $i $start $end

        if [ $i -gt 0 ]; then
            sed -n ''$i' p' tmp.dat2 >| DOS$i
        fi

        if [ $i -gt 0 ]; then

# Atomic projected DOS
            if [ $nspin -eq 2 ]; then
                sed -n ''$start','$end' p' $dosfile | awk '{printf "%12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f \n", $1+(-1)*'$efermi', $2, -1*$3, $4, -1*$5, $6, -1*$7}' >> DOS$i
            else
                sed -n ''$start','$end' p' $dosfile | awk '{printf "%12.8f %12.8f %12.8f %12.8f \n", $1+(-1)*'$efermi', $2, $3, $4 }' >> DOS$i
            fi               

        else

# Total DOS
            if [ $nspin -eq 2 ]; then
                sed -n ''$start','$end' p' $dosfile | awk '{printf "%12.8f %12.8f %12.8f %12.8f %12.8f \n", $1+(-1)*'$efermi', $2, -1*$3, $4, -1*$5 }' >> DOS$i
            else
                sed -n ''$start','$end' p' $dosfile | awk '{printf "%12.8f %12.8f %12.8f \n", $1+(-1)*'$efermi', $2, $3 }' >> DOS$i
            fi

        fi

        start=$((end+2))
        end=$((start+nl-1))
        i=$((i+1))
    done

else

    while [ $i -le 0 ]; do

            #echo $i $start $end

        if [ $i -gt 0 ]; then
            sed -n ''$i' p' tmp.dat2 >| DOS$i
        fi

        if [ $i -gt 0 ]; then

# Atomic projected DOS
            if [ $nspin -eq 2 ]; then
                sed -n ''$start','$end' p' $dosfile | awk '{printf "%12.8f %12.8f %12.8f %12.8f %12.8f %12.8f %12.8f \n", $1+(-1)*'$efermi', $2, -1*$3, $4, -1*$5, $6, -1*$7}' >> DOS$i
            else
                sed -n ''$start','$end' p' $dosfile | awk '{printf "%12.8f %12.8f %12.8f %12.8f \n", $1+(-1)*'$efermi', $2, $3, $4 }' >> DOS$i
            fi               

        else

# Total DOS
            if [ $nspin -eq 2 ]; then
                sed -n ''$start','$end' p' $dosfile | awk '{printf "%12.8f %12.8f %12.8f %12.8f %12.8f \n", $1+(-1)*'$efermi', $2, -1*$3, $4, -1*$5 }' >> DOS$i
            else
                sed -n ''$start','$end' p' $dosfile | awk '{printf "%12.8f %12.8f %12.8f \n", $1+(-1)*'$efermi', $2, $3 }' >> DOS$i
            fi

        fi

        start=$((end+2))
        end=$((start+nl-1))
        i=$((i+1))
    done

fi

exit 0
回复此楼

» 猜你喜欢

» 本主题相关商家推荐: (我也要在这里推广)

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

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

gougou531

禁虫 (正式写手)


小木虫(金币+0.5):给个红包,谢谢回帖
本帖内容被屏蔽

5楼2011-11-14 14:05:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 19 个回答

cenwanglai

荣誉版主 (知名作家)

老和山猥琐派九段

优秀版主

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
zzy870720z(金币+2): 谢谢指教 2011-05-30 15:23:30
这个程序vtstool code中有的。

你们组看起来是做单壁纳米管的,所以这个脚本可以一直用着。

如果含有f电子,就没有办法用了。LORBIT = 11和LORBIT = 10是有很大差异的,这个脚本需要修改才能用。

» 本帖已获得的红花(最新10朵)

2楼2011-05-30 11:01:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wujing110

禁虫 (正式写手)


小木虫(金币+0.5):给个红包,谢谢回帖
本帖内容被屏蔽

3楼2011-11-14 11:21:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cenwanglai

荣誉版主 (知名作家)

老和山猥琐派九段

优秀版主


小木虫(金币+0.5):给个红包,谢谢回帖
引用回帖:
3楼: Originally posted by wujing110 at 2011-11-14 11:21:03:
请问区长童鞋,LORBIT = 11时候应该怎么改呀?我设置LORBIT = 11,一共有19列数据,但是我现在只想要 s+,s-,p+,p-,d+,d-,那些角动量分量要一列一列加成总的么?

是啊。第四列到九列是p的三个分量及上下旋。三个奇数列相加的p+,三个偶数列相加的p-。后面10列是d分量及自旋。上旋和下旋分别相加。

可以用excel或者origin来做列的相加。
4楼2011-11-14 13:21:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 311求调剂 +6 李芷新1 2026-03-31 6/300 2026-03-31 17:27 by 唐沐儿
[考研] 材料求调剂 一志愿哈工大总分298分,前三科223分 +11 dongfang59 2026-03-27 11/550 2026-03-31 16:51 by Wang200018
[考研] 化学0703 调剂 306分 一志愿211 +10 26要上岸 2026-03-28 10/500 2026-03-31 16:04 by 记事本2026
[考研] 生物学 296 求调剂 +7 朵朵- 2026-03-26 9/450 2026-03-31 14:26 by jp9609
[考研] 070300化学354求调剂 +13 101次希望 2026-03-28 13/650 2026-03-31 13:38 by anny19840123
[考研] 求调剂推荐 材料 304 +17 荷包蛋hyj 2026-03-26 17/850 2026-03-31 12:41 by jp9609
[考研] 08工科,295,接受跨专业调剂 +6 lmnlzy 2026-03-30 6/300 2026-03-31 10:04 by cal0306
[考研] 085600材料与化工调剂 +16 kikiki7 2026-03-30 16/800 2026-03-31 10:03 by 氯化亚硝酰
[考研] 291求调剂 +12 Y-cap 2026-03-29 15/750 2026-03-31 09:25 by Huaxue_Wang
[考研] 335求调剂 +3 321* 2026-03-31 3/150 2026-03-31 09:00 by 功夫疯狂
[考研] 一志愿中海洋320化学工程与技术学硕求调剂 +8 披星河 2026-03-30 8/400 2026-03-31 08:53 by lbsjt
[考研] 英一数一408,总分284,二战真诚求调剂 +3 12.27 2026-03-30 5/250 2026-03-31 00:47 by 不吃芒果17
[考研] 0703 化学 求调剂,一志愿山东大学 342 分 +7 Shern—- 2026-03-28 7/350 2026-03-30 16:31 by nothing投稿中
[考研] 085404求调剂,总分309,本科经历较为丰富 +6 来财aa 2026-03-25 6/300 2026-03-30 09:48 by 青海小西牛
[考研] 一志愿双一流机械285分求调剂 +4 幸运的三木 2026-03-29 5/250 2026-03-29 14:49 by Miko19
[考研] 一志愿北京理工大学本科211材料工程294求调剂 +8 mikasa的围巾 2026-03-28 8/400 2026-03-29 12:48 by 无际的草原
[考研] 356求调剂 +3 gysy?s?a 2026-03-28 3/150 2026-03-29 00:33 by 544594351
[考研] 化学调剂 +4 爱吃番茄的旭 2026-03-24 5/250 2026-03-27 17:50 by kiokin
[考研] 321求调剂 +6 wasdssaa 2026-03-26 6/300 2026-03-26 20:57 by sanrepian
[考研] 309求调剂 +4 gajsj 2026-03-25 5/250 2026-03-26 00:27 by Dyhoer
信息提示
请填处理意见