| 5 | 1/1 | 返回列表 |
| 查看: 3707 | 回復(fù): 18 | |||
| 當(dāng)前只顯示滿足指定條件的回帖,點(diǎn)擊這里查看本話題的所有回帖 | |||
fly_elephan銀蟲 (小有名氣)
|
[交流]
vasp計(jì)算結(jié)果處理態(tài)密度要用到的程序 已有7人參與
|
||
|
在材料電學(xué)特性的研究中,能帶和態(tài)密度是我們最關(guān)心的,下面的這個程序可以用于vasp計(jì)算結(jié)果的處理,可以分離出總態(tài)密度和分態(tài)密度,這個程序是我們研究所用了很久的,絕對沒問題,有資源大家共享,歡迎下載。 #! /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 |
|
本帖內(nèi)容被屏蔽 |
榮譽(yù)版主 (知名作家)
老和山猥瑣派九段
榮譽(yù)版主 (知名作家)
老和山猥瑣派九段
|
本帖內(nèi)容被屏蔽 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 一志愿北化求調(diào)劑 +4 | Jsman 2026-03-22 | 4/200 |
|
|---|---|---|---|---|
|
[考研] 085601材料工程找調(diào)劑 +6 | oatmealR 2026-03-29 | 6/300 |
|
|
[考研] 318一志愿吉林大學(xué)生物與醫(yī)藥 求調(diào)劑 +3 | 篤行致遠(yuǎn). 2026-03-28 | 3/150 |
|
|
[考研] 291求調(diào)劑 +4 | Y-cap 2026-03-29 | 4/200 |
|
|
[考研] 一志愿華北電力大學(xué)能動專碩,293,求調(diào)劑 +3 | 15537177284 2026-03-23 | 5/250 |
|
|
[考研] 283求調(diào)劑 +3 | A child 2026-03-28 | 3/150 |
|
|
[考研] 308求調(diào)劑 +7 | 墨墨漠 2026-03-25 | 7/350 |
|
|
[考研] 考研化學(xué)308分求調(diào)劑 +10 | 你好明天你好 2026-03-23 | 12/600 |
|
|
[考研] 化學(xué)工程085602 305分求調(diào)劑 +17 | RichLi_ 2026-03-25 | 17/850 |
|
|
[考研] 352求調(diào)劑 +4 | 大米飯! 2026-03-22 | 4/200 |
|
|
[考研] 281求調(diào)劑 +6 | Koxui 2026-03-24 | 7/350 |
|
|
[考研] 一志愿 南京郵電大學(xué) 288分 材料考研 求調(diào)劑 +3 | jl0720 2026-03-26 | 3/150 |
|
|
[考研] 總分293求調(diào)劑 +6 | 加一一九 2026-03-25 | 8/400 |
|
|
[考研] 考研一志愿蘇州大學(xué)初始315(英一)求調(diào)劑 +3 | sbdksD 2026-03-24 | 4/200 |
|
|
[考研] 293求調(diào)劑 +7 | 加一一九 2026-03-24 | 7/350 |
|
|
[考研] 一志愿吉林大學(xué)材料與化工303分求調(diào)劑 +4 | 為學(xué)666 2026-03-24 | 4/200 |
|
|
[考研] 300分,材料,求調(diào)劑,英一數(shù)二 +5 | 超贊的 2026-03-24 | 5/250 |
|
|
[考研] 化工專碩求調(diào)劑 +3 | question挽風(fēng) 2026-03-24 | 3/150 |
|
|
[考研] 292求調(diào)劑 +4 | 鵝鵝鵝額額額額?/a> 2026-03-24 | 4/200 |
|
|
[考研] 一志愿國科過程所081700,274求調(diào)劑 +3 | 三水研0水立方 2026-03-23 | 3/150 |
|