Merge branch 'leadoff'
[physik/posic.git] / visualize
index 8f4e83a..0b8fc61 100755 (executable)
--- a/visualize
+++ b/visualize
@@ -23,12 +23,15 @@ pigment { color Blue }
 EOF
 }
 
+# defaults
+
+lc=5.429
 directory="doesnt_exist____for_sure"
 width="640"
 height="480"
-radius="1.0"
-x0=""; y0=""; z0="";
-x1=""; y1=""; z1="";
+radius="0.6"
+x0="-0.6"; y0="-0.6"; z0="-0.6";
+x1="0.6"; y1="0.6"; z1="0.6";
 cx=""; cy=""; cz="";
 lx="0"; ly="-100"; lz="100";
 ortographic=""
@@ -36,6 +39,9 @@ bx0=""; by0=""; bz0="";
 bx1=""; by1=""; bz1="";
 bcr="";
 clx="0"; cly="0"; clz="0";
+extra=0
+
+# parse argv
 
 while [ "$1" ]; do
        case "$1" in
@@ -52,6 +58,8 @@ while [ "$1" ]; do
                -b)             bx0=$2; by0=$3; bz0=$4;
                                bx1=$5; by1=$6; bz1=$7; shift 7;;
                -B)             bcr=$2;                 shift 2;;
+               -C)             lc=$2;                  shift 2;;
+               -e)             extra=1;                shift 1;;
                *)
                                echo "options:"
                                echo "########"
@@ -63,6 +71,8 @@ while [ "$1" ]; do
                                echo "atom size:"
                                echo "  -r <radius>"
                                echo "  -B <bond cylinder radius>"
+                               echo "unit cell:"
+                               echo "  -C <lattice constant>"
                                echo "visualization volume:"
                                echo "  -nll <x> <y> <z> (near lower left)"
                                echo "  -fur <x> <y> <z> (far upper right)"
@@ -77,8 +87,52 @@ while [ "$1" ]; do
        esac
 done
 
+# calculation from lattic eunits to angstroms
+
+[ "$lc" = "sic" ] && lc=4.359
+[ "$lc" = "si" ] && lc=5.429
+[ "$lc" = "c" ] && lc=3.566
+
+offset=`echo 0.125 \* $lc | bc`
+#offset=0.0
+
+x0=`echo $x0 \* $lc + $offset | bc`
+y0=`echo $y0 \* $lc + $offset | bc`
+z0=`echo $z0 \* $lc + $offset | bc`
+x1=`echo $x1 \* $lc + $offset | bc`
+y1=`echo $y1 \* $lc + $offset | bc`
+z1=`echo $z1 \* $lc + $offset | bc`
+
+clx=`echo $clx \* $lc + $offset | bc`
+cly=`echo $cly \* $lc + $offset | bc`
+clz=`echo $clz \* $lc + $offset | bc`
+
+if [ -n "$cx" -a -n "$cy" -a -n "$cz" ]; then
+       cx=`echo $cx \* $lc + $offset | bc`
+       cy=`echo $cy \* $lc + $offset | bc`
+       cz=`echo $cz \* $lc + $offset | bc`
+fi
+
+if [ -n "$bx0" ]; then
+       bx0=`echo $bx0 \* $lc + $offset | bc`
+       by0=`echo $by0 \* $lc + $offset | bc`
+       bz0=`echo $bz0 \* $lc + $offset | bc`
+       bx1=`echo $bx1 \* $lc + $offset | bc`
+       by1=`echo $by1 \* $lc + $offset | bc`
+       bz1=`echo $bz1 \* $lc + $offset | bc`
+fi
+
+# povray command
+
 POVRAY="povray -W${width} -H${height} -d" 
 
+# convert options
+
+COPTS="-font /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf"
+COPTS="$COPTS -depth 8 -fill white -stroke blue -pointsize 24"
+
+# do it ...
+
 if [ -d $directory ]; then
        filesource=$directory/atomic_conf_*.xyz
 fi
@@ -107,18 +161,21 @@ EOF
 
        # atoms
        if [ -n "$x0" ]; then
