added trafo file (not working correctly by now) + mods to posca2moldyn script
[physik/posic.git] / vasp_tools / trafoXposcar
1 #!/bin/bash
2
3 echo "parsing POSCAR file ..."
4
5 trg=POSCAR.transformed
6
7 theta=$1
8
9 sicnt=`sed -n 6p POSCAR | awk '{ print $1 }'`
10 ccnt=`sed -n 6p POSCAR | awk '{ print $2 }'`
11
12 lc=`sed -n 2p POSCAR | awk '{ print $1 }'`
13
14 x1=`sed -n 3p POSCAR | awk '{ print $1 }'`
15 x2=`sed -n 3p POSCAR | awk '{ print $2 }'`
16 x3=`sed -n 3p POSCAR | awk '{ print $3 }'`
17
18 y1=`sed -n 4p POSCAR | awk '{ print $1 }'`
19 y2=`sed -n 4p POSCAR | awk '{ print $2 }'`
20 y3=`sed -n 4p POSCAR | awk '{ print $3 }'`
21
22 z1=`sed -n 5p POSCAR | awk '{ print $1 }'`
23 z2=`sed -n 5p POSCAR | awk '{ print $2 }'`
24 z3=`sed -n 5p POSCAR | awk '{ print $3 }'`
25
26 ((total=sicnt+ccnt))
27
28 echo "  Si: $sicnt, C: $ccnt, total: $total"
29 echo "  Lattice constant: $lc A"
30 echo "  Basis:"
31 echo "      $x1      $y1      $z1"
32 echo "  x = $x2  y = $y2  z = $z2"
33 echo "      $x3      $y3      $z3"
34 echo
35 echo "  -----"
36 echo "  Trafo: x axis, $theta degree"
37 echo "  -----"
38
39 costheta=`echo $theta | awk '{ print cos($1*3.1415927/180.0) }'`
40 sintheta=`echo $theta | awk '{ print sin($1*3.1415927/180.0) }'`
41
42 X1=$x1
43 X2=`echo $x2 $x3 $costheta $sintheta | awk '{ print $3*$1-$4*$2 }'`
44 X3=`echo $x2 $x3 $costheta $sintheta | awk '{ print $4*$1+$3*$2 }'`
45
46 Y1=$y1
47 Y2=`echo $y2 $y3 $costheta $sintheta | awk '{ print $3*$1-$4*$2 }'`
48 Y3=`echo $y2 $y3 $costheta $sintheta | awk '{ print $4*$1+$3*$2 }'`
49
50 Z1=$z1
51 Z2=`echo $z2 $z3 $costheta $sintheta | awk '{ print $3*$1-$4*$2 }'`
52 Z3=`echo $z2 $z3 $costheta $sintheta | awk '{ print $4*$1+$3*$2 }'`
53
54 echo
55 echo "  Transformed basis:"
56 echo "      $X1      $Y1      $Z1"
57 echo "  x = $X2  y = $Y2  z = $Z2"
58 echo "      $X3      $Y3      $Z3"
59 echo
60
61 cnt=0
62 tcnt=0
63
64 cx=1.0
65 cy=1.0
66 cz=0.8
67
68 # header
69 sed -n 1p POSCAR > $trg
70 echo " $lc" >> $trg
71 echo " $X1 $X2 $X3" >> $trg
72 echo " $Y1 $Y2 $Y3" >> $trg
73 echo " $Z1 $Z2 $Z3" >> $trg
74 echo " $sicnt $ccnt" >> $trg
75 echo "selective dynamics" >> $trg
76 echo "direct" >> $trg
77
78 tail -${total} POSCAR | \
79         while read x y z fx fy fz; do
80                 Y=`echo $y $z $costheta $sintheta | \
81                         awk '{ print $3*$1+$4*$2 }'`
82                 Z=`echo $y $z $costheta $sintheta | \
83                         awk '{ print $3*$2-$4*$1 }'`
84                 echo " $x $Y $Z $fx $fy $fz" >> $trg
85         done
86
87 echo "done"
88