220c7c9d8dbd473f3c7b93738fc594d77da6c222
[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" != "0.00000" ]; then
31                 echo "0.18 $energy 0.1" >> $1/ks_levels_o
32                 else
33                 echo "0.18 $energy 0.1" >> $1/ks_levels_u
34                 fi
35         done
36 echo "done"
37
38 # spin component 2
39 startline=`grep -n spin\ component\ 2 $file | tail -1 | awk -F: '{ print $1 }'`
40 echo -en "spin component 2 ($startline) ... "
41 sed -n "$startline,/---/p" $file | grep ^' '*[0-9] | \
42         while read number energy occu; do
43                 if [ "$occu" != "0.00000" ]; then
44                 echo "0.42 $energy 0.1" >> $1/ks_levels_o
45                 else
46                         if [ "$center" = "0" ]; then
47                                 echo -en "setting mid value -> $energy ... "
48                                 center=$energy
49                                 echo "$energy" > $1/temp_e
50                         fi
51                 echo "0.42 $energy 0.1" >> $1/ks_levels_u
52                 fi
53         done
54 echo "done"
55
56 center=`cat $1/temp_e`
57 yl=`echo $center $WDOWN | awk '{ print $1-$2 }'`
58 yh=`echo $center $WUP | awk '{ print $1+$2 }'`
59 echo "generating gnuplot file ($center, $yl, $yh, $ly) ..."
60 cat > $1/ksl_plot.gpi <<!
61 plot "ks_levels_o" w xerrorbars pt $OPT ps $PS t "", "ks_levels_u" w xerrorbars pt $UPT ps $PS t ""
62 unset bars
63 set ylabel "Kohn-Sham levels [eV]"
64 set xrange [0:0.6]
65 set yrange [$yl:$yh]
66 set xlabel "Spin up / down"
67 set format x ""
68 unset xtics
69 set mytics 5
70 set size ratio 3.0
71 replot
72 set term epslatex standalone color solid size 3.5,7
73 set out "ksl.tex"
74 replot
75 !
76
77 cd $1
78
79 echo "running gnuplot and latex ..."
80 gnuplot ksl_plot.gpi
81 latex ksl
82 dvips ksl
83 gv ksl
84
85 cd ../..
86
87 echo "done"
88 echo "file: $1/ksl.ps"
89 echo