X-Git-Url: https://hackdaworld.org/gitweb/?p=physik%2Fposic.git;a=blobdiff_plain;f=vasp_tools%2Fget_ks_levels;fp=vasp_tools%2Fget_ks_levels;h=8ef690efbed00e2280438a22542d7fc0dd90eb95;hp=0000000000000000000000000000000000000000;hb=6e6d7126ea9a845f11637d8e1b8eb2b570ac4dc9;hpb=97dc63eb6a519b8e1f4fbfaa9760dd94539436b0 diff --git a/vasp_tools/get_ks_levels b/vasp_tools/get_ks_levels new file mode 100755 index 0000000..8ef690e --- /dev/null +++ b/vasp_tools/get_ks_levels @@ -0,0 +1,123 @@ +#!/bin/bash + +# get the kohn sham levels (plotted nicely) + +# spin component 1 + +file=$1/OUTCAR + +WUP=1.2 +WDOWN=1.8 +PS=2 +OPT=7 +UPT=4 + +if [ ! -f $file ]; then + echo "no OUTCAR file found ..." + exit +fi + +rm -f $1/ks_levels_* + +center="0" + +cntup=0 +echo $cntup > $1/temp_cu +fup=0 +echo $fup > $1/temp_fu +cntdown=0 +echo $cntdown > $1/temp_cd +fdown=0 +echo $fdown > $1/temp_fd + +# spin component 1 +startline=`grep -n spin\ component\ 1 $file | tail -1 | awk -F: '{ print $1 }'` +echo -en "spin component 1 ($startline)... " +sed -n "$startline,/spin component 2/p" $file | grep ^' '*[0-9] | \ + while read number energy occu; do + if [ "$occu" = "1.00000" ]; then + echo "0.18 $energy 0.1" >> $1/ks_levels_o + cntup=`cat $1/temp_cu` + ((cntup+=1)) + echo $cntup > $1/temp_cu + elif [ "$occu" = "0.00000" ]; then + echo "0.18 $energy 0.1" >> $1/ks_levels_u + else + echo "0.18 $energy 0.1" >> $1/ks_levels_p + fup=`cat $1/temp_fu` + fup=`echo $fup $occu | awk '{ print $1+$2 }'` + echo $fup > $1/temp_fu + fi + done +echo "done" + +# spin component 2 +startline=`grep -n spin\ component\ 2 $file | tail -1 | awk -F: '{ print $1 }'` +echo -en "spin component 2 ($startline) ... " +sed -n "$startline,/---/p" $file | grep ^' '*[0-9] | \ + while read number energy occu; do + if [ "$occu" = "1.00000" ]; then + echo "0.42 $energy 0.1" >> $1/ks_levels_o + cntdown=`cat $1/temp_cd` + ((cntdown+=1)) + echo $cntdown > $1/temp_cd + elif [ "$occu" = "0.00000" ]; then + if [ "$center" = "0" ]; then + echo -en "setting mid value -> $energy ... " + center=$energy + echo "$energy" > $1/temp_e + fi + echo "0.42 $energy 0.1" >> $1/ks_levels_u + else + echo "0.42 $energy 0.1" >> $1/ks_levels_p + fdown=`cat $1/temp_fd` + fdown=`echo $fdown $occu | awk '{ print $1+$2 }'` + echo $fdown > $1/temp_fd + fi + done +echo "done" + +cntup=`cat $1/temp_cu` +fup=`cat $1/temp_fu` +cntdown=`cat $1/temp_cd` +fdown=`cat $1/temp_fd` +center=`cat $1/temp_e` +yl=`echo $center $WDOWN | awk '{ print $1-$2 }'` +yh=`echo $center $WUP | awk '{ print $1+$2 }'` +fup=`awk -v var=$fup 'BEGIN{ printf"%0.f\n", var }'` +fdown=`awk -v var=$fdown 'BEGIN{ printf"%0.f\n", var }'` +((cntup+=fup)) +((cntdown+=fdown)) +((difference=cntup-cntdown)) +echo "generating gnuplot file ($center, $yl, $yh, $ly) ..." +cat > $1/ksl_plot.gpi <