X-Git-Url: https://hackdaworld.org/gitweb/?a=blobdiff_plain;f=vasp_tools%2Fvisualize_contcar;h=61ed14382264ab1c5b77bd9596023752d740e276;hb=HEAD;hp=d272d181ab23c450fc4978e6f2922d4696277c28;hpb=8d4b140464e036fe920497805d47cf53b28eeeb2;p=physik%2Fposic.git diff --git a/vasp_tools/visualize_contcar b/vasp_tools/visualize_contcar index d272d18..61ed143 100755 --- a/vasp_tools/visualize_contcar +++ b/vasp_tools/visualize_contcar @@ -49,6 +49,7 @@ mx1=0; mx2=0; mx3=0; my1=0; my2=0; my3=0; mz1=0; mz2=0; mz3=0; ab=0 +sym=0 # parse argv @@ -81,6 +82,7 @@ while [ "$1" ]; do ((cnt+=1)) done cutoff=$1; shift 1;; + -s) sym=$2; shift 2;; *) echo "options:" echo "########" @@ -107,6 +109,9 @@ while [ "$1" ]; do echo " -l (light source)" echo "bonds:" echo " -ab (auto bonds)" + echo "symmetry:" + echo " -s " + echo " 1: sym by <1 -1 0> at 1/4 <1 1 0>" exit 1;; esac done @@ -221,12 +226,27 @@ EOF export x0 y0 z0 x1 y1 z1 radius + export sym + # atoms ((count=1)) - ((offset=8)) + checktsd=`sed -n 7p $file | awk '{ print $1 }'` + if [ "$checktsd" = "Transformed" ]; then + ((offset=9)) + echo "tsd: yes, offset = $offset" + # but maybe not + checkmore=`sed -n 8p $file | awk '{ print $1 }'` + if [ "$checkmore" = "Direct" ]; then + ((offset=8)) + echo "tsd: yes, but anyways using offset $offset" + fi + else + ((offset=8)) + echo "tsd: no, offset = $offset" + fi while [ "1" ]; do - echo -en "$count " + [ $count -gt $ntot ] && break if [ $count -le $nsi ]; then color="Yellow" @@ -241,7 +261,7 @@ EOF y=`echo $line | awk '{ print $2 }'` z=`echo $line | awk '{ print $3 }'` - echo $x $y $z | awk '\ + echo $x $y $z $count | awk '\ BEGIN { x0=ENVIRON["x0"]; y0=ENVIRON["y0"]; z0=ENVIRON["z0"]; x1=ENVIRON["x1"]; y1=ENVIRON["y1"]; z1=ENVIRON["z1"]; @@ -250,6 +270,7 @@ EOF Z1=ENVIRON["Z1"]; Z2=ENVIRON["Z2"]; Z3=ENVIRON["Z3"]; radius=ENVIRON["radius"]; scale=ENVIRON["scale"]; color=ENVIRON["color"] + sym=ENVIRON["sym"] x=0; y=0; z=0; xt=0; yt=0; zt=0; i=0; j=0; k=0; @@ -261,6 +282,15 @@ EOF nx=$1+i; ny=$2+j; nz=$3+k; + if(sym==1) { + xt=nx-1.0/12.0; + yt=ny-1.0/12.0; + nx=-yt; + ny=-xt; + nx+=1.0/12.0; + ny+=1.0/12.0; + } + xt=nx*X1+ny*Y1+nz*Z1; yt=nx*X2+ny*Y2+nz*Z2; zt=nx*X3+ny*Y3+nz*Z3; @@ -271,6 +301,7 @@ EOF if((xt>=x0)&&(yt>=y0)&&(zt>=z0)&&\ (xt<=x1)&&(yt<=y1)&&(zt<=z1)) { + print "// atom " $4; print "sphere { <"xt","zt","yt">, "radius" "; print "texture { pigment { color " color " } "; print "finish { phong 1 metallic } } }"; @@ -283,6 +314,7 @@ EOF # see, whether there are bonds to draw if [ "$ab" = "0" ]; then + echo -en "$count " ((count+=1)) continue fi @@ -297,9 +329,12 @@ EOF ((cnt+=1)) done if [ "$ab" = "-1" ]; then - dobond=yes + if [ -n "`grep \/\/\ atom\ $count temp.pov`" ]; then + dobond=yes + fi fi if [ "$dobond" = "no" ]; then + echo -en "$count " ((count+=1)) continue; fi @@ -329,6 +364,7 @@ EOF Y1=ENVIRON["Y1"]; Y2=ENVIRON["Y2"]; Y3=ENVIRON["Y3"]; Z1=ENVIRON["Z1"]; Z2=ENVIRON["Z2"]; Z3=ENVIRON["Z3"]; bcr=ENVIRON["bcr"]; scale=ENVIRON["scale"]; + sym=ENVIRON["sym"]; } { for(i=-1;i<=1;i++) { @@ -340,6 +376,16 @@ EOF for(ik=-1;ik<=1;ik++) { nx=$1+i; ny=$2+j; nz=$3+k; + + if(sym==1) { + xt=nx-1.0/12.0; + yt=ny-1.0/12.0; + nx=-yt; + ny=-xt; + nx+=1.0/12.0; + ny+=1.0/12.0; + } + xt=nx*X1+ny*Y1+nz*Z1; yt=nx*X2+ny*Y2+nz*Z2; zt=nx*X3+ny*Y3+nz*Z3; @@ -347,7 +393,20 @@ EOF yt*=scale; zt*=scale; + if((xt>=x0)&&(yt>=y0)&&(zt>=z0)&&\ + (xt<=x1)&&(yt<=y1)&&(zt<=z1)) { + inx=$4+ii; iny=$5+ij; inz=$6+ik; + + if(sym==1) { + ixt=inx-1.0/12.0; + iyt=iny-1.0/12.0; + inx=-iyt; + iny=-ixt; + inx+=1.0/12.0; + iny+=1.0/12.0; + } + ixt=inx*X1+iny*Y1+inz*Z1; iyt=inx*X2+iny*Y2+inz*Z2; izt=inx*X3+iny*Y3+inz*Z3; @@ -357,8 +416,11 @@ EOF dist=sqrt((xt-ixt)^2+(yt-iyt)^2+(zt-izt)^2); - if((xt>=x0)&&(yt>=y0)&&(zt>=z0)&&\ - (xt<=x1)&&(yt<=y1)&&(zt<=z1)) { + if((ixt>=x0)&&(iyt>=y0)&&(izt>=z0)&&\ + (ixt<=x1)&&(iyt<=y1)&&(izt<=z1)) { + + #if((xt>=x0)&&(yt>=y0)&&(zt>=z0)&&\ + # (xt<=x1)&&(yt<=y1)&&(zt<=z1)) { if(dist<=$7) { print "cylinder {"; print "<"xt","zt","yt">,"; @@ -366,6 +428,10 @@ EOF print "pigment { color Blue }"; print "}"; } + #} + + } + } } @@ -381,6 +447,7 @@ EOF done + echo -en "[$count] " ((count+=1)) [ $count -gt $ntot ] && break; @@ -389,6 +456,7 @@ EOF echo # manually drawing the 3x4 boundaries specified by argv ... + if [ -n "$bx0" ]; then draw_cyl $bx0 $by0 $bz0 $bx1 $by0 $bz0 draw_cyl $bx0 $by0 $bz0 $bx0 $by1 $bz0 draw_cyl $bx1 $by1 $bz0 $bx1 $by0 $bz0 @@ -403,6 +471,7 @@ EOF draw_cyl $bx0 $by1 $bz1 $bx0 $by1 $bz0 draw_cyl $bx1 $by0 $bz1 $bx1 $by0 $bz0 draw_cyl $bx1 $by1 $bz1 $bx1 $by1 $bz0 + fi # add camera and light source cat >> temp.pov <<-EOF