added avg disp calc tool (dirty)
[physik/posic.git] / vasp_tools / avg_disp
1 #!/bin/bash
2
3 file=$1
4 init=$2
5
6 sicnt=`sed -n 6p $file | awk '{ print $1 }'`
7 ccnt=`sed -n 6p $file | awk '{ print $2 }'`
8 ((cnt=sicnt+ccnt))
9
10 ((offset=8))
11
12 ((count=1))
13
14 x=0
15 y=0
16 z=0
17
18 while [ $count -le $cnt ]; do
19
20         ((ln=count+offset))
21
22         temp="`sed -n ${ln}p $file`"
23         xa=`echo $temp | awk '{ print $1 }'`
24         ya=`echo $temp | awk '{ print $2 }'`
25         za=`echo $temp | awk '{ print $3 }'`
26
27         temp="`sed -n ${ln}p $init`"
28         xi=`echo $temp | awk '{ print $1 }'`
29         yi=`echo $temp | awk '{ print $2 }'`
30         zi=`echo $temp | awk '{ print $3 }'`
31
32         results=`echo $xa $ya $za $xi $yi $zi | awk '{
33                 xa=$1
34                 if($1<0.0)
35                         xa=$1+1.0
36                 if($1>1.0)
37                         xa=$1-1.0
38                 ya=$2
39                 if($2<0.0)
40                         ya=$2+1.0
41                 if($2>1.0)
42                         ya=$2-1.0
43                 za=$3
44                 if($3<0.0)
45                         za=$3+1.0
46                 if($3>1.0)
47                         za=$3-1.0
48
49                 xi=$4
50                 if($4<0.0)
51                         xi=$4+1.0
52                 if($4>1.0)
53                         xi=$4-1.0
54                 yi=$5
55                 if($5<0.0)
56                         yi=$5+1.0
57                 if($5>1.0)
58                         yi=$5-1.0
59                 zi=$6
60                 if($6<0.0)
61                         zi=$6+1.0
62                 if($6>1.0)
63                         zi=$6-1.0
64
65                 dx=xa-xi
66                 dy=ya-yi
67                 dz=za-zi
68
69                 if(dx>0.5)
70                         dx-=1
71                 else if(dx<-0.5)
72                         dx+=1
73                 if(dy>0.5)
74                         dy-=1
75                 else if(dy<-0.5)
76                         dy+=1
77                 if(dz>0.5)
78                         dz-=1
79                 else if(dz<-0.5)
80                         dz+=1
81
82                 print dx " " dy " " dz
83         }'`
84
85         dx=`echo $results | awk '{ print $1 }'`
86         dy=`echo $results | awk '{ print $2 }'`
87         dz=`echo $results | awk '{ print $3 }'`
88
89         x=`echo $x $dx | awk '{ print $1+$2 }'`
90         y=`echo $y $dy | awk '{ print $1+$2 }'`
91         z=`echo $z $dz | awk '{ print $1+$2 }'`
92
93         ((count+=1))
94
95 done
96
97 ((count-=1))
98 echo $x $y $z $count | awk '{ print $1/($4*3) " " $2/($4*3) " " $3/($4*3) }'
99