tool to create POSCAR files for 2nd db configurations
[physik/posic.git] / vasp_tools / create_dbc
1 #!/bin/bash
2
3 # create POSCAR files for db combinations
4
5 deltaC=0.1969
6 deltaSi=0.1211
7
8 clen=3
9
10 file=$1/CONTCAR
11 if [ ! -f $file ]; then
12         echo "no CONTCAR file in $1 ..."
13         exit
14 fi
15
16 lnumber=$2
17 if [ -z $lnumber ]; then
18         echo "no line number specified ..."
19         exit
20 fi
21
22 gline="`sed -n 6p $file`"
23 sic=`echo $gline | awk '{ print $1 }'`
24 cc=`echo $gline | awk '{ print $2 }'`
25 ((tot=sic+cc))
26 ((addline=tot+8))
27
28 ltm=`sed -n ${lnumber}p $file`
29
30 echo "line to modify:"
31 echo $ltm
32
33 x=`echo $ltm | awk '{ print $1 }'`
34 y=`echo $ltm | awk '{ print $2 }'`
35 z=`echo $ltm | awk '{ print $3 }'`
36 s1=`echo $ltm | awk '{ print $4 }'`
37 s2=`echo $ltm | awk '{ print $5 }'`
38 s3=`echo $ltm | awk '{ print $6 }'`
39
40 echo "00-1:"
41 nz=`echo $z $deltaSi $clen | awk '{
42         res=$1+($2/$3)
43         if(res>1.0) print res-1.0
44         else if(res<0.0) print res+1.0
45         else print res
46 }'`
47 sed "s%$ltm%$x $y $nz $s1 $s2 $s3%" $file > POSCAR.00-1
48 nz=`echo $z $deltaC $clen | awk '{
49         res=$1-($2/$3)
50         if(res>1.0) print res-1.0
51         else if(res<0.0) print res+1.0
52         else print res
53 }'`
54 sed -i "$addline a\
55 $x $y $nz T T T" POSCAR.00-1
56
57 echo "001:"
58 nz=`echo $z $deltaSi $clen | awk '{
59         res=$1-($2/$3)
60         if(res>1.0) print res-1.0
61         else if(res<0.0) print res+1.0
62         else print res
63 }'`
64 sed "s%$ltm%$x $y $nz $s1 $s2 $s3%" $file > POSCAR.001
65 nz=`echo $z $deltaC $clen | awk '{
66         res=$1+($2/$3)
67         if(res>1.0) print res-1.0
68         else if(res<0.0) print res+1.0
69         else print res
70 }'`
71 sed -i "$addline a\
72 $x $y $nz T T T" POSCAR.001
73
74 echo "0-10:"
75 ny=`echo $y $deltaSi $clen | awk '{
76         res=$1+($2/$3)
77         if(res>1.0) print res-1.0
78         else if(res<0.0) print res+1.0
79         else print res
80 }'`
81 sed "s%$ltm%$x $ny $z $s1 $s2 $s3%" $file > POSCAR.0-10
82 ny=`echo $y $deltaC $clen | awk '{
83         res=$1-($2/$3)
84         if(res>1.0) print res-1.0
85         else if(res<0.0) print res+1.0
86         else print res
87 }'`
88 sed -i "$addline a\
89 $x $ny $z T T T" POSCAR.0-10
90
91 echo "010:"
92 ny=`echo $y $deltaSi $clen | awk '{
93         res=$1-($2/$3)
94         if(res>1.0) print res-1.0
95         else if(res<0.0) print res+1.0
96         else print res
97 }'`
98 sed "s%$ltm%$x $ny $z $s1 $s2 $s3%" $file > POSCAR.010
99 ny=`echo $y $deltaC $clen | awk '{
100         res=$1+($2/$3)
101         if(res>1.0) print res-1.0
102         else if(res<0.0) print res+1.0
103         else print res
104 }'`
105 sed -i "$addline a\
106 $x $ny $z T T T" POSCAR.010
107
108 echo "-100:"
109 nx=`echo $x $deltaSi $clen | awk '{
110         res=$1+($2/$3)
111         if(res>1.0) print res-1.0
112         else if(res<0.0) print res+1.0
113         else print res
114 }'`
115 sed "s%$ltm%$nx $y $z $s1 $s2 $s3%" $file > POSCAR.-100
116 nx=`echo $x $deltaC $clen | awk '{
117         res=$1-($2/$3)
118         if(res>1.0) print res-1.0
119         else if(res<0.0) print res+1.0
120         else print res
121 }'`
122 sed -i "$addline a\
123 $nx $y $z T T T" POSCAR.-100
124
125 echo "100:"
126 nx=`echo $x $deltaSi $clen | awk '{
127         res=$1-($2/$3)
128         if(res>1.0) print res-1.0
129         else if(res<0.0) print res+1.0
130         else print res
131 }'`
132 sed "s%$ltm%$nx $y $z $s1 $s2 $s3%" $file > POSCAR.100
133 nx=`echo $x $deltaC $clen | awk '{
134         res=$1+($2/$3)
135         if(res>1.0) print res-1.0
136         else if(res<0.0) print res+1.0
137         else print res
138 }'`
139 sed -i "$addline a\
140 $nx $y $z T T T" POSCAR.100
141