added display of partialy occupied levels in a different color
[physik/posic.git] / vasp_tools / get_ks_levels
1 #!/bin/bash
2
3 # get the kohn sham levels (plotted nicely)
4
5 # spin component 1
6
7 file=$1/OUTCAR
8
9 WUP=1.2
10 WDOWN=1.8
11 PS=2
12 OPT=7
13 UPT=4
14
15 if [ ! -f $file ]; then
16         echo "no OUTCAR file found ..."
17         exit
18 fi
19
20 rm -f $1/ks_levels_*
21
22 center="0"
23
24
25 # spin component 1
26 startline=`grep -n spin\ component\ 1 $file | tail -1 | awk -F: '{ print $1 }'`
27 echo -en "spin component 1 ($startline)... "
28 sed -n "$startline,/spin component 2/p" $file | grep ^' '*[0-9] | \
29         while read number energy occu; do
30                 if [ "$occu" = "1.00000" ]; then
31                 echo "0.18 $energy 0.1" >> $1/ks_levels_o
32                 elif [ "$occu" = "0.00000" ]; then
33                 echo "0.18 $energy 0.1" >> $1/ks_levels_u
34                 else
35                 echo "0.18 $energy 0.1" >> $1/ks_levels_p
36                 fi
37         done
38 echo "done"
39
40 # spin component 2
41 startline=`grep -n spin\ component\ 2 $file | tail -1 | awk -F: '{ print $1 }'`
42 echo -en "spin component 2 ($startline) ... "
43 sed -n "$startline,/---/p" $file | grep ^' '*[0-9] | \
44         while read number energy occu; do
45                 if [ "$occu" = "1.00000" ]; then
46                 echo "0.42 $energy 0.1" >> $1/ks_levels_o
47                 elif [ "$occu" = "0.00000" ]; then
48                         if [ "$center" = "0" ]; then
49                                 echo -en "setting mid value -> $energy ... "
50                                 center=$energy
51                                 echo "$energy" > $1/temp_e
52                         fi
53                 echo "0.42 $energy 0.1" >> $1/ks_levels_u
54                 else
55                 echo "0.42 $energy 0.1" >> $1/ks_levels_p
56                 fi
57         done
58 echo "done"
59
60 center=`cat $1/temp_e`
61 yl=`echo $center $WDOWN | awk '{ print $1-$2 }'`
62 yh=`echo $center $WUP | awk '{ print $1+$2 }'`
63 echo "generating gnuplot file ($center, $yl, $yh, $ly) ..."
64 cat > $1/ksl_plot.gpi <<!
65 plot "ks_levels_o" w xerrorbars pt $OPT ps $PS t "", "ks_levels_u" w xerrorbars pt $UPT ps $PS t "", "ks_levels_p" w xerrorbars pt $OPT ps $PS t ""
66 unset bars
67 set ylabel "Kohn-Sham levels [eV]"
68 set xrange [0:0.6]
69 set yrange [$yl:$yh]
70 set xlabel "Spin up / down"
71 set format x ""
72 unset xtics
73 set mytics 5
74 set size ratio 3.0
75 replot
76 set term epslatex standalone color solid size 3.5,7
77 set out "ksl.tex"
78 replot
79 !
80
81 cd $1
82
83 echo "running gnuplot and latex ..."
84 gnuplot ksl_plot.gpi
85 latex ksl
86 dvips ksl
87 gv ksl
88
89 cd ../..
90
91 echo "done"
92 echo "file: $1/ksl.ps"
93 echo