| 5 | 1/1 | 返回列表 |
| 查看: 3705 | 回復(fù): 18 | |||
| 當(dāng)前只顯示滿足指定條件的回帖,點擊這里查看本話題的所有回帖 | |||
fly_elephan銀蟲 (小有名氣)
|
[交流]
vasp計算結(jié)果處理態(tài)密度要用到的程序 已有7人參與
|
||
|
在材料電學(xué)特性的研究中,能帶和態(tài)密度是我們最關(guān)心的,下面的這個程序可以用于vasp計算結(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ù)版主 (知名作家)
老和山猥瑣派九段
|
本帖內(nèi)容被屏蔽 |
榮譽(yù)版主 (知名作家)
老和山猥瑣派九段
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 081200-11408-276學(xué)碩求調(diào)劑 +6 | 崔wj 2026-03-26 | 6/300 |
|
|---|---|---|---|---|
|
[考研] 086000生物與醫(yī)藥調(diào)劑 +3 | Feisty。 2026-03-28 | 7/350 |
|
|
[考研] 348求調(diào)劑 +3 | 小懶蟲不懶了 2026-03-28 | 3/150 |
|
|
[考研] 295材料工程專碩求調(diào)劑 +7 | 1428151015 2026-03-27 | 7/350 |
|
|
[考研] 材料與化工272求調(diào)劑 +9 | 阿斯蒂芬2004 2026-03-28 | 9/450 |
|
|
[考研] 299求調(diào)劑 +7 | 嗯嗯嗯嗯2 2026-03-27 | 7/350 |
|
|
[考研] 266分,求材料冶金能源化工等調(diào)劑 +7 | 哇呼哼呼哼 2026-03-27 | 9/450 |
|
|
[考研] 0856,材料與化工321分求調(diào)劑 +12 | 大饞小子 2026-03-27 | 13/650 |
|
|
[考研] 266分求材料化工冶金礦業(yè)等專業(yè)的調(diào)劑 +4 | 哇呼哼呼哼 2026-03-26 | 4/200 |
|
|
[考博] 26申博 +3 | 加油沖啊! 2026-03-26 | 3/150 |
|
|
[考研] 343求調(diào)劑 +4 | 贈我一本書 2026-03-23 | 4/200 |
|
|
[考研] 321求調(diào)劑 +6 | wasdssaa 2026-03-26 | 6/300 |
|
|
[考研] 材料科學(xué)與工程 317求調(diào)劑 +4 | JKSOIID 2026-03-26 | 4/200 |
|
|
[考研] 081700 調(diào)劑 267分 +11 | 迷人的哈哈 2026-03-23 | 11/550 |
|
|
[考研] 281求調(diào)劑 +6 | Koxui 2026-03-24 | 7/350 |
|
|
[考研] 材料專碩 335 分求調(diào)劑 +4 | 拒絕冷暴力 2026-03-25 | 4/200 |
|
|
[考研] 296求調(diào)劑 +4 | 汪。! 2026-03-25 | 7/350 |
|
|
[考研] 300分,材料,求調(diào)劑,英一數(shù)二 +5 | 超贊的 2026-03-24 | 5/250 |
|
|
[考研] 材料專碩找調(diào)劑 +5 | 哈哈哈吼吼吼哈 2026-03-23 | 5/250 |
|
|
[考研] 求老師收我 +3 | zzh16938784 2026-03-23 | 3/150 |
|