b39705366239ae3a3284a029a7b093fceea6314f
[physik/posic.git] / vasp_tools / dist_calc
1 #!/bin/bash
2
3 file=$1
4 atom=$2
5 btom=$3
6
7 scale=`sed -n 2p $1`
8
9 X1=`sed -n 3p $file | awk '{ print $1 }'`
10 X2=`sed -n 3p $file | awk '{ print $2 }'`
11 X3=`sed -n 3p $file | awk '{ print $3 }'`
12
13 Y1=`sed -n 4p $file | awk '{ print $1 }'`
14 Y2=`sed -n 4p $file | awk '{ print $2 }'`
15 Y3=`sed -n 4p $file | awk '{ print $3 }'`
16
17 Z1=`sed -n 5p $file | awk '{ print $1 }'`
18 Z2=`sed -n 5p $file | awk '{ print $2 }'`
19 Z3=`sed -n 5p $file | awk '{ print $3 }'`
20
21 export X1 X2 X3
22 export Y1 Y2 Y3
23 export Z1 Z2 Z3
24
25 ((offset=8))
26
27 echo "scale: $scale"
28 echo "X: $X1 $X2 $X3"
29 echo "Y: $Y1 $Y2 $Y3"
30 echo "Z: $Z1 $Z2 $Z3"
31 echo
32
33 ((line1=atom+offset))
34 ((line2=btom+offset))
35
36 temp="`sed -n ${line1}p $1`"
37 xa=`echo $temp | awk '{ print $1 }'`
38 ya=`echo $temp | awk '{ print $2 }'`
39 za=`echo $temp | awk '{ print $3 }'`
40
41 echo "atom 1:"
42 echo $temp
43
44 temp="`sed -n ${line2}p $1`"
45 xb=`echo $temp | awk '{ print $1 }'`
46 yb=`echo $temp | awk '{ print $2 }'`
47 zb=`echo $temp | awk '{ print $3 }'`
48
49 echo "atom 2:"
50 echo $temp
51
52 echo -en "distance: "
53 echo "$xa $ya $za $xb $yb $zb $scale" | \
54         awk ' \
55         BEGIN {
56                 X1=ENVIRON["X1"]; X2=ENVIRON["X2"]; X3=ENVIRON["X3"]
57                 Y1=ENVIRON["Y1"]; Y2=ENVIRON["Y2"]; Y3=ENVIRON["Y3"]
58                 Z1=ENVIRON["Z1"]; Z2=ENVIRON["Z2"]; Z3=ENVIRON["Z3"]
59         }       
60         {
61                 X=sqrt(X1^2+X2^2+X3^2)
62                 Y=sqrt(Y1^2+Y2^2+Y3^2)
63                 Z=sqrt(Z1^2+Z2^2+Z3^2)
64                 dx=$1-$4
65                 dy=$2-$5
66                 dz=$3-$6
67                 if(dx>1/2)
68                         dx-=1
69                 if(dx<-1/2)
70                         dx+=1
71                 if(dy>1/2)
72                         dy-=1
73                 if(dy<-1/2)
74                         dy+=1
75                 if(dz>1/2)
76                         dz-=1
77                 if(dz<-1/2)
78                         dz+=1
79                 dxt=dx*X1+dy*Y1+dz*Z1
80                 dyt=dx*X2+dy*Y2+dz*Z2
81                 dzt=dx*X3+dy*Y3+dz*Z3
82                 dist=sqrt(dxt^2+dyt^2+dzt^2)
83                 dist*=$7
84                 print dist
85         }'
86
87 echo
88