#!/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 <