-               export x0 y0 z0 x1 y1 z1 radius
+               export x0 y0 z0 x1 y1 z1 radius extra
                cat $file | grep -v '#' | awk '\
                BEGIN {
                        x0=ENVIRON["x0"]; y0=ENVIRON["y0"]; z0=ENVIRON["z0"];
                        x1=ENVIRON["x1"]; y1=ENVIRON["y1"]; z1=ENVIRON["z1"];
-                       radius=ENVIRON["radius"];
+                       radius=ENVIRON["radius"]; extra=ENVIRON["extra"];
                }
                {
                        if(($2>=x0)&&($3>=y0)&&($4>=z0)&&\
                           ($2<=x1)&&($3<=y1)&&($4<=z1)) {
                                print "sphere { <"$2","$4","$3">, "radius" ";
-                               print "texture { pigment { color "$5" } ";
+                               if(extra)
+               print "texture { pigment { color rgb<"$6/4.4",0,"1-$6/4.4"> } ";
+                               else
+               print "texture { pigment { color "$5" } ";
                                print "finish { phong 1 metallic } } }";
                        }
                }' >> temp.pov
@@ -142,29 +199,30 @@ EOF
        # boundaries
        if [ -z "$bx0" ]; then
 
-       if [ -z "$x0" ]; then
+       #if [ -z "$x0" ]; then
 
        cat $file | grep '# \[D\]' | while read foo bar x1 y1 z1 x2 y2 z2 ; do
-               draw_cyl $x1 $z1 $y1 $x2 $z2 $y2 0.05
+               draw_cyl $x1 $y1 $z1 $x2 $y2 $z2 0.05
        done
 
-       else
+       #else
+
                # manually drawing the 3x4 boundaries ...
-               draw_cyl $x0 $y0 $z0 $x1 $y0 $z0
-               draw_cyl $x0 $y0 $z0 $x0 $y1 $z0
-               draw_cyl $x1 $y1 $z0 $x1 $y0 $z0
-               draw_cyl $x0 $y1 $z0 $x1 $y1 $z0
-
-               draw_cyl $x0 $y0 $z1 $x1 $y0 $z1
-               draw_cyl $x0 $y0 $z1 $x0 $y1 $z1
-               draw_cyl $x1 $y1 $z1 $x1 $y0 $z1
-               draw_cyl $x0 $y1 $z1 $x1 $y1 $z1
-
-               draw_cyl $x0 $y0 $z1 $x0 $y0 $z0
-               draw_cyl $x0 $y1 $z1 $x0 $y1 $z0
-               draw_cyl $x1 $y0 $z1 $x1 $y0 $z0
-               draw_cyl $x1 $y1 $z1 $x1 $y1 $z0
-       fi
+#              draw_cyl $x0 $y0 $z0 $x1 $y0 $z0
+#              draw_cyl $x0 $y0 $z0 $x0 $y1 $z0
+#              draw_cyl $x1 $y1 $z0 $x1 $y0 $z0
+#              draw_cyl $x0 $y1 $z0 $x1 $y1 $z0
+
+#              draw_cyl $x0 $y0 $z1 $x1 $y0 $z1
+#              draw_cyl $x0 $y0 $z1 $x0 $y1 $z1
+#              draw_cyl $x1 $y1 $z1 $x1 $y0 $z1
+#              draw_cyl $x0 $y1 $z1 $x1 $y1 $z1
+
+#              draw_cyl $x0 $y0 $z1 $x0 $y0 $z0
+#              draw_cyl $x0 $y1 $z1 $x0 $y1 $z0
+#              draw_cyl $x1 $y0 $z1 $x1 $y0 $z0
+#              draw_cyl $x1 $y1 $z1 $x1 $y1 $z0
+#      fi
 
        else
 
@@ -235,6 +293,8 @@ EOF
 
        # mv png
        $POVRAY temp.pov > /dev/null 2>&1
+       time=`basename $file | awk -F. '{ print $1 }' | awk -F_ '{ print $3 }'`
+       convert $COPTS -draw "text 5,20 't = $time fs'" temp.png temp.png
        mv temp.png `echo $file | sed 's/\.xyz/\.png/'`
 
 done