Merge branch 'leadoff'
[physik/posic.git] / vasp_tools / outcar2moldyn
diff --git a/vasp_tools/outcar2moldyn b/vasp_tools/outcar2moldyn
new file mode 100755 (executable)
index 0000000..6950453
--- /dev/null
@@ -0,0 +1,64 @@
+#!/bin/bash
+
+for i in OUTCAR*; do
+       app=`echo $i | awk -F. '{ print $2 }'`
+       [ ! -z $app ] && app=".$app"
+
+if [ "$1" = "renew" ]; then
+       rm -rf video$app
+fi
+
+if [ -d video$app ]; then
+       echo "skipping $app ... (use $0 renew to force rebuild)"
+       continue
+fi
+
+mkdir -p video$app
+
+sicnt=`grep 'ions per' $i | awk '{ print $5 }'`
+ccnt=`grep 'ions per' $i | awk '{ print $6 }'`
+
+((total=sicnt+ccnt))
+
+echo "parsing file $PWD/$i ..."
+echo "  Si: $sicnt, C: $ccnt, total: $total"
+
+cnt=0
+tcnt=0
+
+cx=1.0
+cy=1.0
+cz=0.8
+
+sed -n -e '/POSITION/,/total/p' $i | \
+       grep -v POS | grep -v total | grep -v -- ^\ - | \
+       while read x y z fx fy fz; do
+
+       time=`printf "%05d" $tcnt`
+       #echo -en "$tcnt/$cnt "
+       [ "$cnt" = "0" ] && \
+               echo "# P $total $time <$cx,$cy,$cz>" > \
+                       video$app/atomic_conf_$time.xyz
+
+       type="Si"
+       color="Yellow"
+       force=`echo "sqrt($fx*$fx+$fy*$fy+$fz*$fz)" | bc`
+       if [ $cnt -ge $sicnt ]; then
+               type="C"
+               color="Gray"
+       fi
+       echo "$type $x $y $z $color $force" >> \
+               video$app/atomic_conf_$time.xyz
+       
+       ((cnt+=1))
+       if [ $cnt -eq $total ]; then
+               cnt=0
+               ((tcnt+=1))
+               echo -en "$tcnt "
+       fi
+done
+
+echo
+
+done
+